系统:停服维护逻辑
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import {Application, RouteRecord, FrontendOrBackendSession, HandlerCallback, pinus} from "pinus";
|
||||
import { checkEvent } from '../../../services/eventSercive';
|
||||
import { refresh } from '../../../services/refreshService';
|
||||
import { getWorldChannelSid } from "../../../services/chatService";
|
||||
import { resResult, checkWhiteListWithUid } from "../../../pubUtils/util";
|
||||
import { STATUS } from "../../../consts";
|
||||
import { UserModel } from "../../../db/User";
|
||||
module.exports = function(app: Application) {
|
||||
return new Filter(app);
|
||||
}
|
||||
|
||||
var Filter = function(this: any, app: Application) {
|
||||
this.app = app;
|
||||
};
|
||||
|
||||
Filter.prototype.before = async function (routeRecord: RouteRecord, msg: any, session: FrontendOrBackendSession, next: HandlerCallback) {
|
||||
const serverId: number = session.get('serverId');
|
||||
const sid: string = session.get('sid');
|
||||
const roleId: string = session.get('roleId');
|
||||
const uid: number = session.get('userid');
|
||||
|
||||
let connectorServers = pinus.app.getServersByType('connector');
|
||||
let { id } = connectorServers[0];
|
||||
let maintenServers = await pinus.app.rpc.connector.connectorRemote.getServerMainten.toServer(id);
|
||||
if(maintenServers.indexOf(serverId) != -1) { // 该服务器维护
|
||||
let isWhiteList = await checkWhiteListWithUid(uid);
|
||||
if(isWhiteList) next(null);
|
||||
|
||||
pinus.app.get('channelService').pushMessageByUids('onServerMaintenance', resResult(STATUS.SERVER_MAINTENANCE), [{ uid: roleId, sid }]);
|
||||
next(new Error(), resResult(STATUS.SERVER_MAINTENANCE));
|
||||
}
|
||||
|
||||
next(null);
|
||||
};
|
||||
|
||||
Filter.prototype.after = function (err: Error, routeRecord: RouteRecord, msg: any, session: FrontendOrBackendSession, resp: any, next: HandlerCallback) {
|
||||
//刷新
|
||||
refresh(session);
|
||||
return checkEvent(session).then(()=>{
|
||||
next(err);
|
||||
}).catch(e => {
|
||||
console.error(e);
|
||||
next(err);
|
||||
}); // 奇遇本检查
|
||||
};
|
||||
@@ -118,6 +118,7 @@ export class EntryHandler {
|
||||
async addSession(role: RoleType, session: FrontendSession) {
|
||||
const self = this;
|
||||
await session.abind(role.roleId);
|
||||
session.set('userid', role.userInfo.uid);
|
||||
session.set('uid', role.roleId);
|
||||
session.set('roleId', role.roleId);
|
||||
let updatedMailAt = role.updatedMailAt ? role.updatedMailAt : 0;
|
||||
@@ -128,6 +129,7 @@ export class EntryHandler {
|
||||
session.set('serverId', role.serverId);
|
||||
session.set('funcs', role.funcs || []);
|
||||
session.set('guildCode', role.guildCode);
|
||||
session.push('userid', () => { });
|
||||
session.push('sid', () => { });
|
||||
session.push('roleId', () => { });
|
||||
session.push('roleName', () => { });
|
||||
|
||||
@@ -13,6 +13,7 @@ export class ConnectorRemote {
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
private channelService: ChannelService;
|
||||
private maintenServers: number[] = []; // 维护中的服务器
|
||||
|
||||
public async remoteLogin(uid: string) {
|
||||
let sessionService = this.app.get('sessionService');
|
||||
@@ -22,7 +23,7 @@ export class ConnectorRemote {
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
let uids = [{uid: roleId, sid}];
|
||||
this.channelService.pushMessageByUids('onRemoteLogin', resResult(STATUS.LOGIN_ERR ), uids);
|
||||
this.channelService.pushMessageByUids('onRemoteLogin', resResult(STATUS.SERVER_MAINTENANCE ), uids);
|
||||
});
|
||||
}
|
||||
await sessionService.akick(uid);
|
||||
@@ -42,4 +43,12 @@ export class ConnectorRemote {
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
|
||||
public setServerMainten(maintenServers: number[]) {
|
||||
return this.maintenServers = maintenServers;
|
||||
}
|
||||
|
||||
public getServerMainten() {
|
||||
return this.maintenServers;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user