修改结算数据接口

This commit is contained in:
zhl 2021-01-18 19:38:52 +08:00
parent 4a0a1959e5
commit ce7d520660
5 changed files with 69 additions and 7 deletions

View File

@ -50,7 +50,6 @@
'card_scroll': 0, //抽卡卷轴 'card_scroll': 0, //抽卡卷轴
}, },
normal_stat: [0, 0, 0, 0] //匹配: 胜利场数, 失败场数, 平局场数, 掉线场数 normal_stat: [0, 0, 0, 0] //匹配: 胜利场数, 失败场数, 平局场数, 掉线场数
season_stat: [0, 0, 0, 0] // 当前赛季状态
season_rank: 1 // 当前赛季排名 season_rank: 1 // 当前赛季排名
match_score: 1000 //当前匹配分, 用于匹配时上传 match_score: 1000 //当前匹配分, 用于匹配时上传
season_score: 1000 // 排位分, 用于显示 season_score: 1000 // 排位分, 用于显示

View File

@ -64,7 +64,6 @@ export default class AccountController extends BaseController {
await account.save(); await account.save();
result.moneys = account.moneys; result.moneys = account.moneys;
result.normal_stat= account.normal_stat; result.normal_stat= account.normal_stat;
result.season_stat = account.season_stat;
result.extinfo = account.extinfo; result.extinfo = account.extinfo;
result.season_score = account.season_score; result.season_score = account.season_score;
result.match_score = account.getMatchScore(); result.match_score = account.getMatchScore();

View File

@ -24,7 +24,19 @@ export default class RecordController extends BaseController {
async upload(req: any) { async upload(req: any) {
let record = new GameRecord(req.params); let record = new GameRecord(req.params);
await record.save(); await record.save();
if (!record.season) {
return;
}
const fc = global.$cfg.get(BaseConst.FORMULA); const fc = global.$cfg.get(BaseConst.FORMULA);
const scores = [
fc.get(70043).number,
fc.get(70046).number,
fc.get(70044).number,
fc.get(70045).number,
fc.get(70047).number,
fc.get(70048).number
];
let seasonData = {};
for (let player of record.players) { for (let player of record.players) {
if (player.accountid.startsWith('robot')) { if (player.accountid.startsWith('robot')) {
continue; continue;
@ -34,6 +46,13 @@ export default class RecordController extends BaseController {
error(`save game record, account not found: ${player.accountid}`); error(`save game record, account not found: ${player.accountid}`);
continue; continue;
} }
user.season_score += player.scoreChange;
if (!user.season_data) {
user.season_data = new Map();
}
/**
* begin of season_records, 便10
*/
let data = new RecordInfo(); let data = new RecordInfo();
data.time = Date.now(); data.time = Date.now();
if (player.team == record.winner) { if (player.team == record.winner) {
@ -55,8 +74,44 @@ export default class RecordController extends BaseController {
records.remove(r); records.remove(r);
} }
} }
/**
* end of season_records, 便10
*/
/**
* begin of
*/
if (record.winner == player.team) {
user.season_data.inc('win', 1);
} else {
user.season_data.inc('loss', 1);
}
let statData = player.statdata;
let honorp = 0;
for(let key in statData) {
let numKey = +key;
if (numKey >= scores.length) {
continue;
}
// @ts-ignore
let val = Number(statData[key]);
honorp += val * scores[numKey];
user.season_data.inc(key + '_total', val * scores[numKey]);
if (user.season_data.has(key + '')) {
user.season_data.set(key + '', Math.max(user.season_data.get(key + ''), val))
} else {
user.season_data.set(key + '', val);
}
}
user.season_data.inc('honor_ap', honorp);
user.season_data.inc('mvp_ap', player.mvpscore);
/**
* end of
*/
await user.save(); await user.save();
// @ts-ignore
seasonData[player.playerid] = user.season_data;
} }
return {}; return seasonData;
} }
} }

View File

@ -25,11 +25,17 @@ class GamePlayer {
@prop() @prop()
public heroid: number; public heroid: number;
@prop() @prop()
public mvpscore: number;
@prop()
public cardgroup: string; public cardgroup: string;
@prop({ type: () => [Number] }) @prop({ type: () => [Number] })
public cards: [number]; public cards: [number];
@prop({type: mongoose.Schema.Types.Mixed}) @prop({type: mongoose.Schema.Types.Mixed})
public statdata: NewableFunction; public statdata: {};
@prop()
public score: number;
@prop()
public scoreChange: number;
} }
/** /**
* *
@ -48,6 +54,8 @@ class GameRecordClass extends Base<string>{
public round: number; public round: number;
@prop() @prop()
public winner: number; public winner: number;
@prop()
public mvp: string;
/** /**
* *
* @type {number} 0: 匹配, 1: 对应赛季 * @type {number} 0: 匹配, 1: 对应赛季
@ -55,6 +63,7 @@ class GameRecordClass extends Base<string>{
@prop() @prop()
public season: number; public season: number;
@prop({_id: false, type: () => [GamePlayer]}) @prop({_id: false, type: () => [GamePlayer]})
public players: GamePlayer[]; public players: GamePlayer[];

View File

@ -83,10 +83,10 @@ class UserClass extends FindOrCreate{
@prop({type: Number, default: [0,0,0,0]}) @prop({type: Number, default: [0,0,0,0]})
public normal_stat: number[]; public normal_stat: number[];
/** /**
* 当前赛季: 胜利场数, , , 线 *
*/ */
@prop({type: Number, default: [0,0,0,0]}) @prop({ type: Number, default: new Map() })
public season_stat: number[]; public season_data: Map<string, number>;
/** /**
* 10 * 10
* @type {RecordInfo[]} * @type {RecordInfo[]}