From 5641d8fdfa24b8a80bb6c0b79ba2ccfdfd9c77ab Mon Sep 17 00:00:00 2001 From: luying Date: Mon, 10 Jan 2022 18:13:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E7=99=BD=E5=90=8D=E5=8D=95bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/gm/handler/gmServerHandler.ts | 3 +- game-server/app/services/gmService.ts | 37 +++++++++++-------- game-server/app/services/timeTaskService.ts | 6 ++- shared/db/Serverlist.ts | 2 +- web-server/app/middleware/checkMainten.ts | 4 +- web-server/app/service/Auth.ts | 1 - web-server/app/service/Utils.ts | 2 - web-server/package.json | 3 +- 8 files changed, 34 insertions(+), 24 deletions(-) diff --git a/game-server/app/servers/gm/handler/gmServerHandler.ts b/game-server/app/servers/gm/handler/gmServerHandler.ts index 6c60b6483..1cadd7109 100644 --- a/game-server/app/servers/gm/handler/gmServerHandler.ts +++ b/game-server/app/servers/gm/handler/gmServerHandler.ts @@ -64,6 +64,7 @@ export class GmHandler { async startMaintenance(msg: { id: number, startTime: number, endTime: number, hasNotify: boolean }, session: BackendSession) { const { id, startTime, endTime, hasNotify } = msg; if(!id || !isNumber(startTime) || !isNumber(endTime)) return resResult(STATUS.WRONG_PARMS); + if(endTime < nowSeconds()) return resResult(STATUS.WRONG_PARMS, '结束时间不能比现在早'); const uid = session.get('uid'); let newMaintenance: Maintenance = { batchCode: genCode(10), startTime, endTime, hasNotify, isOpen: true } let server = await ServerlistModel.updateByServerId(id, { maintenance: newMaintenance }); @@ -76,10 +77,10 @@ export class GmHandler { async startRegionMaintenance(msg: { startTime: number, endTime: number, hasNotify: boolean }, session: BackendSession) { const { startTime, endTime, hasNotify } = msg; if(!isNumber(startTime) || !isNumber(endTime)) return resResult(STATUS.WRONG_PARMS); + if(endTime < nowSeconds()) return resResult(STATUS.WRONG_PARMS, '结束时间不能比现在早'); const uid = session.get('uid'); let newMaintenance: Maintenance = { batchCode: genCode(10), startTime, endTime, hasNotify, isOpen: true } let servers = await ServerlistModel.findByEnv(this.app.get('env')); - console.log('*********servers', servers) await ServerlistModel.updateByServerIds(servers.map(server => server.id), { maintenance: newMaintenance }); await pinus.app.rpc.systimer.systimerRemote.initMaintenance.broadcast(servers); diff --git a/game-server/app/services/gmService.ts b/game-server/app/services/gmService.ts index 5906d45f3..6add1c61a 100644 --- a/game-server/app/services/gmService.ts +++ b/game-server/app/services/gmService.ts @@ -62,26 +62,33 @@ async function startMarquee(marquee: MarqueeType, startJob?: Job) { startJob = undefined; } } else { - await pushMarqueeMsg(msgDatas); - console.log('***', marquee.interval) - let secondsJob = scheduleJob(`setSeconds${marquee.code}`, `*/${marquee.interval} * * * * *`, async () => { - console.log(`*****setSeconds${marquee.code}****`) + if(marquee.endTime > nowSeconds()) { await pushMarqueeMsg(msgDatas); - }); - let endJob = scheduleJob(`end${marquee.code}`, marquee.endTime * 1000, async () => { + console.log('***', marquee.interval) + let secondsJob = scheduleJob(`setSeconds${marquee.code}`, `*/${marquee.interval} * * * * *`, async () => { + console.log(`*****setSeconds${marquee.code}****`) + await pushMarqueeMsg(msgDatas); + }); + let endJob = scheduleJob(`end${marquee.code}`, marquee.endTime * 1000, async () => { + if(startJob) { + startJob.cancel(); + startJob = undefined; + } + if(secondsJob) { + secondsJob.cancel(); + secondsJob = undefined; + } + if(endJob) { + endJob.cancel(); + endJob = undefined; + } + }); + } else { if(startJob) { startJob.cancel(); startJob = undefined; } - if(secondsJob) { - secondsJob.cancel(); - secondsJob = undefined; - } - if(endJob) { - endJob.cancel(); - endJob = undefined; - } - }); + } } } diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index 8e326077e..1b21c061f 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -437,13 +437,17 @@ export async function initMaintenance(servers?: ServerlistType[]) { // 设置维护 async function setMaintenance(batchCode: string) { let { maintenance } = maintenInfos.get(batchCode); + + console.log('***** maintenance', maintenance); + let now = nowSeconds(); // 发送消息 if(maintenance.hasNotify && now < maintenance.startTime) { if(now > maintenance.startTime - 5 * 60) { maintenanceNotifySchedule(batchCode); } else { - scheduleJob(`maintenNotify${batchCode}`, maintenance.startTime - 5 * 60, () => { + scheduleJob(`maintenNotify${batchCode}`, (maintenance.startTime - 5 * 60) * 1000, () => { + console.log('******* 通知') maintenanceNotifySchedule(batchCode); }) } diff --git a/shared/db/Serverlist.ts b/shared/db/Serverlist.ts index 145c18a07..1e7543cd5 100644 --- a/shared/db/Serverlist.ts +++ b/shared/db/Serverlist.ts @@ -171,7 +171,7 @@ export default class Serverlist extends BaseModel { } public static async incRoleCnt(serverId: number) { - let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ serverId }, { $inc: { playerCnt: 1 } }); + let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $inc: { playerCnt: 1 } }); return server; } diff --git a/web-server/app/middleware/checkMainten.ts b/web-server/app/middleware/checkMainten.ts index ab60d479d..6954f2bbd 100644 --- a/web-server/app/middleware/checkMainten.ts +++ b/web-server/app/middleware/checkMainten.ts @@ -11,14 +11,14 @@ module.exports = () => { if (server && server.maintenance && server.maintenance.isOpen && server.maintenance.startTime < nowSeconds() && server.maintenance.endTime > nowSeconds()) { let isWhiteList = await checkWhiteList(ctx.app.config.realEnv, ctx.clientIp, ctx.uid, serverId); if (isWhiteList) { - await next(); + return await next(); } else { ctx.body = ctx.service.utils.resResult(STATUS.SERVER_MAINTENANCE); return; } } } - await next(); + return await next(); }; }; diff --git a/web-server/app/service/Auth.ts b/web-server/app/service/Auth.ts index 17082da33..dfbb73385 100644 --- a/web-server/app/service/Auth.ts +++ b/web-server/app/service/Auth.ts @@ -289,7 +289,6 @@ export default class Auth extends Service { public async checkRole(serverId: number) { const ctx = this.ctx; const { uid } = ctx; - let canLogin = await this.ctx.service.utils.validateCanLogin(); if(!canLogin) return this.ctx.service.utils.resResult(STATUS.ONLINE_USER_MAX); diff --git a/web-server/app/service/Utils.ts b/web-server/app/service/Utils.ts index 3044080d8..49f131377 100644 --- a/web-server/app/service/Utils.ts +++ b/web-server/app/service/Utils.ts @@ -65,14 +65,12 @@ export default class Utils extends Service { // 检测是否可以登录 public async validateCanLogin() { - console.log('********* serverConst', gameData.serverConst) if(gameData.serverConst.CLOSE_LOGIN == 1) return false; if(gameData.serverConst.CLOSE_LOGIN_WHEN_ONLINE_MAX) { let redisClient: RedisClient = this.ctx.app.context.redisClient; let count = await redisClient.hlenAsync(REDIS_KEY.ONLINE_USERS); - console.log('********* count', count) if(count >= gameData.serverConst.MAX_ONLINE_USER_COUNT) { return false } diff --git a/web-server/package.json b/web-server/package.json index 29d3da9b7..0ceedb6a5 100644 --- a/web-server/package.json +++ b/web-server/package.json @@ -27,7 +27,8 @@ "lylocal": "cross-env EGG_SERVER_ENV=lylocal npm run dev", "alpha": "cross-env EGG_SERVER_ENV=alpha npm run dev", "stable": "cross-env EGG_SERVER_ENV=stable npm run dev", - "deve": "cross-env EGG_SERVER_ENV=dev npm run dev" + "deve": "cross-env EGG_SERVER_ENV=dev npm run dev", + "sq1": "cross-env EGG_SERVER_ENV=sq1 npm run dev" }, "dependencies": { "@types/underscore": "^1.11.3",