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 } }