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,); } }