diff --git a/game-server/app/services/activity/giftPackageService.ts b/game-server/app/services/activity/giftPackageService.ts index dfc2b2283..ac9542120 100644 --- a/game-server/app/services/activity/giftPackageService.ts +++ b/game-server/app/services/activity/giftPackageService.ts @@ -13,7 +13,7 @@ import { combineItems } from '../role/util'; import { recordGuildFund } from './timeLimitRankService'; import { filterGoods, isGoodsHidden, isHeroHidden } from '../dataService'; import { DicGiftPackagePlan } from '../../pubUtils/dictionary/DicGiftPackagePlan'; -import { Floor, GiftPackageFloorModel } from '../../db/GiftPackageFloor'; +import { Floor, GiftPackageFloorModel, GiftPackageFloorType } from '../../db/GiftPackageFloor'; import { isNumber } from 'underscore'; @@ -75,11 +75,16 @@ export async function useGiftPackage(roleId: string, roleName: string, sid: stri if(pool.length <= 0) return resResult(STATUS.DIC_DATA_NOT_FOUND); let allReward: { type: number, id: number, count: number }[] = []; let giftPackage = { giftPackageId: giftID }; + const floorPlans = groupByFloorId(pool); + let dropHistory = (floorPlans && Object.keys(floorPlans).length > 0) ? await GiftPackageFloorModel.findByGiftPackageId(roleId, giftID): { floors: [], getSum: 0, allSum: 0 }; for (let i = 0; i < giftCount; i++) { - let { rewards, floors } = await randomSelectedData(pool, roleId, giftID, count); + let { rewards, floors } = await randomSelectedData(dropHistory, pool, roleId, giftID, count); allReward.push(...rewards); giftPackage['floors'] = floors; } + await GiftPackageFloorModel.updateByGiftPackageId(roleId, giftID, { + floors: dropHistory.floors, getSum: dropHistory.getSum, allSum: dropHistory.allSum + }); result = await addReward(roleId, roleName, sid, serverId, allReward, ITEM_CHANGE_REASON.USE_GIFT_PACKAGE); Object.assign(result, { giftPackage }); break; @@ -200,10 +205,9 @@ async function initFloorData(floors: Floor[], floorPlans: { [key: number]: DicGi } } -async function randomSelectedData(pool: DicGiftPackagePlan[], roleId: string, giftPackageId: number, count: number) { +async function randomSelectedData(dropHistory: {floors: Floor[], getSum: number, allSum: number }, pool: DicGiftPackagePlan[], roleId: string, giftPackageId: number, count: number) { let rewards: RewardParam[] = []; const floorPlans = groupByFloorId(pool); - let dropHistory = (floorPlans && Object.keys(floorPlans).length > 0) ? await GiftPackageFloorModel.findByGiftPackageId(roleId, giftPackageId): { floors: [], getSum: 0, allSum: 0 }; let { floors = [], getSum = 0, allSum = 0 } = dropHistory; for (let i = 0; i < count; i++) { @@ -266,10 +270,10 @@ async function randomSelectedData(pool: DicGiftPackagePlan[], roleId: string, gi let result; result = Object.assign({}, { rewards }) if(floorPlans && Object.keys(floorPlans).length > 0) { - const { floors: newFloors } = await GiftPackageFloorModel.updateByGiftPackageId(roleId, giftPackageId, { - floors, getSum, allSum - }); - Object.assign(result, { giftPackageId, floors: newFloors }); + dropHistory.floors = floors; + dropHistory.getSum = getSum; + dropHistory.allSum = allSum; + Object.assign(result, { giftPackageId, floors }); } return result; } diff --git a/shared/db/GiftPackageFloor.ts b/shared/db/GiftPackageFloor.ts index 80c429ae2..bfceea399 100644 --- a/shared/db/GiftPackageFloor.ts +++ b/shared/db/GiftPackageFloor.ts @@ -42,7 +42,7 @@ export default class GiftPackageFloor extends BaseModel { // 根据礼包 id 查找 public static async findByGiftPackageId(roleId: string, giftPackageId: number, select = '', lean = true) { - const result: GiftPackageFloorType = await await GiftPackageFloorModel.findOneAndUpdate({ roleId, giftPackageId}, {}, {new: true, upsert: true}).select(select).lean(lean); + const result: GiftPackageFloorType = await GiftPackageFloorModel.findOneAndUpdate({ roleId, giftPackageId}, {}, {new: true, upsert: true}).select(select).lean(lean); return result; }