巅峰演武:赛季id在排行榜错误

This commit is contained in:
luying
2022-10-19 13:53:01 +08:00
parent 279e8c7554
commit 13650db78f
3 changed files with 14 additions and 15 deletions
@@ -38,17 +38,17 @@ export class PvpHandler {
async getData(msg: {}, session: BackendSession) { async getData(msg: {}, session: BackendSession) {
let roleId = session.get('roleId'); 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 seasonNum: number = this.app.get('pvpSeasonNum');
let seasonStartTime: number = this.app.get('pvpSeasonStartTime'); let seasonStartTime: number = this.app.get('pvpSeasonStartTime');
let seasonEndTime: number = this.app.get('pvpSeasonEndTime'); let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
let seasonRewardTime: number = this.app.get('pvpSeasonRewardTime'); 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 update: pvpUpdateInter = { };
let result = new PvpDataReturn(); // 返回对象 let result = new PvpDataReturn(); // 返回对象
+2 -2
View File
@@ -625,13 +625,13 @@ async function sendUnreceivedPvpBox(roleId: string, seasonNum: number, seasonWin
async function resetPvpScores(pvpDefense: PvpDefenseType, pvpSeasonResult: PvpSeasonResultType) { async function resetPvpScores(pvpDefense: PvpDefenseType, pvpSeasonResult: PvpSeasonResultType) {
let { roleId, attack } = pvpDefense; let { roleId, attack } = pvpDefense;
let { newHeroScores, newScore } = pvpSeasonResult; let { newHeroScores, newScore, seasonNum } = pvpSeasonResult;
let initCount = await getVipPvpChallengeMaxCnt(roleId) let initCount = await getVipPvpChallengeMaxCnt(roleId)
let newAttack = <Attack>calLineupScore(attack, newHeroScores); let newAttack = <Attack>calLineupScore(attack, newHeroScores);
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { 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, challengeCnt: initCount, challengeRefTime: 0, winStreakNum: 0,
seasonWinNum: 0, receivedBox: [] seasonWinNum: 0, receivedBox: []
}); });
+5 -6
View File
@@ -2,8 +2,6 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose'; import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
import Role, { } from './Role'; import Role, { } from './Role';
import { Defense, Attack, LineupCe, OppPlayer, HeroScore, } from '../domain/battleField/pvp'; import { Defense, Attack, LineupCe, OppPlayer, HeroScore, } from '../domain/battleField/pvp';
import { CounterModel } from './Counter';
import { COUNTER } from '../consts';
import { PVP } from '../pubUtils/dicParam'; import { PVP } from '../pubUtils/dicParam';
@index({ roleId: 1 }) @index({ roleId: 1 })
@@ -61,6 +59,8 @@ export default class PvpDefense extends BaseModel {
seasonNum: number; seasonNum: number;
@prop({ required: true, default: 0 }) @prop({ required: true, default: 0 })
seasonWinNum: number; // 本赛季胜利次数 seasonWinNum: number; // 本赛季胜利次数
@prop({ required: true, default: 1 })
rankSeasonNum: number;
@prop({ required: true, default: 0 }) @prop({ required: true, default: 0 })
defenseScoreCnt: number; defenseScoreCnt: number;
@@ -80,11 +80,10 @@ export default class PvpDefense extends BaseModel {
return result; return result;
} }
public static async createPvpDefense(params: pvpUpdateInter) { public static async createPvpDefense(seasonNum: number, params: pvpUpdateInter) {
let seasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
const doc = new PvpDefenseModel(); 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 }) const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true })
.populate('role') .populate('role')
.lean(); .lean();
@@ -176,7 +175,7 @@ export default class PvpDefense extends BaseModel {
public static async getRank(seasonNum: number, page = 1, limit = 1000) { public static async getRank(seasonNum: number, page = 1, limit = 1000) {
let sortBy = { score: -1, updatedAt: 1 }; 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') .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 }); .sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ getters: true, virtuals: true });
return ranks; return ranks;