From 99de9d1b035f4a5b69cb1ec17f3c7aa5bc5d1d61 Mon Sep 17 00:00:00 2001 From: luying Date: Thu, 26 Nov 2020 11:26:10 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=90=88=E6=88=90=E8=97=8F=E5=AE=9D?= =?UTF-8?q?=E5=9B=BE=E4=B8=AD=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/battle/handler/comBattleHandler.ts | 6 +++--- shared/db/Item.ts | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/game-server/app/servers/battle/handler/comBattleHandler.ts b/game-server/app/servers/battle/handler/comBattleHandler.ts index 77cf8404a..eac8dead9 100644 --- a/game-server/app/servers/battle/handler/comBattleHandler.ts +++ b/game-server/app/servers/battle/handler/comBattleHandler.ts @@ -422,7 +422,7 @@ export class ComBattleHandler { const { original } = msg; // 原材料检查 - let originalQuality: number, originalSum: number; + let originalQuality: number, originalSum: number = 0; for(let {id, count} of original) { const goodInfo = getGoodById(id); if(!originalQuality) originalQuality = goodInfo.quality; @@ -450,7 +450,7 @@ export class ComBattleHandler { } // 添加寻宝币 original.push({ - id: CURRENCY_BY_TYPE[CURRENCY_TYPE.TREASURE_POINT], + id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.TREASURE_POINT), count: dicCompose.coinNum }); // 消耗藏宝图和寻宝币 @@ -467,6 +467,6 @@ export class ComBattleHandler { const goods = await handleReward(roleId, roleName, reward); - return resResult(STATUS.SUCCESS, { goods }); + return resResult(STATUS.SUCCESS, { ...goods, costGold }); } } diff --git a/shared/db/Item.ts b/shared/db/Item.ts index 2362db7f2..fcaf6ae4a 100644 --- a/shared/db/Item.ts +++ b/shared/db/Item.ts @@ -39,15 +39,17 @@ export default class Item extends BaseModel { } public static async decreaseItems(roleId: string, items: Array<{id: number, count: number}>, lean = true) { - let wrongItems = new Array<{id: number, count: number}>(); + let updateItems = new Array<{id: number, count: number}>(), hasError: boolean = false; for(let {id, count} of items) { const rec = await ItemModel.findOneAndUpdate({roleId, id, count: {$gte: count} },{ $inc: { count: -1 * count }}, {new: true}).lean(lean); - if(!rec) { - wrongItems.push({id, count}); break; + if(rec) { + updateItems.push({id, count}); + } else { + hasError = true; break; } } - if(wrongItems.length > 0) { // 数量不足 - for(let {id, count} of wrongItems) { + if(hasError) { // 数量不足 + for(let {id, count} of updateItems) { await ItemModel.findOneAndUpdate({roleId, id },{ $inc: { count }}, {new: true}).lean(lean); } return false