diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index 9f2e936d4..e1fb42881 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -24,6 +24,7 @@ const SETTLE_DIFF = 29 * 60; const LIMIT_NUM = 1000; var seasonJobId; var warJobId; +var seasonEndTimeJobId; export async function init() { let seasonEndTime = 0; let systemConfig = await SystemConfigModel.findSystemConfig(); @@ -146,15 +147,18 @@ export async function resetPvpWarId() { } async function setNextPvpTime(notSetNext: boolean) { - if (!!notSetNext) { - let systemConfig = await SystemConfigModel.findSystemConfig(); - return systemConfig; + let systemConfig = await SystemConfigModel.findSystemConfig(); + let seasonEndTime = (PVP.PVP_SEASON_DAYS + 1) * PER_DAY + getTodayZeroPoint(); + if (!notSetNext) { + return { seasonEndTime, seasonNum: systemConfig.seasonNum + 1 }; } - let seasonEndTime = PVP.PVP_SEASON_DAYS * PER_DAY + getTodayZeroPoint(); - let systemConfig = await SystemConfigModel.updateSeason(seasonEndTime); - let settleTime = (seasonEndTime - SETTLE_DIFF)* PER_SECOND; - seasonJobId = scheduleJob(settleTime, setPvpSeasonResult, { name: 'setPvpSeasonResult' }); - return systemConfig; + seasonEndTimeJobId = scheduleJob(systemConfig.seasonEndTime , async function () { + seasonEndTime = PVP.PVP_SEASON_DAYS * PER_DAY + getTodayZeroPoint(); + systemConfig = await SystemConfigModel.updateSeason(seasonEndTime); + let settleTime = (seasonEndTime - SETTLE_DIFF)* PER_SECOND; + seasonJobId = scheduleJob(settleTime, setPvpSeasonResult, { name: 'setPvpSeasonResult' }); + }); + return { seasonEndTime, seasonNum: systemConfig.seasonNum + 1 }; } function getScore(arr, score) { @@ -171,7 +175,9 @@ export async function resetPvpSeasonTime(hour: number) { } let seasonEndTime = 0; let seasonNum = 1; - + if (!!seasonEndTimeJobId) { + seasonEndTimeJobId.cancel(); + } let systemConfig = await SystemConfigModel.findSystemConfig(); if (!systemConfig) { let warIds = getPvpGkWarIds(); @@ -184,6 +190,7 @@ export async function resetPvpSeasonTime(hour: number) { await SystemConfigModel.updateSystemConfig({ seasonEndTime, seasonNum: seasonNum}); } let settleTime = (seasonEndTime - SETTLE_DIFF)* PER_SECOND; + console.log('settleTime = ' + settleTime) seasonJobId = scheduleJob(settleTime, setPvpSeasonResult, { name: 'setPvpSeasonResult' }); return { seasonEndTime, seasonNum }; }