521 lines
21 KiB
TypeScript
521 lines
21 KiB
TypeScript
import { Application, BackendSession } from 'pinus';
|
||
import { resResult } from '../../../pubUtils/util';
|
||
import { ACTIVITY_TYPE, ACTIVITY_GROUP_TYPE, SERVER_OPEN_TIME, STATUS, TASK_TYPE } from '../../../consts';
|
||
import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService';
|
||
import { newPlayerSignInActivity, signInActivity, signInVIPActivity } from '../../../services/signInService';
|
||
import { growthFundActivity } from '../../../services/growthFundService';
|
||
import { limitPackageActivity, newPlayerLimitPackageActivity } from '../../../services/limitPackageService';
|
||
import { growthActivity } from '../../../services/growthService';
|
||
import { dailyChallengesActivity } from '../../../services/dailyChallengesService';
|
||
import { dailyGiftsActivity } from '../../../services/dailyGiftsService';
|
||
import { yuanbaoActivity } from '../../../services/yuanbaoService';
|
||
import { monthlyTicketActivity } from '../../../services/monthlyTicketService';
|
||
import { rechargeMoneyActivity } from '../../../services/rechargeMoneyService';
|
||
import moment = require('moment');
|
||
import { RoleModel } from '../../../db/Role';
|
||
import { playerThirtyDaysActivityDays, thirtyDaysActivity } from '../../../services/thirtyDaysService';
|
||
import { dailyRMBGiftsActivity } from '../../../services/dailyRMBGiftsService';
|
||
import { popUpShopActivity } from '../../../services/popUpShopService';
|
||
import { vipRechargeMoneyActivity } from '../../../services/vipRechargeMoneyService';
|
||
import { sevenDaysActivity } from '../../../services/sevenDaysService';
|
||
import { checkActivityTask } from '../../../services/taskService';
|
||
import { treasureHuntActivity } from '../../../services/treasureHuntService';
|
||
import { getSelfServiceShopActivityData } from '../../../services/selfServiceShopActivityService';
|
||
import { ActivitySelfServiceGoodsModel } from '../../../db/ActivitySelfServiceGoods';
|
||
import { dailyMealActivity } from '../../../services/dailyMealService';
|
||
import { dailyCoinActivity } from '../../../services/dailyCoinService';
|
||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||
import { ServerlistModel } from '../../../db/Serverlist';
|
||
import { getActivity } from '../../../services/activityService';
|
||
import { ActivityModel } from '../../../db/Activity';
|
||
// import { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges';
|
||
// import { isComplete } from '../../../pubUtils/taskUtil';
|
||
|
||
export default function (app: Application) {
|
||
return new ActivityHandler(app);
|
||
}
|
||
|
||
export class ActivityHandler {
|
||
constructor(private app: Application) {
|
||
}
|
||
|
||
|
||
/**
|
||
* @description 活动是否开启总接口
|
||
* @param {{ }} msg
|
||
* @param {BackendSession} session
|
||
* @memberof ActivityHandler
|
||
*/
|
||
async getAllOpenActivity(msg: { hid: number, lv: number }, session: BackendSession) {
|
||
const { } = msg;
|
||
const roleId = session.get('roleId');
|
||
const serverId = session.get('serverId');
|
||
const sid: string = session.get('sid');
|
||
const funcs: number[] = session.get('funcs');
|
||
|
||
let test = true;
|
||
let playerActivityArray = [];
|
||
// //七天乐活动-成长任务 1 2 3
|
||
// {
|
||
// let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
|
||
// if (new Date() < endTime || test) {//开启中,开服7天后过期
|
||
// let sevenData = [];
|
||
// let growthData = await growthActivity(serverId, roleId);
|
||
// if (growthData) {
|
||
// sevenData.push({
|
||
// type: ACTIVITY_TYPE.TASK_GROWTH,
|
||
// activityId: growthData.activityId,
|
||
// data: growthData,
|
||
// });
|
||
// }
|
||
// let dailyChallengesData = await dailyChallengesActivity(serverId, roleId);
|
||
// if (dailyChallengesData) {
|
||
// sevenData.push({
|
||
// type: ACTIVITY_TYPE.TASK_DAILY_CHALLENGES,
|
||
// activityId: dailyChallengesData.activityId,
|
||
// data: dailyChallengesData,
|
||
// });
|
||
// }
|
||
// let dailyGiftsData = await dailyGiftsActivity(serverId, roleId);
|
||
// if (dailyGiftsData) {
|
||
// sevenData.push({
|
||
// type: ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT,
|
||
// activityId: dailyGiftsData.activityId,
|
||
// data: dailyGiftsData,
|
||
// });
|
||
// }
|
||
// if (sevenData.length > 0) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.SEVEN_DAY,
|
||
// activityId: 0,
|
||
// data: sevenData,
|
||
// });
|
||
// }
|
||
// }
|
||
// }
|
||
//14天乐活动-成长任务 1 2 3
|
||
// {
|
||
// let beginTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
|
||
// let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate();
|
||
// let curDate = new Date()
|
||
// if (curDate > beginTime && curDate < endTime) {//开启中,开服7天后开启,开服第21天结束
|
||
// let sevenData = [];
|
||
// let growthData = await growthActivity(serverId, roleId);
|
||
// if (growthData) {
|
||
// sevenData.push({
|
||
// type: ACTIVITY_TYPE.TASK_GROWTH,
|
||
// activityId: growthData.activityId,
|
||
// data: growthData,
|
||
// });
|
||
// }
|
||
// let dailyChallengesData = await dailyChallengesActivity(serverId, roleId);
|
||
// if (dailyChallengesData) {
|
||
// sevenData.push({
|
||
// type: ACTIVITY_TYPE.TASK_DAILY_CHALLENGES,
|
||
// activityId: dailyChallengesData.activityId,
|
||
// data: dailyChallengesData,
|
||
// });
|
||
// }
|
||
// let dailyGiftsData = await dailyGiftsActivity(serverId, roleId);
|
||
// if (dailyGiftsData) {
|
||
// sevenData.push({
|
||
// type: ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT,
|
||
// activityId: dailyGiftsData.activityId,
|
||
// data: dailyGiftsData,
|
||
// });
|
||
// }
|
||
// if (sevenData.length > 0) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.FOURTEEN_DAY,
|
||
// activityId: 0,
|
||
// data: sevenData,
|
||
// });
|
||
// }
|
||
// }
|
||
// }
|
||
// //签到 4
|
||
// {
|
||
// let data = await signInActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.SIGN_IN,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
// //高级签到 5
|
||
// {
|
||
// let data = await signInVIPActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.SIGN_IN_VIP,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //成长基金 6
|
||
// {
|
||
// 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,
|
||
// });
|
||
// }
|
||
// }
|
||
// //高阶成长基金 7
|
||
// {
|
||
// 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,
|
||
// });
|
||
// }
|
||
// }
|
||
// //镇念塔成长基金 8
|
||
// {
|
||
// 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,
|
||
// });
|
||
// }
|
||
// }
|
||
// //高阶镇念塔成长基金 9
|
||
// {
|
||
// 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,
|
||
// });
|
||
// }
|
||
// }
|
||
// //精英成长基金 10
|
||
// {
|
||
// 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,
|
||
// });
|
||
// }
|
||
// }
|
||
// //高阶精英成长基金 11
|
||
// {
|
||
// 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,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //30天目标活动 12
|
||
// {
|
||
// let data = await thirtyDaysActivity(ACTIVITY_TYPE.THIRTY_DAYS, serverId, roleId);
|
||
// if (data) {
|
||
// let todayIndex = await playerThirtyDaysActivityDays(roleId);
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.THIRTY_DAYS,
|
||
// activityId: data.activityId,
|
||
// data: { playerData: data, todayIndex },
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //自选商店 糜家商队 13
|
||
// {
|
||
// let data = await getSelfServiceShopActivityData(serverId, roleId);
|
||
// if (data) {
|
||
// let playerGoods = await ActivitySelfServiceGoodsModel.findData(data.activityId, roleId, data.roundIndex, true);
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.SELF_SERVICE_SHOP,
|
||
// activityId: data.activityId,
|
||
// data: { playerData: data, playerGoods: playerGoods ? playerGoods : [] },
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
|
||
// //首冲礼包活动 14
|
||
// {
|
||
// let data = await firstGiftActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.FIRST_GIFT,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //新手限定RMB购买礼包 15
|
||
// {
|
||
// let { createTime } = await RoleModel.findByRoleId(roleId);
|
||
// let createDate = moment(createTime * 1000).toDate();
|
||
// let endTime = moment(createDate).startOf('d').add(7, 'd').add(5, 'h').toDate();
|
||
// if (new Date() <= endTime) {
|
||
// let data = await newPlayerLimitPackageActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
// }
|
||
// //每日限购礼包,RMB购买礼包 16
|
||
// {
|
||
// let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
// //每日限购礼包,RMB购买礼包 17
|
||
// {
|
||
// let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //元宝商店 18
|
||
// {
|
||
// let data = await yuanbaoActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.YUAN_BAO_SHOP,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //月卡1 19
|
||
// {
|
||
// let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_1);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.MONTHLY_TICKET_1,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //月卡2 20
|
||
// {
|
||
// let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.MONTHLY_TICKET_2,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //累计充值RMB活动 21
|
||
// {
|
||
// let data = await rechargeMoneyActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.RECHARGE_MONEY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
// //每日特惠RMB购买,一次性购买7天礼包 22
|
||
// {
|
||
// let data = await dailyRMBGiftsActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.DAILY_RMB_GIFTS,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //寻宝骑兵活动 23
|
||
// {
|
||
// let data = await treasureHuntActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.TREASURE_HUNT,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //弹出商店 24
|
||
// {
|
||
// let data = await popUpShopActivity(serverId, roleId);
|
||
// if (data && data.length > 0) {
|
||
// for (let obj of data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.POP_UP_SHOP,
|
||
// activityId: obj.activityId,
|
||
// data: obj,
|
||
// });
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
// //新手签到 25
|
||
// {
|
||
// let data = await newPlayerSignInActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.NEW_PLAYER_SIGN_IN,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //vip累计充值活动 26
|
||
// {
|
||
// let data = await vipRechargeMoneyActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.VIP_RECHARGE_MONEY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //七天乐活动 27
|
||
// {
|
||
// let data = await sevenDaysActivity(serverId, roleId, ACTIVITY_TYPE.SEVEN_DAY);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.SEVEN_DAY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //十四天乐活动 28
|
||
// {
|
||
// let data = await sevenDaysActivity(serverId, roleId, ACTIVITY_TYPE.FOURTEEN_DAY);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.FOURTEEN_DAY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //通用七天乐活动 29
|
||
// {
|
||
// let data = await sevenDaysActivity(serverId, roleId, ACTIVITY_TYPE.COMMON_SEVEN_DAY);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.COMMON_SEVEN_DAY,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //每日领取免费午饭、晚饭活动 30
|
||
// {
|
||
// let data = await dailyMealActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.DAILY_MEAL,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
// //每日兑换铜币活动 31
|
||
// {
|
||
// let data = await dailyCoinActivity(serverId, roleId);
|
||
// if (data) {
|
||
// playerActivityArray.push({
|
||
// type: ACTIVITY_TYPE.DAILY_COIN,
|
||
// activityId: data.activityId,
|
||
// data,
|
||
// });
|
||
// }
|
||
// }
|
||
|
||
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
|
||
let groups = await ActivityGroupModel.findGroupsData(activityGroupId);
|
||
let playerGroupArray = [];
|
||
for (let groupData of groups) {
|
||
let playerGroupActivityArray = [];
|
||
for (let activityId of groupData.activities) {
|
||
let activityData = await ActivityModel.findActivity(activityId);
|
||
if (activityData) {
|
||
let playerActivityData = await getActivity(serverId, roleId, activityId, activityData.type)
|
||
if (playerActivityData) playerGroupActivityArray.push(playerActivityData);
|
||
}
|
||
}
|
||
playerGroupArray.push({
|
||
type: groupData.type,
|
||
activities: playerGroupActivityArray,
|
||
});
|
||
console.log(`${roleId} 活动合集 groupId:${groupData.groupId}, 合集类型${groupData.type}, 一共${playerGroupActivityArray.length}个`)
|
||
}
|
||
|
||
return resResult(STATUS.SUCCESS, { playerActivityArray, playerGroupArray });
|
||
}
|
||
|
||
//测试活动任务数据
|
||
async testActivityTask(msg: { hid: number, lv: number }, session: BackendSession) {
|
||
const { lv } = msg;
|
||
const roleId = session.get('roleId');
|
||
const serverId = session.get('serverId');
|
||
const sid: string = session.get('sid');
|
||
const funcs: number[] = session.get('funcs');
|
||
|
||
let heroNum = 1;
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY, heroNum, { heroes: [{ quality: 3 }] })
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT, 1, { oldQuality: 1, quality: 2 })
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_WAKE_UP_STAR_UP_COUNT, 1, { quality: 1, colorStar: 1 })
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_MAIN_ELITE, 1, { mainEliteWarId: 9001 })
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: 5001 })
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_EXPEDITION_BOX, 1)
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.ROLE_LV, 100)
|
||
// await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP, 1)
|
||
|
||
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_TOWER_LV, 1, { towerLv: lv })
|
||
|
||
|
||
|
||
return resResult(STATUS.SUCCESS,);
|
||
|
||
}
|
||
}
|