diff --git a/game-server/app/servers/activity/handler/sevenDaysHandler.ts b/game-server/app/servers/activity/handler/sevenDaysHandler.ts index c9a9029c2..9839db452 100644 --- a/game-server/app/servers/activity/handler/sevenDaysHandler.ts +++ b/game-server/app/servers/activity/handler/sevenDaysHandler.ts @@ -179,17 +179,15 @@ export class SevenDaysHandler { } await ActivityGrowthModel.addCellRecord(serverId, activityId, roleId, dayIndex, cellIndex, type, 1, 0); - let reward = dailyItemData.goodReward(); - let goods = await addItems(roleId, roleName, sid, reward); - let heroReward = dailyItemData.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); - } - return resResult(STATUS.SUCCESS, { goods, addHeros }); + let rewardParamArr: Array = stringToRewardParam(dailyItemData.reward); + let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr) + + dailyItemData.receiveRewardCount = 1; + return resResult(STATUS.SUCCESS, Object.assign(result, { + param: msg, + item: dailyItemData, + })); } @@ -249,21 +247,19 @@ export class SevenDaysHandler { let result = await handleCost(roleId, sid, [{ id: consumeData.id, count: consumeData.count }]); if (!result) return resResult(STATUS.ACTIVITY_RES_NOT_ENOUGH); } else if (consumeType == ACTIVITY_RESOURCES_TYPE.RMB) {//RMB购买 - + return resResult(STATUS.ACTIVITY_NEED_PAY); } - await ActivityDailyGiftsModel.buyRecord(activityId, roleId, dayIndex, cellIndex, 1); - let reward = dailyItemData.goodReward(); - let goods = await addItems(roleId, roleName, sid, reward); - let heroReward = dailyItemData.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); - } + await ActivityDailyGiftsModel.buyRecord(serverId, activityId, roleId, dayIndex, cellIndex, 1); - return resResult(STATUS.SUCCESS, { goods, addHeros }); + let rewardParamArr: Array = stringToRewardParam(dailyItemData.reward); + let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr) + + dailyItemData.buyCount += 1; + return resResult(STATUS.SUCCESS, Object.assign(result, { + param: msg, + item: dailyItemData, + })); } } diff --git a/game-server/app/services/dailyChallengesService.ts b/game-server/app/services/dailyChallengesService.ts index 8d75c4bdf..4ca1e9473 100644 --- a/game-server/app/services/dailyChallengesService.ts +++ b/game-server/app/services/dailyChallengesService.ts @@ -13,7 +13,7 @@ import { DailyChallengesData, DailyItem } from '../domain/activityField/dailyCha */ export async function getPlayerDailyChallengesData(activityId: number, serverId: number, roleId: string) { let activityData: ActivityModelType = await ActivityModel.findActivity(activityId, true); - let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(activityId, roleId); + let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityId, roleId); let playerData = new DailyChallengesData(activityData); playerData.setPlayerRecords(playerRecords); diff --git a/game-server/app/services/dailyGiftsService.ts b/game-server/app/services/dailyGiftsService.ts index 853e1b6d6..a9abc3d1b 100644 --- a/game-server/app/services/dailyGiftsService.ts +++ b/game-server/app/services/dailyGiftsService.ts @@ -13,7 +13,7 @@ import { DailyGiftsData, DailyGiftItem } from '../domain/activityField/dailyGift */ export async function getPlayerDailyGiftsData(activityId: number, serverId: number, roleId: string) { let activityData: ActivityModelType = await ActivityModel.findActivity(activityId, true); - let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(activityId, roleId); + let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityId, roleId); let playerData = new DailyGiftsData(activityData); playerData.setPlayerRecords(playerRecords); diff --git a/shared/db/ActivityDailyChallenges.ts b/shared/db/ActivityDailyChallenges.ts index 82df90253..6aad0f22e 100644 --- a/shared/db/ActivityDailyChallenges.ts +++ b/shared/db/ActivityDailyChallenges.ts @@ -7,6 +7,8 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos @index({ roleId: 1 }) export default class ActivityDailyChallenges extends BaseModel { + @prop({ required: true }) + serverId: number; // 服id @prop({ required: true }) activityId: number; // 活动Id @prop({ required: true }) @@ -23,55 +25,55 @@ export default class ActivityDailyChallenges extends BaseModel { receiveRewardCount: number; // 领取奖励次数 //任务领取记录 - public static async addCellRecord(activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, count: number, lean = true) { - let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ roleId, activityId, dayIndex, cellIndex, type }, + public static async addCellRecord(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, count: number, lean = true) { + let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex, type }, { $inc: { receiveRewardCount: count } }, { upsert: true, new: true }).lean(lean); return result; } //根据活动统计完成任务次数 - public static async setTaskCount(activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, count: number, lean = true) { - let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ roleId, activityId, dayIndex, cellIndex, type }, + public static async setTaskCount(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, count: number, lean = true) { + let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex, type }, { $set: { totalCount: count } }, { upsert: true, new: true }).lean(lean); return result; } //根据活动统计完成任务次数 - public static async addTaskCount(activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, addCount: number, lean = true) { - let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ roleId, activityId, dayIndex, cellIndex, type }, + public static async addTaskCount(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, addCount: number, lean = true) { + let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex, type }, { $inc: { totalCount: addCount } }, { upsert: true, new: true }).lean(lean); return result; } //根据活动id查询活动数据 - public static async findData(activityId: number, roleId: string, lean = true) { - let result: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.find({ roleId, activityId }).lean(lean); + public static async findData(serverId: number, activityId: number, roleId: string, lean = true) { + let result: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.find({ serverId, roleId, activityId }).lean(lean); return result; } //查询第几天的活动数据 - public static async findDataByDayIndex(activityId: number, roleId: string, dayIndex: number, lean = true) { - let result: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.find({ roleId, activityId, dayIndex }).lean(lean); + public static async findDataByDayIndex(serverId: number, activityId: number, roleId: string, dayIndex: number, lean = true) { + let result: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.find({ serverId, roleId, activityId, dayIndex }).lean(lean); return result; } //查询第几天某个的活动数据 - public static async findDataByCellIndex(activityId: number, roleId: string, dayIndex: number, cellIndex: number, lean = true) { - let result: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.find({ roleId, activityId, dayIndex, cellIndex }).lean(lean); + public static async findDataByCellIndex(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, lean = true) { + let result: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.find({ serverId, roleId, activityId, dayIndex, cellIndex }).lean(lean); return result; } //新增领取记录 - public static async addData(activityId: number, roleId: string, dayIndex: number, cellIndex: number, count: number, lean = true) { - let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ roleId, activityId, dayIndex, cellIndex }, + public static async addData(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, count: number, lean = true) { + let result: ActivityDailyChallengesModelType = await ActivityDailyChallengesModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex }, { $: { count: count } }, { upsert: true, new: true }).lean(lean); return result; } //删除活动领取记录 - public static async deleteActivity(activityId: number, roleId: string, dayIndex: number, cellIndex: number) { - await ActivityDailyChallengesModel.deleteMany({ roleId, activityId, dayIndex, cellIndex }); + public static async deleteActivity(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number) { + await ActivityDailyChallengesModel.deleteMany({ serverId, roleId, activityId, dayIndex, cellIndex }); } } diff --git a/shared/db/ActivityDailyGifts.ts b/shared/db/ActivityDailyGifts.ts index 7f3b38cc8..1f353488b 100644 --- a/shared/db/ActivityDailyGifts.ts +++ b/shared/db/ActivityDailyGifts.ts @@ -8,6 +8,8 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos @index({ roleId: 1 }) export default class ActivityDailyGifts extends BaseModel { + @prop({ required: true }) + serverId: number; // 服Id @prop({ required: true }) activityId: number; // 活动Id @prop({ required: true }) @@ -20,33 +22,33 @@ export default class ActivityDailyGifts extends BaseModel { buyCount: number; // 购买次数 //购买记录 - public static async buyRecord(activityId: number, roleId: string, dayIndex: number, cellIndex: number, count: number, lean = true) { - let result: ActivityDailyGiftsModelType = await ActivityDailyGiftsModel.findOneAndUpdate({ roleId, activityId, dayIndex, cellIndex }, + public static async buyRecord(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, count: number, lean = true) { + let result: ActivityDailyGiftsModelType = await ActivityDailyGiftsModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex }, { $inc: { receiveRewardCount: count } }, { upsert: true, new: true }).lean(lean); return result; } //根据活动id查询活动数据 - public static async findData(activityId: number, roleId: string, lean = true) { - let result: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.find({ roleId, activityId }).lean(lean); + public static async findData(serverId: number, activityId: number, roleId: string, lean = true) { + let result: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.find({ serverId, roleId, activityId }).lean(lean); return result; } //查询第几天的活动数据 - public static async findDataByDayIndex(activityId: number, roleId: string, dayIndex: number, lean = true) { - let result: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.find({ roleId, activityId, dayIndex }).lean(lean); + public static async findDataByDayIndex(serverId: number, activityId: number, roleId: string, dayIndex: number, lean = true) { + let result: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.find({ serverId, roleId, activityId, dayIndex }).lean(lean); return result; } //查询第几天某个的活动数据 - public static async findDataByCellIndex(activityId: number, roleId: string, dayIndex: number, cellIndex: number, lean = true) { - let result: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.find({ roleId, activityId, dayIndex, cellIndex }).lean(lean); + public static async findDataByCellIndex(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, lean = true) { + let result: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.find({ serverId, roleId, activityId, dayIndex, cellIndex }).lean(lean); return result; } //删除活动领取记录 - public static async deleteActivity(activityId: number, roleId: string, dayIndex: number, cellIndex: number) { - await ActivityDailyGiftsModel.deleteMany({ roleId, activityId, dayIndex, cellIndex }); + public static async deleteActivity(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number) { + await ActivityDailyGiftsModel.deleteMany({ serverId, roleId, activityId, dayIndex, cellIndex }); } } diff --git a/shared/db/ActivityGrowth.ts b/shared/db/ActivityGrowth.ts index a1f261302..ac7fce726 100644 --- a/shared/db/ActivityGrowth.ts +++ b/shared/db/ActivityGrowth.ts @@ -7,6 +7,8 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos @index({ roleId: 1 }) export default class ActivityGrowth extends BaseModel { + @prop({ required: true }) + serverId: number; // 活动Id @prop({ required: true }) activityId: number; // 活动Id @prop({ required: true }) diff --git a/shared/domain/activityField/dailyGiftsField.ts b/shared/domain/activityField/dailyGiftsField.ts index aa53ba274..44de116ed 100644 --- a/shared/domain/activityField/dailyGiftsField.ts +++ b/shared/domain/activityField/dailyGiftsField.ts @@ -26,6 +26,7 @@ export class DailyGiftItem { this.name = data.name; this.consume = data.consume; this.reward = data.reward; + this.maxCount = data.maxCount; this.discount = data.discount; } @@ -77,6 +78,8 @@ export class DailyGiftsData extends ActivityBase { let index = data.findIndex(record => { return obj.dayIndex == record.dayIndex && obj.cellIndex == record.cellIndex }) if (index != -1) { obj.buyCount = data[index].buyCount; + } else { + obj.buyCount = 0; } } } diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index f0b1f6b93..4cafa7fb4 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -508,9 +508,9 @@ export async function accomplishTask(roleId: string, taskType: TASK_TYPE, count: let addCount = isComplete(roleId, task.taskType, task.taskParam, count, parma); if (addCount) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) { - await ActivityDailyChallengesModel.setTaskCount(growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); + await ActivityDailyChallengesModel.setTaskCount(activity.serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); } else { - await ActivityDailyChallengesModel.addTaskCount(growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); + await ActivityDailyChallengesModel.addTaskCount(activity.serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); } } }