名将擂台:特殊处理已经定时任务处理

This commit is contained in:
luying
2022-07-19 17:14:11 +08:00
parent 05d8449ca3
commit 9a0cdf7204
5 changed files with 21 additions and 18 deletions
@@ -72,7 +72,7 @@ export class LadderHandler {
if(!checkRank(myRank, rank)) return resResult(STATUS.LADDER_RANK_ERROR);
let { status, isRobot, hisLadderData } = await getLadderOppStatus(ladderData, targetRoleId, myRank, rank);
if(status != LADDER_OPP_STATUS.BATTLE) {
await LadderMatchModel.unlock(targetRoleId);
await LadderMatchModel.unlock(serverId, targetRoleId);
let oppPlayers = await refreshLadderEnemies(ladderData);
return resResult(STATUS.SUCCESS, {
status, oppPlayers
@@ -87,7 +87,7 @@ export class LadderHandler {
}
if(refOppObj.challengeCnt + 1 > LADDER.LADDER_CHALLENGE_FREE_TIMES + refOppObj.buyCnt) {
await LadderMatchModel.unlock(targetRoleId);
await LadderMatchModel.unlock(serverId, targetRoleId);
return resResult(STATUS.LADDER_CHALLENGE_CNT_MAX);
}
update.challengeCnt = refOppObj.challengeCnt + 1;
@@ -212,7 +212,7 @@ export class LadderHandler {
await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess? 1: 2 } });
let historyRank = ladderData.historyRank;
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: historyRank > atkLadderMatch.rank? atkLadderMatch.rank: historyRank, locked: 0 });
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: (historyRank > rank || historyRank == 0)? rank: historyRank });
result.setLadderData(ladderData, rec);
// 获取奖励
@@ -375,7 +375,7 @@ export class LadderHandler {
let ladderData = await LadderMatchModel.findByRoleId(roleId);
if(!ladderData) return resResult(STATUS.LADDER_NOT_OPEN);
ladderData = await LadderMatchModel.updateByRoleId(roleId, { rank, historyRank: ladderData.historyRank < rank? ladderData.historyRank: rank });
ladderData = await LadderMatchModel.updateByRoleId(roleId, { rank, historyRank: (ladderData.historyRank > rank || ladderData.historyRank == 0)? rank: ladderData.historyRank });
await battleEndWhenChange(ladderData, false);
await LadderMatchModel.updateByRoleId(roleId, { refDaily: new Date(Date.now() - 86400000) });
+4 -4
View File
@@ -212,13 +212,13 @@ export async function getLadderOppStatus(ladderData: LadderMatchType, targetRole
if(curOppPlayer.isRobot) {
if(rank <= 3000) {
let hisLadderData = await LadderMatchRecModel.checkByRank(`robot${rank}`);
let hisLadderData = await LadderMatchRecModel.checkByRank(ladderData.serverId, `robot${rank}`);
if(hisLadderData) return { status: LADDER_OPP_STATUS.OPP_RANK_CHANGE };
}
return { status: LADDER_OPP_STATUS.BATTLE, isRobot: true };
} else {
let hisLadderData = await LadderMatchModel.lock(targetRoleId, rank);
let hisLadderData = await LadderMatchModel.lock(ladderData.serverId, targetRoleId, rank);
if(!hisLadderData) return { status: LADDER_OPP_STATUS.OPP_IS_LOCKED };
return { status: LADDER_OPP_STATUS.BATTLE, isRobot: false, hisLadderData };
@@ -279,8 +279,8 @@ function calculateDefCeByDefense(defense: LadderDefense) {
export async function ladderTimeout(battleCode: string, status: LADDER_STATUS) {
let rec = await LadderMatchRecModel.timeout(battleCode);
console.log('##### rec.defenseInfo', rec.defenseInfo, rec.defenseInfo.isRobot, rec.defenseInfo.roleId)
if(rec.defenseInfo && !rec.defenseInfo.isRobot) await LadderMatchModel.unlock(rec.defenseInfo.roleId);
// console.log('##### rec.defenseInfo', rec.defenseInfo, rec.defenseInfo.isRobot, rec.defenseInfo.roleId)
if(rec.defenseInfo && !rec.defenseInfo.isRobot) await LadderMatchModel.unlock(rec.serverId, rec.defenseInfo.roleId);
if(status == LADDER_STATUS.CHECK) {
await sendMessageToUserWithSuc(rec.roleId1, PUSH_ROUTE.LADDER_CHECK_STOP, { battleCode });
} else if (status == LADDER_STATUS.BATTLE) {
@@ -743,6 +743,9 @@ async function setTakeRankSnapshotSchedule(activityId: number, serverId: number,
// —————————————— 名将擂台 start —————————————— //
export async function setLadderCountDown(battleCode: string, time: number, status: LADDER_STATUS) {
if(scheduledJobs[`ladder${battleCode}`]) {
scheduledJobs[`ladder${battleCode}`].cancel();
}
let endTime = time + (status == LADDER_STATUS.CHECK? LADDER.LADDER_BATTLE_PREPARE_COUNTDOWN: LADDER.LADDER_BATTLE_COUNTDOWN) + LADDER_SERVER_GAP_TIME;
scheduleJob(`ladder${battleCode}`, endTime * 1000, async () => {
await ladderTimeout(battleCode, status);