diff --git a/game-server/app/servers/activity/handler/refreshTaskHandler.ts b/game-server/app/servers/activity/handler/refreshTaskHandler.ts index cd32af3eb..4e9ac3d89 100644 --- a/game-server/app/servers/activity/handler/refreshTaskHandler.ts +++ b/game-server/app/servers/activity/handler/refreshTaskHandler.ts @@ -68,7 +68,7 @@ export class RefreshTaskHandler { return resResult(STATUS.ACTIVITY_REWARDED); } - await ActivityRefreshTaskModel.addReceiveRecord(serverId, activityId, roleId, roundIndex, pageIndex, id, 1); + await ActivityRefreshTaskModel.addReceiveRecord(serverId, activityId, roleId, roundIndex, pageIndex, id, dailyItemData.getRefTime(), 1); let rewardParamArr: Array = stringToRewardParam(dailyItemData.reward); let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.REFRESH_TASK_REWARD) diff --git a/game-server/app/services/activity/refreshTaskService.ts b/game-server/app/services/activity/refreshTaskService.ts index bd7648739..1bd5e6dc2 100644 --- a/game-server/app/services/activity/refreshTaskService.ts +++ b/game-server/app/services/activity/refreshTaskService.ts @@ -6,31 +6,6 @@ import { RefreshTaskData } from '../../domain/activityField/refreshTaskField'; import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { getActivitiesByType, getActivityById } from './activityService'; - -/** - * 获取活动数据 - * - * @param {number} serverId 区Id - * @param {number} activityId 活动Id - * @param {string} roleId 角色Id - * - */ -export async function getRefreshTaskActivity(serverId: number, roleId: string) { - let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.REFRESH_TASK); - if (activityDataArray.length === 0) { - return null; - } - let activityData: ActivityModelType = activityDataArray[0]; - let createTime = await getRoleCreateTime(roleId); - let serverTime = await getServerCreateTime(serverId); - let playerData = new RefreshTaskData(activityData, createTime, serverTime); - let playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex); - let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityData.activityId, roleId); - playerData.setPlayerRecords(playerRecords, pointRecordData); - return playerData; -} - - /** * 玩家玩家活动数据 * diff --git a/game-server/app/services/task/taskObj.ts b/game-server/app/services/task/taskObj.ts index ee4ee09d9..744fcc9f8 100644 --- a/game-server/app/services/task/taskObj.ts +++ b/game-server/app/services/task/taskObj.ts @@ -230,11 +230,11 @@ export class CheckSingleTask { let taskArray = taskActivity.findTaskByType(taskType); for (let task of taskArray) { let taskUpdateParam = await this.checkIsMatch(task.taskParamArray, async () => { - let data = await ActivityRefreshTaskModel.findDataById(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id); + let data = await ActivityRefreshTaskModel.findDataById(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id, task.getRefTime()); return data?.records ?? []; }); if(taskUpdateParam) { - let rec = await ActivityRefreshTaskModel.setOrIncTask(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id, taskType, taskUpdateParam); + let rec = await ActivityRefreshTaskModel.setOrIncTask(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id, task.getRefTime(), taskType, taskUpdateParam); if(!rec) continue; this.addActivityTaskPushMessage({...task, totalCount: rec.totalCount, receiveRewardCount: rec.receiveRewardCount||0, activityId }); } diff --git a/shared/db/ActivityRefreshTask.ts b/shared/db/ActivityRefreshTask.ts index 6497dbb29..1eb7dc9af 100644 --- a/shared/db/ActivityRefreshTask.ts +++ b/shared/db/ActivityRefreshTask.ts @@ -19,6 +19,8 @@ export default class Activity_Refresh_Task extends BaseModel { @prop({ required: true }) pageIndex: number; // 第几页 @prop({ required: true }) + refTime: number; // 刷新时间 + @prop({ required: true }) id: number; // id @prop({ required: true }) taskType: number; // 任务类型 @@ -32,21 +34,21 @@ export default class Activity_Refresh_Task extends BaseModel { records: string[]; // 数据信息 //任务领取记录 - public static async addReceiveRecord(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, count: number) { - let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id }, + public static async addReceiveRecord(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, count: number) { + let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime }, { $inc: { receiveRewardCount: count } }, { upsert: true, new: true }).lean(true); return result; } // 更新任务 - public static async setOrIncTask(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, taskType: number, param: UpdateTaskParam) { + public static async setOrIncTask(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, taskType: number, param: UpdateTaskParam) { if(param.set) { - return await this.setTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, taskType, param.set, param.records); + return await this.setTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, refTime, taskType, param.set, param.records); } else if (param.inc) { - return await this.addTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, taskType, param.inc, param.records); + return await this.addTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, refTime, taskType, param.inc, param.records); } else if (param.records){ - let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id }, + let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime }, { $set: { records: param.records, taskType } }, { upsert: true, new: true }).lean(); return result; } @@ -54,15 +56,15 @@ export default class Activity_Refresh_Task extends BaseModel { //根据活动统计完成任务次数 - public static async setTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, taskType: number, count: number, records?: string[]) { - let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id }, + public static async setTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, taskType: number, count: number, records?: string[]) { + let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime }, { $set: { totalCount: count, records: records||[], taskType }}, { upsert: true, new: true }).lean(); return result; } //根据活动统计完成任务次数 - public static async addTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, taskType: number, count: number, records?: string[]) { - let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id }, + public static async addTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, taskType: number, count: number, records?: string[]) { + let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime }, { $inc: { totalCount: count }, $set: { records: records||[], taskType } }, { upsert: true, new: true }).lean(); return result; } @@ -75,8 +77,8 @@ export default class Activity_Refresh_Task extends BaseModel { } //查询活动数据 - public static async findDataById(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number) { - let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOne({ serverId, roleId, activityId, roundIndex, pageIndex, id }).lean(true); + public static async findDataById(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number) { + let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOne({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime }).lean(true); return result; } diff --git a/shared/domain/activityField/refreshShopField.ts b/shared/domain/activityField/refreshShopField.ts index 665170c35..b54fc87d3 100644 --- a/shared/domain/activityField/refreshShopField.ts +++ b/shared/domain/activityField/refreshShopField.ts @@ -45,7 +45,8 @@ export class RefreshShopItem { let refZeroPoint = getZeroPoint(this.refreshType); let records = data.records ? data.records : []; let buyRecords = records.filter(obj => { - let curRefTime = getZeroPointOfTime(obj.time); + let curRefTime = getZeroPointOfTime(obj.time, this.refreshType); + console.log(curRefTime, refZeroPoint) return obj && obj.id === this.id && obj.pageIndex == this.pageIndex && curRefTime == refZeroPoint }); this.buyCount = buyRecords.length; diff --git a/shared/domain/activityField/refreshTaskField.ts b/shared/domain/activityField/refreshTaskField.ts index c87a981c5..a747d5222 100644 --- a/shared/domain/activityField/refreshTaskField.ts +++ b/shared/domain/activityField/refreshTaskField.ts @@ -1,7 +1,8 @@ -import { TASK_TYPE } from '../../consts'; +import { SHOP_REFRESH_TYPE, TASK_TYPE } from '../../consts'; import { ActivityModelType } from '../../db/Activity'; import { ActivityRefreshTaskModelType } from '../../db/ActivityRefreshTask'; import { ActivityRefreshTaskPointModelType } from '../../db/ActivityRefreshTaskPoint'; +import { getZeroPoint } from '../../pubUtils/timeUtil'; import { parseNumberList } from '../../pubUtils/util'; import { ActivityBase } from './activityField'; @@ -21,8 +22,9 @@ export class RefreshTaskItem { taskParamArray: number[] = []; totalCount: number = 0; //完成任务累计次数 receiveRewardCount: number = 0; //领取奖励次数 + refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.FOREVER; - constructor(data: any, pageIndex: number) { + constructor(data: any, pageIndex: number, refreshType: number) { this.pageIndex = pageIndex; this.id = data.id; this.name = data.name; @@ -35,6 +37,11 @@ export class RefreshTaskItem { this.totalCount = 0; this.receiveRewardCount = 0; this.taskParamArray = parseNumberList(data.taskParam); + this.refreshType = refreshType; + } + + public getRefTime() { + return getZeroPoint(this.refreshType); } } @@ -47,9 +54,8 @@ export class RefreshTaskPage { constructor(data: any) { this.pageIndex = data.pageIndex; this.name = data.name; - this.items = []; for (let obj of data.items) { - this.items.push(new RefreshTaskItem(obj, data.pageIndex)) + this.items.push(new RefreshTaskItem(obj, data.pageIndex, data.refreshType)); } } } @@ -92,7 +98,8 @@ export class RefreshTaskData extends ActivityBase { public setPlayerRecords(data: ActivityRefreshTaskModelType[], pointRecordData: ActivityRefreshTaskPointModelType) { for (let pageData of this.list) { for (let item of pageData.items) { - let index = data.findIndex(record => { return item.id == record.id && item.pageIndex == record.pageIndex && item.taskType == record.taskType }) + let refTime = item.getRefTime(); + let index = data.findIndex(record => { return item.id == record.id && item.pageIndex == record.pageIndex && item.taskType == record.taskType && refTime == record.refTime}); if (index != -1) { item.totalCount = data[index].totalCount ? data[index].totalCount : 0; item.receiveRewardCount = data[index].receiveRewardCount ? data[index].receiveRewardCount : 0; diff --git a/shared/pubUtils/timeUtil.ts b/shared/pubUtils/timeUtil.ts index c19822ead..f9822a4f3 100644 --- a/shared/pubUtils/timeUtil.ts +++ b/shared/pubUtils/timeUtil.ts @@ -499,6 +499,8 @@ export function getZeroPointOfTime(refTime: Date, refreshType: SHOP_REFRESH_TYPE return t.getWeekZeroPoint(); } else if (refreshType == SHOP_REFRESH_TYPE.MONTHLY) { return t.getMonthZeroPoint(); + } else { + return 0 } } diff --git a/shared/resource/jsons/dic_army_bossBase.json b/shared/resource/jsons/dic_army_bossBase.json index 7bc8ed4fc..65249c1bd 100644 --- a/shared/resource/jsons/dic_army_bossBase.json +++ b/shared/resource/jsons/dic_army_bossBase.json @@ -4,7 +4,7 @@ "structureId": 3, "level": 1, "bossLevel": 10, - "warIdHP": "8001&10000000&10|8008&10000000&10", + "warIdHP": "8001&100000&10|8008&100000&10", "rewards": 1, "consume": 50000, "buildWords": "&", @@ -22,7 +22,7 @@ "structureId": 3, "level": 2, "bossLevel": 20, - "warIdHP": "8009&20000000&20|8010&20000000&20|8016&20000000&20", + "warIdHP": "8010&200000&20", "rewards": 1, "consume": 125000, "buildWords": "&", @@ -40,7 +40,7 @@ "structureId": 3, "level": 3, "bossLevel": 30, - "warIdHP": "8017&30000000&30|8018&30000000&30|8024&30000000&30", + "warIdHP": "8024&300000&30", "rewards": 2, "consume": 350000, "buildWords": "&", @@ -58,7 +58,7 @@ "structureId": 3, "level": 4, "bossLevel": 40, - "warIdHP": "8025&40000000&40|8026&40000000&40|8027&40000000&40|8032&40000000&40", + "warIdHP": "8026&400000&40", "rewards": 2, "consume": 800000, "buildWords": "&", @@ -76,7 +76,7 @@ "structureId": 3, "level": 5, "bossLevel": 50, - "warIdHP": "8033&50000000&50|8034&50000000&50|8035&50000000&50|8040&50000000&50", + "warIdHP": "8033&500000&50|8034&500000&50|8035&500000&50|8040&500000&50", "rewards": 2, "consume": 1700000, "buildWords": "&", @@ -94,7 +94,7 @@ "structureId": 3, "level": 6, "bossLevel": 60, - "warIdHP": "8041&60000000&60|8042&60000000&60|8043&60000000&60|8044&60000000&60|8048&60000000&60", + "warIdHP": "8044&600000&60", "rewards": 2, "consume": 3500000, "buildWords": "&", @@ -112,7 +112,7 @@ "structureId": 3, "level": 7, "bossLevel": 70, - "warIdHP": "8049&70000000&65|8050&70000000&65|8051&70000000&65|8052&70000000&65|8056&70000000&65", + "warIdHP": "8049&700000&65|8050&700000&65|8051&700000&65|8052&700000&65|8056&700000&65", "rewards": 3, "consume": 6125000, "buildWords": "&", @@ -130,7 +130,7 @@ "structureId": 3, "level": 8, "bossLevel": 80, - "warIdHP": "8057&80000000&70|8058&80000000&70|8059&80000000&70|8060&80000000&70|8061&80000000&70|8064&80000000&70", + "warIdHP": "8061&800000&70", "rewards": 3, "consume": 9125000, "buildWords": "&", @@ -148,7 +148,7 @@ "structureId": 3, "level": 9, "bossLevel": 90, - "warIdHP": "8065&90000000&75|8066&90000000&75|8067&90000000&75|8068&90000000&75|8069&90000000&75|8070&90000000&75|8072&90000000&75", + "warIdHP": "8070&900000&75", "rewards": 3, "consume": 13625000, "buildWords": "&", @@ -166,7 +166,7 @@ "structureId": 3, "level": 10, "bossLevel": 100, - "warIdHP": "8073&100000000&80|8074&100000000&80|8075&100000000&80|8076&100000000&80|8077&100000000&80|8078&100000000&80|8079&100000000&80|8080&100000000&80", + "warIdHP": "8079&1000000&80", "rewards": 3, "consume": 0, "buildWords": "&",