diff --git a/game-server/app/servers/battle/handler/ladderHandler.ts b/game-server/app/servers/battle/handler/ladderHandler.ts index 9ba848df0..0f20e7329 100644 --- a/game-server/app/servers/battle/handler/ladderHandler.ts +++ b/game-server/app/servers/battle/handler/ladderHandler.ts @@ -198,8 +198,7 @@ export class LadderHandler { let { isChange, atkLadderMatch, defLadderMatch, endTime } = await LadderMatchModel.changeRank(isSuccess, rec.attackInfo, rec.defenseInfo); if(isChange) { - let oppPlayers = await battleEndWhenChange(atkLadderMatch, true); - await battleEndWhenChange(defLadderMatch, true); + let oppPlayers = await battleEndWhenChange(atkLadderMatch, defLadderMatch, true); result.setOppPlayers(oppPlayers); rec = await LadderMatchRecModel.battleEnd(battleCode, isSuccess, endTime, atkLadderMatch.rank, defLadderMatch? defLadderMatch.rank: rec.attackInfo.oldRank); if(atkLadderMatch.rank == 1) { @@ -386,8 +385,7 @@ export class LadderHandler { atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: { rank, oldRank: atkLadderMatch.rank, historyRank: rank } }, { new: true }).lean(); } - await battleEndWhenChange(atkLadderMatch, true); - await battleEndWhenChange(defLadderMatch, true); + await battleEndWhenChange(atkLadderMatch, defLadderMatch, true); return resResult(STATUS.SUCCESS); } diff --git a/game-server/app/services/ladderService.ts b/game-server/app/services/ladderService.ts index 7eb143e76..214e7c7d2 100644 --- a/game-server/app/services/ladderService.ts +++ b/game-server/app/services/ladderService.ts @@ -299,16 +299,25 @@ export async function ladderTimeout(battleCode: string, status: LADDER_STATUS) { * @param isAtk * @returns */ -export async function battleEndWhenChange(ladderMatch: LadderMatchType, needRefresh: boolean) { - if(!ladderMatch) return; +export async function battleEndWhenChange(atkLadderMatch: LadderMatchType, defLadderMatch: LadderMatchType, needRefresh: boolean) { + await updateLadderRedis(atkLadderMatch); + await updateLadderRedis(defLadderMatch); + await refreshOpp(defLadderMatch, needRefresh); + return await refreshOpp(atkLadderMatch, needRefresh); +} +async function updateLadderRedis(ladderMatch: LadderMatchType) { + if(!ladderMatch) return; // 更新redis if(ladderMatch.rank > 0 && ladderMatch.rank < 3001) { let r = new Rank(REDIS_KEY.LADDER, { serverId: ladderMatch.serverId }); await r.setRankWithRoleInfo(ladderMatch.roleId, ladderMatch.rank, 0); await saveLadderDefCeByData(ladderMatch.roleId, ladderMatch); } +} +async function refreshOpp(ladderMatch: LadderMatchType, needRefresh: boolean) { + if(!ladderMatch) return [] // 刷新对手 if(needRefresh) { let oppPlayers = await refreshLadderEnemies(ladderMatch);