✨ feat(服务器): 更新维护逻辑
This commit is contained in:
@@ -21,11 +21,14 @@ import { getExpByLv } from '../../../pubUtils/data';
|
||||
import { reportCreateRoleEventToTa, reportTAEvent, reportTAUserSet } from '../../../services/sdkService';
|
||||
import { saveLoginAndOutLog } from '../../../pubUtils/logUtil';
|
||||
import { sendMessageToAllWithSuc, sendMessageToUserWithSuc } from '../../../services/pushService';
|
||||
import { checkServerIsOpen, getIpLocation } from '../../../services/roleService';
|
||||
import { checkIsNewUser, getIpLocation } from '../../../services/roleService';
|
||||
import { leaveRaceActivityToRemote } from '../../../services/guildActivity/guildActivityService';
|
||||
import { leaveCity } from '../../../services/gvg/gvgBattleService';
|
||||
import { autoCreateServerWhenRoleInit } from '../../../services/serverService';
|
||||
import { getHiddenData } from '../../../services/memoryCache/hiddenData';
|
||||
import { ServerlistModel } from '../../../db/Serverlist';
|
||||
import { checkWhiteList } from '../../../pubUtils/sysUtil';
|
||||
import { getAp } from '../../../services/actionPointService';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -42,7 +45,7 @@ export class EntryHandler {
|
||||
* @param {Object} msg request message
|
||||
* @param {Object} session current session object
|
||||
*/
|
||||
async enter(msg: { token: string, serverId: number }, session: FrontendSession) {
|
||||
async enter(msg: { token: string, serverId: number, version: string }, session: FrontendSession) {
|
||||
// console.log('****** entry before', Date.now());
|
||||
let self = this;
|
||||
let serverId = msg.serverId;
|
||||
@@ -64,8 +67,22 @@ export class EntryHandler {
|
||||
}
|
||||
|
||||
let ip = this.getIp(session);
|
||||
if(!await checkServerIsOpen(serverId, ip, user.uid)) {
|
||||
return resResult(STATUS.SERVER_IS_NOT_OPEN)
|
||||
let server = await ServerlistModel.findByServerId(serverId);
|
||||
if(!server) return resResult(STATUS.SERVER_NOT_FOUND);
|
||||
let isWhiteList = await checkWhiteList(pinus.app.get('env'), ip, user.uid);
|
||||
if(!isWhiteList) { // 白名单
|
||||
if(server.openTime > nowSeconds()) {
|
||||
return resResult(STATUS.SERVER_IS_NOT_OPEN);
|
||||
}
|
||||
if(server.maintenance && server.maintenance.isOpen && server.maintenance.startTime <= nowSeconds() && server.maintenance.endTime >= nowSeconds()) {
|
||||
let isNewUser = await checkIsNewUser(msg.version, server.maintenance.version, user.uid, server.latestServerUniqId);
|
||||
console.log('#### isNewUser', isNewUser)
|
||||
if(isNewUser && server.id == server.latestServerUniqId) {
|
||||
user['isNewUser'] = true;
|
||||
} else {
|
||||
return resResult(STATUS.SERVER_MAINTENANCE, { curVersion: msg.version, minVersion: server.maintenance.version })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,11 +91,10 @@ export class EntryHandler {
|
||||
if (!role) {
|
||||
return resResult(STATUS.ROLE_NOT_FOUND);
|
||||
}
|
||||
console.log('#### needCount 0', role.needCount)
|
||||
|
||||
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);
|
||||
await this.addSession(user, role, msg.version, session);
|
||||
|
||||
await reportCreateRoleEventToTa(role, ip);
|
||||
saveLoginAndOutLog(LOG_TYPE.LOGIN, session);
|
||||
@@ -93,7 +109,6 @@ export class EntryHandler {
|
||||
}
|
||||
|
||||
let todayZeroPoint = getZeroPoint();
|
||||
console.log('####### needCount', role.needCount)
|
||||
if(role.needCount) autoCreateServerWhenRoleInit(serverId);
|
||||
|
||||
// console.log('****** entry after', Date.now());
|
||||
@@ -116,10 +131,12 @@ export class EntryHandler {
|
||||
return session.remoteAddress.ip.replace('::ffff:', '');
|
||||
}
|
||||
|
||||
async addSession(user: UserType, role: RoleType, session: FrontendSession) {
|
||||
async addSession(user: UserType, role: RoleType, version: string, session: FrontendSession) {
|
||||
const self = this;
|
||||
let ip = this.getIp(session);
|
||||
|
||||
console.log('####### addSession', user['isNewUser']||false)
|
||||
|
||||
await session.abind(role.roleId);
|
||||
session.set('userid', role.userInfo.uid);
|
||||
session.set('roleId', role.roleId);
|
||||
@@ -133,6 +150,8 @@ export class EntryHandler {
|
||||
session.set('ip', ip);
|
||||
session.set('vipStartTime', role.vipStartTime||0);
|
||||
session.set('channel', user.channelInfo?.platformAppid||'pc');
|
||||
session.set('isNewUser', user['isNewUser']||false);
|
||||
session.set('version', version);
|
||||
session.push('userid', () => { });
|
||||
session.push('sid', () => { });
|
||||
session.push('roleId', () => { });
|
||||
@@ -145,6 +164,8 @@ export class EntryHandler {
|
||||
session.push('ip', () => { });
|
||||
session.push('vipStartTime', () => { });
|
||||
session.push('channel', () => { });
|
||||
session.push('version', () => { });
|
||||
session.push('isNewUser', () => { });
|
||||
assignServer(role.roleId, session);
|
||||
|
||||
// console.log('#####', role.serverId, role.guildCode)
|
||||
@@ -188,6 +209,15 @@ export class EntryHandler {
|
||||
return resResult(STATUS.SUCCESS, data);
|
||||
}
|
||||
|
||||
async comeBack(msg: { version: string }, session: FrontendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let ip = session.get('ip');
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId, 'lv');
|
||||
let apJson = await getAp(roleId, ip, role.lv);
|
||||
return resResult(STATUS.SUCCESS, { apJson });
|
||||
}
|
||||
|
||||
/**
|
||||
* User log out handler
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user