活动:活动开关添加成长基金的数据
This commit is contained in:
@@ -5,7 +5,8 @@ import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/fir
|
|||||||
import { RoleModel } from '../../../db/Role';
|
import { RoleModel } from '../../../db/Role';
|
||||||
import { addReward, stringToRewardParam, useGiftPackage } from '../../../services/giftPackageService';
|
import { addReward, stringToRewardParam, useGiftPackage } from '../../../services/giftPackageService';
|
||||||
import { ActivityFirstGiftModel } from '../../../db/ActivityFirstGift';
|
import { ActivityFirstGiftModel } from '../../../db/ActivityFirstGift';
|
||||||
import { signInActivity } from '../../../services/signInService';
|
import { signInActivity, signInVIPActivity } from '../../../services/signInService';
|
||||||
|
import { growthFundActivity } from '../../../services/growthFundService';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
return new ActivityHandler(app);
|
return new ActivityHandler(app);
|
||||||
@@ -51,6 +52,83 @@ export class ActivityHandler {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//高级签到
|
||||||
|
{
|
||||||
|
let data = await signInVIPActivity(serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.SIGN_IN,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//成长基金
|
||||||
|
{
|
||||||
|
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN, serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//高阶成长基金
|
||||||
|
{
|
||||||
|
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP, serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//镇念塔成长基金
|
||||||
|
{
|
||||||
|
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER, serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//高阶镇念塔成长基金
|
||||||
|
{
|
||||||
|
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP, serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//精英成长基金
|
||||||
|
{
|
||||||
|
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//高阶精英成长基金
|
||||||
|
{
|
||||||
|
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP, serverId, roleId);
|
||||||
|
if (data) {
|
||||||
|
playerActivityArray.push({
|
||||||
|
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP,
|
||||||
|
activityId: data.activityId,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { playerActivityArray });
|
return resResult(STATUS.SUCCESS, { playerActivityArray });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import { getPlayerGrowthFundData, growthFundActivity } from '../../../services/g
|
|||||||
import { GrowthFundItem } from '../../../domain/activityField/growthFundField';
|
import { GrowthFundItem } from '../../../domain/activityField/growthFundField';
|
||||||
import { addItems, createHeroes } from '../../../services/rewardService';
|
import { addItems, createHeroes } from '../../../services/rewardService';
|
||||||
import { ActivityGrowthFundModel } from '../../../db/ActivityGrowthFund';
|
import { ActivityGrowthFundModel } from '../../../db/ActivityGrowthFund';
|
||||||
|
import { addReward, stringToRewardParam } from '../../../services/giftPackageService';
|
||||||
|
import { RewardParam } from '../../../domain/activityField/rewardField';
|
||||||
|
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -19,16 +21,16 @@ export class GrowthFundHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 获取成长基金活动数据
|
* @description 获取成长基金活动数据
|
||||||
* @param {{ type: number}} msg
|
* @param {{ activityId: number}} msg
|
||||||
* @param {BackendSession} session
|
* @param {BackendSession} session
|
||||||
* @memberof GrowthFundHandler
|
* @memberof GrowthFundHandler
|
||||||
*/
|
*/
|
||||||
async getGrowthFundActivity(msg: { type: number }, session: BackendSession) {
|
async getGrowthFundActivity(msg: { activityId: number }, session: BackendSession) {
|
||||||
const { type } = msg;
|
const { activityId } = msg;
|
||||||
const roleId = session.get('roleId');
|
const roleId = session.get('roleId');
|
||||||
const serverId = session.get('serverId');
|
const serverId = session.get('serverId');
|
||||||
|
|
||||||
let playerData = await growthFundActivity(type, serverId, roleId);
|
let playerData = await getPlayerGrowthFundData(activityId, serverId, roleId);
|
||||||
|
|
||||||
if (!playerData) return resResult(STATUS.ACTIVITY_GROWTH_FUND_END);
|
if (!playerData) return resResult(STATUS.ACTIVITY_GROWTH_FUND_END);
|
||||||
|
|
||||||
@@ -67,18 +69,17 @@ export class GrowthFundHandler {
|
|||||||
return resResult(STATUS.ACTIVITY_REWARDED);
|
return resResult(STATUS.ACTIVITY_REWARDED);
|
||||||
}
|
}
|
||||||
|
|
||||||
await ActivityGrowthFundModel.addRecord(activityId, roleId, pageIndex, cellIndex);
|
growthFundItemData.isReceive = true;
|
||||||
let reward = growthFundItemData.goodReward();
|
|
||||||
let goods = await addItems(roleId, roleName, sid, reward);
|
|
||||||
let heroReward = growthFundItemData.heroReward();
|
|
||||||
let addHeros = [];
|
|
||||||
if (heroReward.length > 0) {
|
|
||||||
let heroResult = await createHeroes(roleId, roleName, sid, serverId, funcs, heroReward);
|
|
||||||
goods = goods.concat(heroResult.goods)
|
|
||||||
addHeros = addHeros.concat(heroResult.heroes);
|
|
||||||
}
|
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { goods, addHeros });
|
await ActivityGrowthFundModel.addRecord(activityId, roleId, pageIndex, cellIndex);
|
||||||
|
|
||||||
|
let rewardParamArr: Array<RewardParam> = stringToRewardParam(growthFundItemData.reward);
|
||||||
|
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
|
||||||
|
|
||||||
|
return resResult(STATUS.SUCCESS, Object.assign(result, {
|
||||||
|
param: { activityId, pageIndex, cellIndex },
|
||||||
|
item: growthFundItemData
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export async function firstGiftActivity(serverId: number, roleId: string) {
|
|||||||
}
|
}
|
||||||
let activityData = activityArray[0];
|
let activityData = activityArray[0];
|
||||||
let playerRecord: ActivityFirstGiftModelType = await ActivityFirstGiftModel.findData(activityData.activityId, roleId);
|
let playerRecord: ActivityFirstGiftModelType = await ActivityFirstGiftModel.findData(activityData.activityId, roleId);
|
||||||
if (playerRecord.isOver) {
|
if (!playerRecord || playerRecord.isOver) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,16 +22,16 @@ import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFu
|
|||||||
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
|
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
|
||||||
*/
|
*/
|
||||||
export async function growthFundActivity(type: number, serverId: number, roleId: string) {
|
export async function growthFundActivity(type: number, serverId: number, roleId: string) {
|
||||||
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, type, 1)
|
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, type, new Date())
|
||||||
|
if (activityArray.length == 0) {
|
||||||
for (let i = 0; i < activityArray.length; i++) {
|
return null;
|
||||||
let activityData = activityArray[i];
|
|
||||||
let playerData = await getPlayerGrowthFundData(activityData.activityId, serverId, roleId);
|
|
||||||
if (!playerData.isComplete()) {
|
|
||||||
return playerData;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null
|
let activityData = activityArray[0]
|
||||||
|
let playerData = await getPlayerGrowthFundData(activityData.activityId, serverId, roleId);
|
||||||
|
if (playerData.isComplete()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return playerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -20,14 +20,40 @@ export async function signInActivity(serverId: number, roleId: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SIGN_IN, new Date());
|
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SIGN_IN, new Date());
|
||||||
if (activityArray.length > 0) {
|
if (activityArray.length == 0) {
|
||||||
let activityData = activityArray[0];
|
return null;
|
||||||
let playerData = new SignInData(activityData);
|
|
||||||
let playerRecords: ActivitySignInModelType[] = await ActivitySignInModel.findData(activityData.activityId, roleId, playerData.roundIndex);
|
|
||||||
playerData.setPlayerRecords(playerRecords);
|
|
||||||
return playerData;
|
|
||||||
}
|
}
|
||||||
return null
|
let activityData = activityArray[0];
|
||||||
|
let playerData = new SignInData(activityData);
|
||||||
|
let playerRecords: ActivitySignInModelType[] = await ActivitySignInModel.findData(activityData.activityId, roleId, playerData.roundIndex);
|
||||||
|
playerData.setPlayerRecords(playerRecords);
|
||||||
|
return playerData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取活动数据
|
||||||
|
*
|
||||||
|
* @param {number} type 普通、高级 ACTIVITY_TYPE
|
||||||
|
* @param {number} serverId 区Id
|
||||||
|
* @param {number} activityId 活动Id
|
||||||
|
* @param {string} roleId 角色Id
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export async function signInVIPActivity(serverId: number, roleId: string) {
|
||||||
|
let todayIndex = moment(new Date()).date();
|
||||||
|
if (todayIndex < SIGNIN_OPEN || todayIndex > SIGNIN_CLOSE) {//未开启
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SIGN_IN_VIP, new Date());
|
||||||
|
if (activityArray.length == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
let activityData = activityArray[0];
|
||||||
|
let playerData = new SignInData(activityData);
|
||||||
|
let playerRecords: ActivitySignInModelType[] = await ActivitySignInModel.findData(activityData.activityId, roleId, playerData.roundIndex);
|
||||||
|
playerData.setPlayerRecords(playerRecords);
|
||||||
|
return playerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default class Activity extends BaseModel {
|
|||||||
|
|
||||||
//根据活动类型查询开启的活动数据
|
//根据活动类型查询开启的活动数据
|
||||||
public static async findOpenActivityByType(serverId: number, type: number, date: Date, lean = true) {
|
public static async findOpenActivityByType(serverId: number, type: number, date: Date, lean = true) {
|
||||||
let result: ActivityModelType[] = await ActivityModel.find({ serverId, type, beginTime: { $lte: date }, endTime: { $gte: date } }).lean(lean);
|
let result: ActivityModelType[] = await ActivityModel.find({ serverId, type, beginTime: { $lte: date }, endTime: { $gte: date } }).sort({ activityId: -1 }).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ export class GrowthFundItem {
|
|||||||
this.taskType = data.taskType;
|
this.taskType = data.taskType;
|
||||||
this.taskParam = data.taskParam;
|
this.taskParam = data.taskParam;
|
||||||
this.reward = data.reward;
|
this.reward = data.reward;
|
||||||
|
this.isComplete = false;
|
||||||
|
this.isReceive = false;
|
||||||
|
|
||||||
this.taskParamArray = splitString(data.taskParam, '&')
|
this.taskParamArray = splitString(data.taskParam, '&')
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user