import BaseController from "../common/base.controller"; import {router} from "../decorators/router"; import {CardGroup} from "../models/CardGroup"; import {ZError} from "../common/ZError"; import {Card} from "../models/subdoc/Card"; export default class CardController extends BaseController { @router('post /api/:accountid/card_group/:heroid') async cardGroupList(req: any) { let {accountid, heroid} = req.params; let query: any = {accountid: accountid, deleted: false}; if (heroid) { query.heroid = parseInt(heroid); } let records = await CardGroup.find(query); let result: any = []; for (let record of records) { let data: any = record.toJson(); result.push(data); } return result; } @router('post /api/:accountid/card_group/save/:gid') async saveCardGroup(req: any) { let {accountid, gid, heroid, selected, cards} = req.params; if (!gid && !heroid) { throw new ZError(101, 'gid和heroid不能同时为空'); } if (selected && !heroid) { throw new ZError(102, '要将某卡组设为selected, 必须同时传heroid'); } let record; if (gid) { record = await CardGroup.findById(gid); } if (record && record.deleted) { throw new ZError(103, '卡组已被删除'); } if (!record) { record = new CardGroup(); record.accountid = accountid; record.isdefault = false; } if (selected) { await CardGroup.updateMany({accountid,heroid}, {$set: {"selected": false}}); record.selected = true; } if (heroid) { record.heroid = heroid; } if (cards) { let datas: Card[] = []; //TODO:: 设置真实的卡牌信息 for (let cardid of cards) { let card = new Card(); card.cardid = cardid; card.owned = true; card.usetype = 0; card.free = false; datas.push(card); } record.cards = datas; } await record.save(); return record.toJson(); } @router('post /api/:accountid/card_group/delete/:gid') async deleteCardGroup(req: any) { let {gid} = req.params; let record = await CardGroup.findById(gid); if (!record) { throw new ZError(101, '未找到记录'); } if (record && record.deleted) { throw new ZError(103, '卡组已被删除'); } record.deleted = true; record.deletetime = new Date(); await record.save(); return {}; } }