From 832c074acde3f0fa6325c4782c94796dea00adbb Mon Sep 17 00:00:00 2001 From: zhl Date: Fri, 22 Jan 2021 11:44:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E8=A7=A3=E5=8D=A1?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/CardController.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/controllers/CardController.ts b/src/controllers/CardController.ts index 5458a22..0399a06 100644 --- a/src/controllers/CardController.ts +++ b/src/controllers/CardController.ts @@ -5,6 +5,8 @@ import { ZError } from '../common/ZError' import { Card } from '../models/subdoc/Card' import { MoneyTypeConst } from '../constants/MoneyTypeConst' import { BaseConst } from '../constants/BaseConst' +import { BagItem, ItemType } from '../models/BagItem' +import ItemCtrl from '../logic/ItemCtrl' export default class CardController extends BaseController { @router('post /api/:accountid/card_group/:heroid') @@ -169,7 +171,28 @@ export default class CardController extends BaseController { @router('post /api/:accountid/card/destory') async destoryCard(req: any) { let { cardid, count, accountid } = req.params - - return {} + let record = await BagItem.findOne({ + accountid, + itemid: cardid, + itemtype: ItemType.CARD + }) + if (!record) { + throw new ZError(11, 'item not found') + } + if (record.count < count) { + throw new ZError(12, 'not enough item') + } + let data = ItemCtrl.decomposeItemCard(cardid, count) + for (let obj of data) { + let item = (await BagItem.findOrCreate({ + accountid, + itemid: obj.id, + itemtype: obj.type + })).doc + item.count += obj.count + await item.save() + } + await record.save() + return data } }