名将擂台:修改重启后对数据接续处理

This commit is contained in:
luying
2022-07-20 19:19:27 +08:00
parent 1157269264
commit b20f9f4abf
4 changed files with 48 additions and 36 deletions

View File

@@ -116,7 +116,7 @@ export class LadderHandler {
let roleId = session.get('roleId');
let { battleCode } = msg;
// 更新ladderMatchRec
let rec = await LadderMatchRecModel.giveup(battleCode);
let rec = await LadderMatchRecModel.giveup(roleId, battleCode);
if(rec) {
pinus.app.rpc.systimer.systimerRemote.cancelLadderCountDown.broadcast(rec.battleCode);
if(rec.defenseInfo && !rec.defenseInfo.isRobot) await LadderMatchModel.unlock(rec.serverId, rec.defenseInfo.roleId);
@@ -374,27 +374,19 @@ export class LadderHandler {
let roleId = session.get('roleId');
let ladderData = await LadderMatchModel.findByRoleId(roleId);
if(!ladderData || !ladderData.defense) return resResult(STATUS.LADDER_NOT_OPEN);
let atkLadderMatch = await LadderMatchModel.findByRoleId(roleId);
if(!atkLadderMatch || !atkLadderMatch.defense) return resResult(STATUS.LADDER_NOT_OPEN);
let defenseInfo: { isRobot: boolean, roleId: string, oldRank: number };
let hisLadderData = await LadderMatchModel.findByRank(rank);
if(hisLadderData) {
defenseInfo = { isRobot: false, roleId: hisLadderData.roleId, oldRank: hisLadderData.rank };
} else {
defenseInfo = { isRobot: true, roleId: `robot${rank}`, oldRank: rank };
let defLadderMatch = await LadderMatchModel.findByRank(rank);
if(defLadderMatch) {
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: { rank, oldRank: atkLadderMatch.rank, historyRank: rank } }, { new: true }).lean();
defLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: defLadderMatch.roleId }, { $set: { rank: atkLadderMatch.rank, oldRank: defLadderMatch.rank } }, { new: true }).lean();
} else {
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: { rank, oldRank: atkLadderMatch.rank, historyRank: rank } }, { new: true }).lean();
}
let result = new LadderDataReturn();
// 交换双方排名, transaction
let { isChange, atkLadderMatch, defLadderMatch } = await LadderMatchModel.changeRank(true, { roleId }, defenseInfo);
if(isChange) {
let oppPlayers = await battleEndWhenChange(atkLadderMatch, true);
await battleEndWhenChange(defLadderMatch, true);
result.setOppPlayers(oppPlayers);
}
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: rank });
await battleEndWhenChange(atkLadderMatch, true);
await battleEndWhenChange(defLadderMatch, true);
return resResult(STATUS.SUCCESS);
}