✨ feat(服务器): 更新维护逻辑
This commit is contained in:
@@ -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; // 未开服
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user