服务器:修复白名单bug

This commit is contained in:
luying
2022-01-10 18:13:27 +08:00
parent 002ca4f8db
commit 5641d8fdfa
8 changed files with 34 additions and 24 deletions

View File

@@ -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);

View File

@@ -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;
}
});
}
}
}

View File

@@ -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);
})
}

View File

@@ -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;
}

View File

@@ -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();
};
};

View File

@@ -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);

View File

@@ -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
}

View File

@@ -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",