名将擂台:修改重启后对数据接续处理
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user