feat(选服): 服务器即将开启状态不可进入

This commit is contained in:
luying
2022-10-19 20:14:48 +08:00
parent 1870673fbd
commit de90f05301
5 changed files with 30 additions and 4 deletions
@@ -13,7 +13,7 @@ import { sendMessageToUser } from "../../../services/pushService";
import { isCheckWord, isSkipEncode } from "../../../pubUtils/sdkUtil";
import { isDevelopEnv } from "../../../services/utilService";
import { isNumber } from "underscore";
import { redisClient } from "../../../services/redisService";
import { getServerCreateTime, redisClient } from "../../../services/redisService";
import { checkRouteParam } from "../../../services/checkParam";
import { isApiClose } from "../../../services/chatService";
@@ -21,7 +21,7 @@ import { getExpByLv } from '../../../pubUtils/data';
import { reportCreateRoleEventToTa, reportTAEvent, reportTAUserSet } from '../../../services/sdkService';
import { saveLoginAndOutLog } from '../../../pubUtils/logUtil';
import { sendMessageToAllWithSuc, sendMessageToUserWithSuc } from '../../../services/pushService';
import { getIpLocation } from '../../../services/roleService';
import { checkServerIsOpen, getIpLocation } from '../../../services/roleService';
import { dispatch } from '../../../pubUtils/dispatcher';
import { leaveRaceActivityToRemote } from '../../../services/guildActivity/guildActivityService';
@@ -62,12 +62,17 @@ export class EntryHandler {
}
let ip = this.getIp(session);
if(!await checkServerIsOpen(serverId, ip, user.uid)) {
return resResult(STATUS.SERVER_IS_NOT_OPEN)
}
let ipLocation = await getIpLocation(ip);
let role = await RoleModel.findByUidAndSetTime(user.uid, serverId, ip, ipLocation, null, true);
if (!role) {
return resResult(STATUS.ROLE_NOT_FOUND);
}
let serverName = this.app.getServerId();
await roleLogin(role.roleId, user.userCode, serverName, role.createTime, role.serverId, role.lv, role.topLineupCe); // 保存在线用户
await this.addSession(user, role, session);
+13 -1
View File
@@ -14,6 +14,9 @@ import { pick } from 'underscore';
import { Reward } from '../domain/battleField/pvp';
import { CheckMeterial } from './role/checkMaterial';
import IP2Region from "ip2region";
import { getServerCreateTime } from './redisService';
import { checkWhiteList } from '../pubUtils/sysUtil';
import { nowSeconds } from '../pubUtils/timeUtil';
const query = new IP2Region({ disableIpv6: true });
@@ -301,4 +304,13 @@ export async function getIpLocation(ip: string) {
} catch(e) {
console.error('setIpLocation', e)
}
}
}
// 服务器是否开启
export async function checkServerIsOpen(serverId: number, ip: string, uid: number) {
let isWhiteList = await checkWhiteList(pinus.app.get('env'), ip, uid, serverId);
if(isWhiteList) return true;
let serverTime = await getServerCreateTime(serverId);
return serverTime <= nowSeconds();
}