活动:活动开关添加成长基金的数据
This commit is contained in:
@@ -5,7 +5,8 @@ import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/fir
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { addReward, stringToRewardParam, useGiftPackage } from '../../../services/giftPackageService';
|
||||
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) {
|
||||
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 });
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import { getPlayerGrowthFundData, growthFundActivity } from '../../../services/g
|
||||
import { GrowthFundItem } from '../../../domain/activityField/growthFundField';
|
||||
import { addItems, createHeroes } from '../../../services/rewardService';
|
||||
import { ActivityGrowthFundModel } from '../../../db/ActivityGrowthFund';
|
||||
import { addReward, stringToRewardParam } from '../../../services/giftPackageService';
|
||||
import { RewardParam } from '../../../domain/activityField/rewardField';
|
||||
|
||||
|
||||
export default function (app: Application) {
|
||||
@@ -19,16 +21,16 @@ export class GrowthFundHandler {
|
||||
|
||||
/**
|
||||
* @description 获取成长基金活动数据
|
||||
* @param {{ type: number}} msg
|
||||
* @param {{ activityId: number}} msg
|
||||
* @param {BackendSession} session
|
||||
* @memberof GrowthFundHandler
|
||||
*/
|
||||
async getGrowthFundActivity(msg: { type: number }, session: BackendSession) {
|
||||
const { type } = msg;
|
||||
async getGrowthFundActivity(msg: { activityId: number }, session: BackendSession) {
|
||||
const { activityId } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
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);
|
||||
|
||||
@@ -67,18 +69,17 @@ export class GrowthFundHandler {
|
||||
return resResult(STATUS.ACTIVITY_REWARDED);
|
||||
}
|
||||
|
||||
await ActivityGrowthFundModel.addRecord(activityId, roleId, pageIndex, cellIndex);
|
||||
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);
|
||||
}
|
||||
growthFundItemData.isReceive = true;
|
||||
|
||||
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 playerRecord: ActivityFirstGiftModelType = await ActivityFirstGiftModel.findData(activityData.activityId, roleId);
|
||||
if (playerRecord.isOver) {
|
||||
if (!playerRecord || playerRecord.isOver) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,16 +22,16 @@ import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFu
|
||||
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
|
||||
*/
|
||||
export async function growthFundActivity(type: number, serverId: number, roleId: string) {
|
||||
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, type, 1)
|
||||
|
||||
for (let i = 0; i < activityArray.length; i++) {
|
||||
let activityData = activityArray[i];
|
||||
let playerData = await getPlayerGrowthFundData(activityData.activityId, serverId, roleId);
|
||||
if (!playerData.isComplete()) {
|
||||
return playerData;
|
||||
}
|
||||
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, type, new Date())
|
||||
if (activityArray.length == 0) {
|
||||
return null;
|
||||
}
|
||||
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());
|
||||
if (activityArray.length > 0) {
|
||||
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;
|
||||
if (activityArray.length == 0) {
|
||||
return null;
|
||||
}
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ export class GrowthFundItem {
|
||||
this.taskType = data.taskType;
|
||||
this.taskParam = data.taskParam;
|
||||
this.reward = data.reward;
|
||||
this.isComplete = false;
|
||||
this.isReceive = false;
|
||||
|
||||
this.taskParamArray = splitString(data.taskParam, '&')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user