diff --git a/docs/api.md b/docs/api.md index 3ac6a01..828ae79 100644 --- a/docs/api.md +++ b/docs/api.md @@ -150,6 +150,8 @@ | 字段 | 说明 | | -------- | -------------------------------------- | +| heroid |英雄id | +| selected |是否设为选中 | | cards |[cardid] 卡牌id的数组 | 3. Response: JSON diff --git a/src/controllers/AccountController.ts b/src/controllers/AccountController.ts index bbc06d4..b8e3004 100644 --- a/src/controllers/AccountController.ts +++ b/src/controllers/AccountController.ts @@ -4,6 +4,7 @@ import {Account} from "../models/Account"; import {ZError} from "../common/ZError"; import {Hero} from "../models/subdoc/Hero"; import {Card} from "../models/subdoc/Card"; +import {CardGroup} from "../models/CardGroup"; export default class AccountController extends BaseController { @role('anon') @@ -81,5 +82,4 @@ export default class AccountController extends BaseController { } - } diff --git a/src/controllers/CardController.ts b/src/controllers/CardController.ts new file mode 100644 index 0000000..e7a860b --- /dev/null +++ b/src/controllers/CardController.ts @@ -0,0 +1,84 @@ +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 {}; + } +} diff --git a/src/models/CardGroup.ts b/src/models/CardGroup.ts index 42ad65e..2f48cf2 100644 --- a/src/models/CardGroup.ts +++ b/src/models/CardGroup.ts @@ -51,6 +51,7 @@ class CardGroupClass { public toJson() { return { + gid: this._id, heroid: this.heroid, selected: this.selected, isdefault: this.isdefault,