获取卡组时, 默认卡组直接从配置文件读取

This commit is contained in:
zhl 2021-03-24 15:48:56 +08:00
parent 56ffd487d7
commit 7726278f6f
2 changed files with 57 additions and 18 deletions

View File

@ -3,20 +3,21 @@ import { router } from '../decorators/router'
import { CardGroup } from '../models/CardGroup' import { CardGroup } from '../models/CardGroup'
import { ZError } from '../common/ZError' import { ZError } from '../common/ZError'
import { Card } from '../models/subdoc/Card' import { Card } from '../models/subdoc/Card'
import { MoneyTypeConst } from '../constants/MoneyTypeConst'
import { BaseConst } from '../constants/BaseConst' import { BaseConst } from '../constants/BaseConst'
import { BagItem, ItemType } from '../models/BagItem' import { BagItem, ItemType } from '../models/BagItem'
import ItemCtrl from '../logic/ItemCtrl' import ItemCtrl from '../logic/ItemCtrl'
import { error } from '../common/Debug' import { error } from '../common/Debug'
import { ItemFuncCfg } from '../cfg/parsers/ItemFuncCfg' import { ItemFuncCfg } from '../cfg/parsers/ItemFuncCfg'
import { addHeroDefaultCardGroup } from '../dao/CardGroupDao' import {
getDefaultCardGroupByHero
} from '../dao/CardGroupDao'
import { ItemInfo } from '../logic/ItemDef' import { ItemInfo } from '../logic/ItemDef'
export default class CardController extends BaseController { export default class CardController extends BaseController {
@router('post /api/:accountid/card_group/:heroid') @router('post /api/:accountid/card_group/:heroid')
async cardGroupList(req: any) { async cardGroupList(req: any) {
let { accountid, heroid } = req.params let { accountid, heroid } = req.params
let query: any = { accountid: accountid, deleted: false } let query: any = { accountid: accountid, deleted: false, isdefault: false }
if (heroid) { if (heroid) {
query.heroid = parseInt(heroid) query.heroid = parseInt(heroid)
} }
@ -26,30 +27,31 @@ export default class CardController extends BaseController {
let data: any = record.toJson() let data: any = record.toJson()
result.push(data) 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 return result
} }
@router('get /svr/:accountid/group_info/:heroid/:gid') @router('get /svr/:accountid/group_info/:heroid/:gid')
async cardGroupInfo(req: any) { async cardGroupInfo(req: any) {
let { accountid, heroid, gid } = req.params let { accountid, heroid, gid } = req.params
heroid = +heroid
let record let record
if (!gid || gid === 'default') {
return getDefaultCardGroupByHero(heroid)
}
if (gid) { if (gid) {
record = await CardGroup.findById(gid) record = await CardGroup.findById(gid)
} }
if (!record) { if (!record) {
if (!heroid || !accountid) { return getDefaultCardGroupByHero(heroid)
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 record.toJson() return record.toJson()
} }
@ -61,6 +63,9 @@ export default class CardController extends BaseController {
if (!gid && !heroid) { if (!gid && !heroid) {
throw new ZError(101, 'gid和heroid不能同时为空') throw new ZError(101, 'gid和heroid不能同时为空')
} }
if (gid === 'default') {
throw new ZError(106, '默认卡组不能修改')
}
if (selected && !heroid) { if (selected && !heroid) {
throw new ZError(102, '要将某卡组设为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') @router('post /api/:accountid/card_group/delete/:gid')
async deleteCardGroup(req: any) { async deleteCardGroup(req: any) {
let { gid } = req.params let { gid } = req.params
if (gid === 'default') {
throw new ZError(104, '默认卡组不能被删除')
}
let record = await CardGroup.findById(gid) let record = await CardGroup.findById(gid)
if (!record) { if (!record) {
throw new ZError(101, '未找到记录') throw new ZError(101, '未找到记录')

View File

@ -21,8 +21,39 @@ export async function addHeroDefaultCardGroup(accountid: string, heroid: number,
} }
cardgroup.accountid = accountid cardgroup.accountid = accountid
cardgroup.heroid = heroCfg.id cardgroup.heroid = heroCfg.id
cardgroup.selected = false cardgroup.selected = true
cardgroup.isdefault = true cardgroup.isdefault = false
cardgroup.cards = cards cardgroup.cards = cards
await cardgroup.save() 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
}