将分解卡改为同时分解多个卡

This commit is contained in:
zhl 2021-01-25 21:01:57 +08:00
parent 6b1b9f7f58
commit 26f59b13b2
3 changed files with 43 additions and 25 deletions

View File

@ -1,5 +1,5 @@
{
"redis": "redis://127.0.0.1:6379/15",
"db_main": "mongodb://192.168.100.24/card-development",
"db_main": "mongodb://127.0.0.1/card-development",
"port": 2987
}

View File

@ -431,10 +431,10 @@
> POST参数
| 字段 | 说明 |
| -------- | -------------------------------------- |
| cardid |卡牌id |
| count |使用数量 |
| 字段 | | 说明 |
| -------- |--| -------------------------------------- |
|cards |cardid |卡牌id |
| |count |使用数量 |
3. Response: JSON
@ -443,7 +443,6 @@
{
"id": 0, //道具id
"count": 0, //道具数量
"type": 1 //道具类型
},
]

View File

@ -231,30 +231,49 @@ export default class CardController extends BaseController {
}
@router('post /api/:accountid/card/destory')
async destoryCard(req: any) {
let { cardid, count, accountid } = req.params
async destoryCards(req: any) {
let {cards, accountid} = req.params
let resultMap: Map<number, number> = new Map()
let typeMap: Map<number, number> = new Map()
let records: any[] = []
for (let card of cards) {
let record = await BagItem.findOne({
accountid,
itemid: cardid,
itemid: card.cardid,
itemtype: ItemType.CARD
})
if (!record) {
throw new ZError(11, 'item not found')
}
if (record.count < count) {
if (record.count < card.count) {
throw new ZError(12, 'not enough item')
}
let data = ItemCtrl.decomposeItemCard(cardid, count)
record.count -= card.count
let data = ItemCtrl.decomposeItemCard(card.cardid, card.count)
for (let obj of data) {
resultMap.inc(obj.id, obj.count)
typeMap.set(obj.id, obj.type)
}
records.push(record)
}
let result: any = []
for (let [id, count] of resultMap) {
let item = (await BagItem.findOrCreate({
accountid,
itemid: obj.id,
itemtype: obj.type
itemid: id,
itemtype: typeMap.get(id)
})).doc
item.count += obj.count
item.count += count
result.push({
id, count
})
await item.save()
}
for (let record of records) {
await record.save()
return data
}
return result
}
}