This commit is contained in:
yuexin 2021-03-24 17:05:08 +08:00
commit 54a7e1ee73
2 changed files with 57 additions and 18 deletions

View File

@ -3,53 +3,55 @@ 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)
}
let records = await CardGroup.find(query)
let result: any = []
if (heroid) {
result.push(getDefaultCardGroupByHero(heroid))
} else {
let user = req.user
for(let [,hero] of user.heros) {
result.push(getDefaultCardGroupByHero(hero.heroid))
}
}
for (let record of records) {
let data: any = record.toJson()
result.push(data)
}
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, '未找到记录')

View File

@ -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
}