🐞 fix(巅峰演武): 赛季切换后结算不再计入

This commit is contained in:
luying
2022-12-09 16:20:30 +08:00
parent 254e063774
commit fb42aae569
4 changed files with 22 additions and 13 deletions

View File

@@ -185,7 +185,7 @@ export class PvpHandler {
status: 0, status: 0,
warName: warInfo.gk_name, warName: warInfo.gk_name,
warType: warInfo.warType, warType: warInfo.warType,
record: { heroes, pos: curOpp.pos, oppRoleId } record: { heroes, pos: curOpp.pos, oppRoleId, pvpSeasonNum: seasonNum }
} }
}, true); }, true);
await checkTask(serverId, roleId, sid, TASK_TYPE.PVP); await checkTask(serverId, roleId, sid, TASK_TYPE.PVP);
@@ -235,7 +235,7 @@ export class PvpHandler {
return resResult(STATUS.BATTLE_STATUS_WRONG); return resResult(STATUS.BATTLE_STATUS_WRONG);
} }
let { record: { heroes: dbHeroes, oppRoleId, pos }, createdAt } = BattleRecord; let { record: { heroes: dbHeroes, oppRoleId, pos, pvpSeasonNum }, createdAt } = BattleRecord;
let flag = 1; // 对比hero信息 let flag = 1; // 对比hero信息
for (let { hid } of myHeroes) { for (let { hid } of myHeroes) {
@@ -260,29 +260,32 @@ export class PvpHandler {
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND); if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, serverId); const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, serverId);
// 战报记录
await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds() });
let seasonNum: number = this.app.get('pvpSeasonNum'); let seasonNum: number = this.app.get('pvpSeasonNum');
// 战报记录
await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds(), timeout: seasonNum != pvpSeasonNum });
// 更新battleRecord // 更新battleRecord
await BattleRecordModel.updateBattleRecordByCode(battleCode, { await BattleRecordModel.updateBattleRecordByCode(battleCode, {
$set: { status: isSuccess ? 1 : 2 } $set: { status: isSuccess ? 1 : 2 }
}, true); }, true);
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update); if(seasonNum == pvpSeasonNum) {
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update);
}
let result = new PvpDataReturn(); // 返回对象 let result = new PvpDataReturn(); // 返回对象
result.setPvpDefense(pvpDefense); result.setPvpDefense(pvpDefense);
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum); let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
result.setOppPlayers(oppPlayersReturn); result.setOppPlayers(oppPlayersReturn);
// 加入排行榜
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum }); if(seasonNum == pvpSeasonNum) {
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role); // 加入排行榜
let myRank = await r.getMyRank({ roleId }); let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum: pvpSeasonNum });
result.setMyRank(myRank); await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
let myRank = await r.getMyRank({ roleId });
result.setMyRank(myRank);
}
await checkTaskInPvpEnd(serverId, roleId, sid, isSuccess, pvpDefense.heroScores, pvpDefense.seasonWinNum); await checkTaskInPvpEnd(serverId, roleId, sid, isSuccess, pvpDefense.heroScores, pvpDefense.seasonWinNum);
if(hisWinStreakNum < pvpDefense.hisWinStreakNum) { if(hisWinStreakNum < pvpDefense.hisWinStreakNum) {

View File

@@ -35,6 +35,8 @@ class Record {
bossDamage?: number; // boss本造成的伤害 bossDamage?: number; // boss本造成的伤害
@prop({ required: false }) @prop({ required: false })
encourageCnt?: number; encourageCnt?: number;
@prop({ required: false })
pvpSeasonNum?: number;
} }
@index({ roleId: 1, battleId: 1 }) @index({ roleId: 1, battleId: 1 })

View File

@@ -134,8 +134,10 @@ export default class PvpRecord extends BaseModel {
@prop({ required: true, default: 0 }) @prop({ required: true, default: 0 })
createTime: number; createTime: number;
@prop({ required: true, default: 0 })
timeout: boolean;
public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number }) { public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number, timeout?: boolean }) {
await this.delPvpRecords(); await this.delPvpRecords();
let code = genCode(6); let code = genCode(6);
const result = await PvpRecordModel.findOneAndUpdate({ code }, param, { new: true, upsert: true }).lean(); const result = await PvpRecordModel.findOneAndUpdate({ code }, param, { new: true, upsert: true }).lean();

View File

@@ -62,6 +62,7 @@ export class HeroParam {
ePlace: EPlace[]; // 武将装备引用数组 ePlace: EPlace[]; // 武将装备引用数组
artifact: number = 0; artifact: number = 0;
subHid: number = 0;
talent: Talent[] = []; talent: Talent[] = [];
usedTalentPoint: number = 0; usedTalentPoint: number = 0;
totalTalentPoint: number = 0; totalTalentPoint: number = 0;
@@ -96,6 +97,7 @@ export class HeroParam {
} }
this.ePlace = hero.ePlace; this.ePlace = hero.ePlace;
this.artifact = hero.artifact; this.artifact = hero.artifact;
this.subHid = hero.subHid;
} }
} }