修改开始匹配的接口, 修改获取item的逻辑
This commit is contained in:
parent
55ae9859c2
commit
3f9641ad28
@ -497,7 +497,9 @@
|
||||
3. Response: JSON
|
||||
|
||||
```js
|
||||
|
||||
{
|
||||
ticket: '123123123' //匹配的时候须带上此ticket
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
@ -8,6 +8,7 @@ import { Hero } from '../models/subdoc/Hero'
|
||||
import { CardGroup } from '../models/CardGroup'
|
||||
import { BagItem, ItemType } from '../models/BagItem'
|
||||
import ItemCtrl from '../logic/ItemCtrl'
|
||||
import { ItemInfo } from '../logic/ItemDef'
|
||||
|
||||
export default class AccountController extends BaseController {
|
||||
@role('anon')
|
||||
@ -126,17 +127,8 @@ export default class AccountController extends BaseController {
|
||||
throw new ZError(12, 'not enough item')
|
||||
}
|
||||
record.count -= count
|
||||
let data = ItemCtrl.useItem(itemid, count)
|
||||
// let data = [{ itemid: 10001, itemnum: 1 }]
|
||||
for (let obj of data) {
|
||||
let item = (await BagItem.findOrCreate({
|
||||
accountid,
|
||||
itemid: obj.id,
|
||||
itemtype: obj.type
|
||||
})).doc
|
||||
item.count += obj.count
|
||||
await item.save()
|
||||
}
|
||||
let data: ItemInfo[] = ItemCtrl.useItem(itemid, count)
|
||||
await BagItem.addItems(accountid, data)
|
||||
await record.save()
|
||||
return data
|
||||
}
|
||||
|
@ -26,6 +26,6 @@ export default class MatchController extends BaseController {
|
||||
}
|
||||
record.count -= count
|
||||
await record.save()
|
||||
return {}
|
||||
return {ticket: '123123123123'}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,10 @@ import { RecordInfo, User } from '../models/User'
|
||||
import { error } from '../common/Debug'
|
||||
import { timeBeforeDay } from '../utils/time.util'
|
||||
import { BaseConst } from '../constants/BaseConst'
|
||||
import { MatchCfg } from '../cfg/parsers/MatchCfg'
|
||||
import ItemCtrl from '../logic/ItemCtrl'
|
||||
import { ItemInfo } from '../logic/ItemDef'
|
||||
import { BagItem } from '../models/BagItem'
|
||||
|
||||
export default class RecordController extends BaseController {
|
||||
@role('anon')
|
||||
@ -24,9 +28,13 @@ export default class RecordController extends BaseController {
|
||||
async upload(req: any) {
|
||||
let record = new GameRecord(req.params)
|
||||
await record.save()
|
||||
if (!record.season) {
|
||||
if (!record.matchid) {
|
||||
return
|
||||
}
|
||||
let cfg: MatchCfg = global.$cfg.get(BaseConst.MATCH).get(parseInt(record.matchid))
|
||||
if (cfg) {
|
||||
error(`match cfg not found: ${record.matchid}`)
|
||||
}
|
||||
const fc = global.$cfg.get(BaseConst.FORMULA)
|
||||
const scores = [
|
||||
fc.get(70043).number,
|
||||
@ -36,7 +44,8 @@ export default class RecordController extends BaseController {
|
||||
fc.get(70047).number,
|
||||
fc.get(70048).number
|
||||
]
|
||||
let seasonData = {}
|
||||
let seasonData: any = {}
|
||||
let itemData: any = {}
|
||||
for (let player of record.players) {
|
||||
if (player.accountid.startsWith('robot')) {
|
||||
continue
|
||||
@ -115,9 +124,21 @@ export default class RecordController extends BaseController {
|
||||
* end of 处理比赛统计信息
|
||||
*/
|
||||
await user.save()
|
||||
// @ts-ignore
|
||||
seasonData[player.playerid] = user.season_data
|
||||
/**
|
||||
* 获取胜利失败的物品
|
||||
*/
|
||||
let items: ItemInfo[] = []
|
||||
if (cfg) {
|
||||
if (record.winner == player.team && cfg.winget) {
|
||||
items = ItemCtrl.getItemsByInfo(cfg.winget);
|
||||
} else if (record.winner !== player.team && cfg.failget) {
|
||||
items = ItemCtrl.getItemsByInfo(cfg.failget);
|
||||
}
|
||||
}
|
||||
itemData[player.playerid] = items
|
||||
await BagItem.addItems(player.accountid, items)
|
||||
}
|
||||
return seasonData
|
||||
return {seasonData, itemData}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,8 @@ import { dbconn } from '../decorators/dbconn'
|
||||
import {
|
||||
getModelForClass,
|
||||
index,
|
||||
modelOptions, plugin,
|
||||
modelOptions,
|
||||
plugin,
|
||||
prop,
|
||||
Severity
|
||||
} from '@typegoose/typegoose'
|
||||
@ -16,6 +17,7 @@ import findOrCreate from 'mongoose-findorcreate'
|
||||
import { BaseConst } from '../constants/BaseConst'
|
||||
import { DropItemCfg } from '../cfg/parsers/DropItemCfg'
|
||||
import { ItemCardCfg } from '../cfg/parsers/ItemCardCfg'
|
||||
import { ItemInfo } from '../logic/ItemDef'
|
||||
|
||||
export enum ItemType {
|
||||
UNKNOW = 0, // 未知
|
||||
@ -71,7 +73,19 @@ class BagItemClass extends FindOrCreate {
|
||||
public position: number
|
||||
|
||||
@prop()
|
||||
public souce?: string
|
||||
public source?: string
|
||||
|
||||
public static async addItems(accountid: string, items: ItemInfo[]) {
|
||||
for (const item of items) {
|
||||
let record = (await BagItem.findOrCreate({
|
||||
accountid,
|
||||
itemid: item.id,
|
||||
itemtype: item.type
|
||||
})).doc
|
||||
record.count += item.count
|
||||
await record.save()
|
||||
}
|
||||
}
|
||||
|
||||
public toJson() {
|
||||
return {
|
||||
|
@ -63,6 +63,9 @@ class GameRecordClass extends Base<string>{
|
||||
@prop()
|
||||
public season: number;
|
||||
|
||||
@prop()
|
||||
public matchid: string;
|
||||
|
||||
|
||||
@prop({_id: false, type: () => [GamePlayer]})
|
||||
public players: GamePlayer[];
|
||||
@ -73,6 +76,7 @@ class GameRecordClass extends Base<string>{
|
||||
round: this.round,
|
||||
winner: this.winner,
|
||||
season: this.season,
|
||||
match: this.matchid,
|
||||
players: '',
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user