巅峰演武:赛季id在排行榜错误
This commit is contained in:
@@ -38,17 +38,17 @@ export class PvpHandler {
|
||||
async getData(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
if(!pvpDefense) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
pvpDefense = await PvpDefenseModel.createPvpDefense({ serverId: role.serverId, roleId: role.roleId, roleName: role.roleName, role: role._id });
|
||||
}
|
||||
// 如果没有发过,将上赛季的奖励发下
|
||||
pvpDefense = await sendLastSeasonRewardIfNotSent(pvpDefense);
|
||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||
let seasonStartTime: number = this.app.get('pvpSeasonStartTime');
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let seasonRewardTime: number = this.app.get('pvpSeasonRewardTime');
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
|
||||
if(!pvpDefense) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
pvpDefense = await PvpDefenseModel.createPvpDefense(seasonNum, { serverId: role.serverId, roleId: role.roleId, roleName: role.roleName, role: role._id });
|
||||
}
|
||||
// 如果没有发过,将上赛季的奖励发下
|
||||
pvpDefense = await sendLastSeasonRewardIfNotSent(pvpDefense);
|
||||
|
||||
let update: pvpUpdateInter = { };
|
||||
let result = new PvpDataReturn(); // 返回对象
|
||||
|
||||
@@ -625,13 +625,13 @@ async function sendUnreceivedPvpBox(roleId: string, seasonNum: number, seasonWin
|
||||
|
||||
async function resetPvpScores(pvpDefense: PvpDefenseType, pvpSeasonResult: PvpSeasonResultType) {
|
||||
let { roleId, attack } = pvpDefense;
|
||||
let { newHeroScores, newScore } = pvpSeasonResult;
|
||||
let { newHeroScores, newScore, seasonNum } = pvpSeasonResult;
|
||||
let initCount = await getVipPvpChallengeMaxCnt(roleId)
|
||||
|
||||
let newAttack = <Attack>calLineupScore(attack, newHeroScores);
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, {
|
||||
heroScores: newHeroScores, score: newScore, attack: newAttack, defense: null, hasDefense: false,
|
||||
heroScores: newHeroScores, score: newScore, attack: newAttack, defense: null, hasDefense: false, rankSeasonNum: seasonNum + 1,
|
||||
challengeCnt: initCount, challengeRefTime: 0, winStreakNum: 0,
|
||||
seasonWinNum: 0, receivedBox: []
|
||||
});
|
||||
|
||||
@@ -2,8 +2,6 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
|
||||
import Role, { } from './Role';
|
||||
import { Defense, Attack, LineupCe, OppPlayer, HeroScore, } from '../domain/battleField/pvp';
|
||||
import { CounterModel } from './Counter';
|
||||
import { COUNTER } from '../consts';
|
||||
import { PVP } from '../pubUtils/dicParam';
|
||||
|
||||
@index({ roleId: 1 })
|
||||
@@ -61,6 +59,8 @@ export default class PvpDefense extends BaseModel {
|
||||
seasonNum: number;
|
||||
@prop({ required: true, default: 0 })
|
||||
seasonWinNum: number; // 本赛季胜利次数
|
||||
@prop({ required: true, default: 1 })
|
||||
rankSeasonNum: number;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
defenseScoreCnt: number;
|
||||
@@ -80,11 +80,10 @@ export default class PvpDefense extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async createPvpDefense(params: pvpUpdateInter) {
|
||||
let seasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
|
||||
public static async createPvpDefense(seasonNum: number, params: pvpUpdateInter) {
|
||||
const doc = new PvpDefenseModel();
|
||||
|
||||
const update = Object.assign(doc.toJSON(), params, { seasonNum, challengeCnt: PVP.PVP_CHALLENGE_COUNTS });
|
||||
const update = Object.assign(doc.toJSON(), params, { rankSeasonNum: seasonNum, challengeCnt: PVP.PVP_CHALLENGE_COUNTS });
|
||||
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true })
|
||||
.populate('role')
|
||||
.lean();
|
||||
@@ -176,7 +175,7 @@ export default class PvpDefense extends BaseModel {
|
||||
|
||||
public static async getRank(seasonNum: number, page = 1, limit = 1000) {
|
||||
let sortBy = { score: -1, updatedAt: 1 };
|
||||
const ranks: PvpDefenseType[] = await PvpDefenseModel.find({seasonNum, score: { $gt: 0 }}).select('roleId role score updatedAt')
|
||||
const ranks: PvpDefenseType[] = await PvpDefenseModel.find({rankSeasonNum: seasonNum, score: { $gt: 0 }}).select('roleId role score updatedAt')
|
||||
.populate('role', 'roleId roleName head frame spine heads frames spines title lv vLv updatedAt')
|
||||
.sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ getters: true, virtuals: true });
|
||||
return ranks;
|
||||
|
||||
Reference in New Issue
Block a user