diff --git a/game-server/app/servers/activity/handler/firstGiftHandler.ts b/game-server/app/servers/activity/handler/firstGiftHandler.ts index f9d5b0223..1eb7a1a34 100644 --- a/game-server/app/servers/activity/handler/firstGiftHandler.ts +++ b/game-server/app/servers/activity/handler/firstGiftHandler.ts @@ -64,15 +64,19 @@ export class FirstGiftHandler { return resResult(STATUS.ACTIVITY_FIRST_GIFT_END); } - let item = playerData.findFirstGiftItem(index); - if (item.isReceive) { + let items = playerData.canReceiveItems(); + if (items.length === 0) { return resResult(STATUS.ACTIVITY_REWARDED); } - - let rewardArray = stringToRewardParam(item.reward) + let rewardArray = []; + let indexArray = []; + for (let item of items) { + rewardArray = rewardArray.concat(stringToRewardParam(item.reward)) + indexArray.push(item.index) + } let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardArray); - await ActivityFirstGiftModel.addRecord(activityId, roleId, index); + await ActivityFirstGiftModel.addRecord(activityId, roleId, indexArray); return resResult(STATUS.SUCCESS, Object.assign(result, {})); } diff --git a/shared/db/ActivityFirstGift.ts b/shared/db/ActivityFirstGift.ts index 8e16977d6..e5efa530f 100644 --- a/shared/db/ActivityFirstGift.ts +++ b/shared/db/ActivityFirstGift.ts @@ -16,9 +16,9 @@ export default class ActivityFirstGift extends BaseModel { //添加领取记录 - public static async addRecord(activityId: number, roleId: string, index: number) { + public static async addRecord(activityId: number, roleId: string, indexArray: number[]) { let result: ActivityFirstGiftModelType = await ActivityFirstGiftModel.findOneAndUpdate({ roleId, activityId, }, - { $push: { days: index } }, { upsert: true, new: true }).lean(true); + { $push: { days: { $each: indexArray } } }, { upsert: true, new: true }).lean(true); return result; } diff --git a/shared/domain/activityField/firstGiftField.ts b/shared/domain/activityField/firstGiftField.ts index 907322fd5..89ffd4b76 100644 --- a/shared/domain/activityField/firstGiftField.ts +++ b/shared/domain/activityField/firstGiftField.ts @@ -18,6 +18,7 @@ export class FirstGiftItem { this.index = data.index; this.reward = data.reward; this.goldCount = data.goldCount; + this.isReceive = false; } } @@ -46,6 +47,11 @@ export class FirstGiftData extends ActivityBase { return null; } + //奖励内容 + public canReceiveItems(): FirstGiftItem[] { + return this.list.filter(obj => { return obj && !obj.isReceive }); + } + //解析玩家任务领取记录 public setPlayerRecords(data: ActivityFirstGiftModelType) { this.todayIndex = 0; diff --git a/shared/domain/activityField/signInField.ts b/shared/domain/activityField/signInField.ts index c139e442f..3a722d4ab 100644 --- a/shared/domain/activityField/signInField.ts +++ b/shared/domain/activityField/signInField.ts @@ -18,6 +18,7 @@ export class SignInItem { constructor(data: any) { this.dayIndex = data.dayIndex; this.reward = data.reward; + this.isReceive = false; } public heroReward(): CreateHeroParam[] { @@ -88,7 +89,6 @@ export class SignInData extends ActivityBase { let arr = dataObj.data for (let obj of arr) { - console.log('obj', obj) this.list.push(new SignInItem(obj)) } }