修改开始匹配的接口, 修改获取item的逻辑

This commit is contained in:
zhl 2021-01-22 13:17:38 +08:00
parent 55ae9859c2
commit 3f9641ad28
6 changed files with 52 additions and 19 deletions

View File

@ -497,7 +497,9 @@
3. Response: JSON
```js
{
ticket: '123123123' //匹配的时候须带上此ticket
}
```

View File

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

View File

@ -26,6 +26,6 @@ export default class MatchController extends BaseController {
}
record.count -= count
await record.save()
return {}
return {ticket: '123123123123'}
}
}

View File

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

View File

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

View File

@ -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: '',
}