From 7726278f6f6b87b8c648619b88942b431efec668 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 24 Mar 2021 15:48:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8D=A1=E7=BB=84=E6=97=B6,?= =?UTF-8?q?=20=E9=BB=98=E8=AE=A4=E5=8D=A1=E7=BB=84=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BB=8E=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/CardController.ts | 40 ++++++++++++++++++------------- src/dao/CardGroupDao.ts | 35 +++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/controllers/CardController.ts b/src/controllers/CardController.ts index 2da4ad6..971ed32 100644 --- a/src/controllers/CardController.ts +++ b/src/controllers/CardController.ts @@ -3,20 +3,21 @@ import { router } from '../decorators/router' import { CardGroup } from '../models/CardGroup' 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' import { error } from '../common/Debug' import { ItemFuncCfg } from '../cfg/parsers/ItemFuncCfg' -import { addHeroDefaultCardGroup } from '../dao/CardGroupDao' +import { + getDefaultCardGroupByHero +} from '../dao/CardGroupDao' import { ItemInfo } from '../logic/ItemDef' 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 } + let query: any = { accountid: accountid, deleted: false, isdefault: false } if (heroid) { query.heroid = parseInt(heroid) } @@ -26,30 +27,31 @@ export default class CardController extends BaseController { let data: any = record.toJson() result.push(data) } + if (heroid) { + result.push(getDefaultCardGroupByHero(heroid)) + } else { + let user = req.user + for(let [,hero] of user.heros) { + result.push(getDefaultCardGroupByHero(hero.heroid)) + } + } + return result } @router('get /svr/:accountid/group_info/:heroid/:gid') async cardGroupInfo(req: any) { let { accountid, heroid, gid } = req.params + heroid = +heroid let record + if (!gid || gid === 'default') { + return getDefaultCardGroupByHero(heroid) + } if (gid) { record = await CardGroup.findById(gid) } if (!record) { - if (!heroid || !accountid) { - throw new ZError(101, 'not enough params') - } - heroid = parseInt(heroid) - record = await CardGroup.findOne({ - accountid, - heroid, - deleted: false, - isdefault: true - }) - } - if (!record) { - throw new ZError(103, 'no card group found') + return getDefaultCardGroupByHero(heroid) } return record.toJson() } @@ -61,6 +63,9 @@ export default class CardController extends BaseController { if (!gid && !heroid) { throw new ZError(101, 'gid和heroid不能同时为空') } + if (gid === 'default') { + throw new ZError(106, '默认卡组不能修改') + } if (selected && !heroid) { throw new ZError(102, '要将某卡组设为selected, 必须同时传heroid') } @@ -113,6 +118,9 @@ export default class CardController extends BaseController { @router('post /api/:accountid/card_group/delete/:gid') async deleteCardGroup(req: any) { let { gid } = req.params + if (gid === 'default') { + throw new ZError(104, '默认卡组不能被删除') + } let record = await CardGroup.findById(gid) if (!record) { throw new ZError(101, '未找到记录') diff --git a/src/dao/CardGroupDao.ts b/src/dao/CardGroupDao.ts index dc8e0c2..8450fc8 100644 --- a/src/dao/CardGroupDao.ts +++ b/src/dao/CardGroupDao.ts @@ -21,8 +21,39 @@ export async function addHeroDefaultCardGroup(accountid: string, heroid: number, } cardgroup.accountid = accountid cardgroup.heroid = heroCfg.id - cardgroup.selected = false - cardgroup.isdefault = true + cardgroup.selected = true + cardgroup.isdefault = false cardgroup.cards = cards await cardgroup.save() } + +/** + * 获取英雄默认卡组 + * @param {number} heroid + * @return {{gid: string, cards: {free_expire: number, owned: boolean, cardid: number, count: number, time: number, free: boolean, usetype: number, ban: boolean}[], heroid: number, isdefault: boolean, selected: boolean}} + */ +export function getDefaultCardGroupByHero(heroid: number | string) { + heroid = +heroid + const heroCfg = global.$cfg.get(BaseConst.HERO).get(heroid) + let cardgroup = new CardGroup({}) + let cards: Card[] = [] + for (let i = 1; i <= 4; i++) { + const cardid = heroCfg[`follower${ i }id`] + const card = new Card() + card.cardid = cardid + card.owned = true + card.ban = false + card.usetype = 0 + card.free = true + card.free_expire = 0 + card.time = Date.now() + cards.push(card) + } + cardgroup.heroid = heroCfg.id + cardgroup.selected = false + cardgroup.isdefault = true + cardgroup.cards = cards + const data = cardgroup.toJson() + data.gid = 'default' + return data +}