feat(服务器): 更新维护逻辑

This commit is contained in:
luying
2023-05-06 11:44:05 +08:00
parent a651254821
commit f47d2d131f
24 changed files with 183 additions and 89 deletions

View File

@@ -2,8 +2,10 @@ import { Service } from 'egg';
import { resResult as pubResult } from '../pubUtils/util';
import { gameData } from 'app/pubUtils/data';
import { RedisClient } from 'redis';
import { REDIS_KEY } from '@consts';
import { REDIS_KEY, SERVER_STATUS } from '@consts';
import { getRedisSubChannel } from 'app/pubUtils/sdkUtil';
import { ServerlistType } from '@db/Serverlist';
import { nowSeconds } from 'app/pubUtils/timeUtil';
const csprng = require('csprng');
/**
* Utils Service
@@ -133,4 +135,24 @@ export default class Utils extends Service {
return 0;
}
};
public getServerStatus(server: ServerlistType, version: string, hasRole: boolean) {
let now = nowSeconds();
if (now < server.openTime) {
return SERVER_STATUS.WILL_OPEN;
} else if (server.maintenance && server.maintenance.isOpen && server.maintenance.startTime < now && server.maintenance.endTime > now) {
const versionFlag = this.ctx.service.utils.compareVersion(version, server.maintenance.version||'0.0.0');
if(versionFlag >= 0) { // 新版本号
if(!hasRole && server.id == server.latestServerUniqId) { // 新玩家
return server.serverStatus;
} else {
return SERVER_STATUS.MAINTENANCE;
}
} else {
return SERVER_STATUS.MAINTENANCE;
}
} else {
return server.serverStatus; // 未开服
}
}
}