diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts index b0db01aa3..6679cb1a9 100644 --- a/game-server/app/servers/activity/handler/activityHandler.ts +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -18,6 +18,8 @@ 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 { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges'; // import { isComplete } from '../../../pubUtils/taskUtil'; @@ -337,14 +339,14 @@ export class ActivityHandler { //寻宝骑兵活动 23 { - // let data = await dailyRMBGiftsActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.TREASURE_HUNT, - // activityId: data.activityId, - // data, - // }); - // } + let data = await treasureHuntActivity(serverId, roleId); + if (data) { + playerActivityArray.push({ + type: ACTIVITY_TYPE.TREASURE_HUNT, + activityId: data.activityId, + data, + }); + } } //弹出商店 24 @@ -423,4 +425,29 @@ export class ActivityHandler { return resResult(STATUS.SUCCESS, { playerActivityArray }); } + //测试活动任务数据 + 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, star: 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,); + + } } diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 80cb06647..104ee7433 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -301,6 +301,7 @@ export class PvpHandler { let myRank = await r.getMyRank({ roleId }); await checkTaskInPvpEnd(roleId, sid, funcs, isSuccess, heroScores); + await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP, 1) if (isSuccess) { await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP_WIN, 1) await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.PVP_WIN_SERIES, 1) diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index 6a428ca28..444a6ca55 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -286,7 +286,7 @@ export class HeroHandler { // 任务 await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_QUALITY_UP, hero); // 任务 - await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT, 1, { oldQuality, quality: hero.quality }); + await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT, 1, { oldQuality: dicHero.quality, quality: hero.quality }); const curHero = { hid, diff --git a/game-server/app/services/taskService.ts b/game-server/app/services/taskService.ts index e0d576c8e..cdcb7ca2a 100644 --- a/game-server/app/services/taskService.ts +++ b/game-server/app/services/taskService.ts @@ -111,6 +111,7 @@ export async function checkTaskInBattleEnd(serverId: number, roleId: string, sid //成长任务 await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_MAIN, 1, { warId: battleId }) await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_EXPEDITION, 1) + await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: battleId }) } diff --git a/game-server/app/services/treasureHuntService.ts b/game-server/app/services/treasureHuntService.ts index 89fbd9633..8421d8b19 100644 --- a/game-server/app/services/treasureHuntService.ts +++ b/game-server/app/services/treasureHuntService.ts @@ -24,8 +24,23 @@ export async function treasureHuntActivity(serverId: number, roleId: string) { if (!activityData) { return null; } - let playerData = await getPlayerTreasureHuntData(activityData.activityId, serverId, roleId, huntRoundIndex, huntBeginTime, huntEndTime); - return playerData + + let playerData = new TreasureHuntData(activityData); + playerData.beginTime = moment(huntBeginTime).valueOf(); + playerData.endTime = moment(huntEndTime).valueOf(); + playerData.todayIndex = deltaDays(moment(huntBeginTime).startOf('d').toDate(), new Date) + 1;; + playerData.roundIndex = huntRoundIndex; + + let playerTreasureFirstPageecord: ActivityTreasureHuntFirstPageModelType = await ActivityTreasureHuntFirstPageModel.findData(serverId, activityData.activityId, roleId, huntRoundIndex); + playerData.firstPage.setPlayerFirstPageRecord(playerTreasureFirstPageecord); + let playerShopRecord: ActivityTreasureHuntShopModelType = await ActivityTreasureHuntShopModel.findTreasureData(activityData.activityId, roleId, huntRoundIndex, playerData.todayIndex); + playerData.shop.setPlayerShopRecords(playerShopRecord); + let playerTaskRecord: ActivityTreasureHuntTaskModelType[] = await ActivityTreasureHuntTaskModel.findDataByRoundIndex(serverId, activityData.activityId, roleId, huntRoundIndex); + playerData.tasks.setPlayerTaskRecords(playerTaskRecord); + let playerTreasureShopRecord: ActivityTreasureHuntTreasureShopModelType = await ActivityTreasureHuntTreasureShopModel.findData(activityData.activityId, roleId, huntRoundIndex); + playerData.treasureShop.setPlayerTreasureShopRecords(playerTreasureShopRecord); + + return playerData; } /** diff --git a/shared/consts/constModules/activityConst.ts b/shared/consts/constModules/activityConst.ts index 036fc5bed..49c4ce812 100644 --- a/shared/consts/constModules/activityConst.ts +++ b/shared/consts/constModules/activityConst.ts @@ -8,14 +8,14 @@ export enum ACTIVITY_TYPE { DAILY_DISCOUNT_GIFT = 1, // 七天乐活动,每日特惠礼包 TASK_GROWTH = 2, // 成长任务活动 TASK_DAILY_CHALLENGES = 3, // 今日挑战活动 - SIGN_IN = 4, // 签到活动 - SIGN_IN_VIP = 5, // 签到活动(高级)RMB购买 - GROWTH_FUND_MAIN = 6, // 主线成长基金 - GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶) - GROWTH_FUND_TOWER = 8, // 镇念塔成长基金 - GROWTH_FUND_TOWER_VIP = 9, // 镇念塔成长基金(高阶) - GROWTH_FUND_MAIN_ELITE = 10, // 精英成长基金 - GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶) + SIGN_IN = 4, // 签到活动 (开服立即开启,配置每月*日到*日结束) + SIGN_IN_VIP = 5, // 签到活动(高级)RMB购买 (开服立即开启,配置每月*日到*日结束) + GROWTH_FUND_MAIN = 6, // 主线成长基金 (注册后可见,永久存在) + GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶)(注册后可见,永久存在) + GROWTH_FUND_TOWER = 8, // 镇念塔成长基金 (注册后可见,永久存在) + GROWTH_FUND_TOWER_VIP = 9, // 镇念塔成长基金(高阶) (注册后可见,永久存在) + GROWTH_FUND_MAIN_ELITE = 10, // 精英成长基金 (注册后可见,永久存在) + GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)(注册后可见,永久存在) THIRTY_DAYS = 12, // 30日目标活动 SELF_SERVICE_SHOP = 13, // 自选商店 FIRST_GIFT = 14, // 首充礼包 diff --git a/shared/db/ActivityPopUpShop.ts b/shared/db/ActivityPopUpShop.ts index 7207540f4..b8a41e874 100644 --- a/shared/db/ActivityPopUpShop.ts +++ b/shared/db/ActivityPopUpShop.ts @@ -54,6 +54,14 @@ export default class Activity_Pop_Up_Shop extends BaseModel { } //根据活动taskId查询现在正在进行的活动数据 + public static async findDataByTaskId(serverId: number, activityId: number, roleId: string, id: number, type: number) { + let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOne({ + serverId, roleId, activityId, id, type, + }).lean(true); + return result; + } + + //根据活动taskId查询现在正在开启的商店数据 public static async findOpenDataByTaskId(serverId: number, activityId: number, roleId: string, id: number, type: number) { let nowDate = new Date(); let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOne({ diff --git a/shared/domain/activityField/treasureHuntField.ts b/shared/domain/activityField/treasureHuntField.ts index 62716e6bd..34bd24607 100644 --- a/shared/domain/activityField/treasureHuntField.ts +++ b/shared/domain/activityField/treasureHuntField.ts @@ -41,10 +41,12 @@ export class TreasureHuntFirstPageData { export class ConsumeData { count: number; // 第几次购买,1开始 consume: string; //消耗资源 "2&31002&400" + discount: number; // 折扣 constructor(data: any) { this.count = data.count; this.consume = data.consume; + this.discount = data.discount; } } @@ -56,6 +58,7 @@ export class TreasureHuntShopItem { productID: string; // 商品id reward: string; //奖励 countMax: number; //最大购买次数 + discount: number; //折扣 imageName: string; consume: ConsumeData[]; //每次购买价格不同 @@ -68,6 +71,7 @@ export class TreasureHuntShopItem { this.productID = data.productID; this.reward = data.reward; this.countMax = data.countMax; + this.discount = data.discount; this.imageName = data.imageName; this.consume = []; for (let obj of data.data) { diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index 0e0c0622b..7dce4145c 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -502,7 +502,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null; let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData); if (addCount) { - if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { + if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { await ActivityGrowthModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); } else { await ActivityGrowthModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); @@ -524,7 +524,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData); if (addCount) { - if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { + if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { await ActivityDailyChallengesModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); } else { await ActivityDailyChallengesModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); @@ -541,6 +541,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: taskType === TASK_TYPE.HERO_QUALITY_TO_QUALITY_COUNT || taskType === TASK_TYPE.HERO_WAKE_UP_COUNT || taskType === TASK_TYPE.HERO_WAKE_UP_STAR_UP_COUNT || + taskType === TASK_TYPE.HERO_QUALITY || taskType === TASK_TYPE.EQUIP_STRENGTHEN || taskType === TASK_TYPE.EQUIP_REFINE_LV || @@ -589,15 +590,15 @@ export async function accomplishTask(serverId: number, roleId: string, taskType: for (let task of allTaskData) { if (task.taskType == taskType) { let popShopData = new PopUpShopData(task, activity.activityId); - let taskRecord = await ActivityPopUpShopModel.findOpenDataByTaskId(serverId, activity.activityId, roleId, popShopData.id, popShopData.taskType) + let taskRecord = await ActivityPopUpShopModel.findDataByTaskId(serverId, activity.activityId, roleId, popShopData.id, popShopData.taskType) let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null if (!taskRecord || !taskRecord.isPush) { let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, parma, recordData); if (addCount) { let beginTime = new Date(); let endTime = moment(new Date()).add(task.duration, 'h').toDate(); - if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { - let playerRecord = await ActivityPopUpShopModel.addTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount); + if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { + let playerRecord = await ActivityPopUpShopModel.setTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount); //推送 if (task.condition <= playerRecord.totalCount) { playerRecord = await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime); @@ -852,7 +853,41 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin } case TASK_TYPE.BATTLE_TOWER_LV://{towerLv} { - addCount = paramObj.towerLv; + let towerLv = paramObj.towerLv; + console.log('dddddddd', recordData, towerLv) + if (recordData) { + console.log('dddddddd22', recordData) + if (recordData >= towerLv) { + console.log('dddddddd22333', recordData) + break; + } + } + record = towerLv; + addCount = towerLv; + break; + } + case TASK_TYPE.BATTLE_MAIN_ELITE: + { + if (paramObj.mainEliteWarId == param[1]) { + addCount = count; + } + break; + } + case TASK_TYPE.BATTLE_DUNGEON_WAR: + { + if (paramObj.warId == param[1]) { + addCount = count; + } + break; + } + case TASK_TYPE.HERO_NUM: + { + addCount = count; + break; + } + case TASK_TYPE.PVP: + { + addCount = count; break; } default: