巅峰演武:赛季id在排行榜错误
This commit is contained in:
@@ -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(); // 返回对象
|
||||||
|
|||||||
@@ -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: []
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user