Merge branch 'master' of http://git.kingsome.cn/node/card_info_svr
This commit is contained in:
commit
54a7e1ee73
@ -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, '未找到记录')
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user