获取卡组时, 默认卡组直接从配置文件读取
This commit is contained in:
parent
56ffd487d7
commit
7726278f6f
@ -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, '未找到记录')
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user