系统:停服维护逻辑

This commit is contained in:
luying
2021-07-15 14:40:26 +08:00
parent 352aecfb56
commit 0028c9b992
26 changed files with 348 additions and 50 deletions
+22
View File
@@ -0,0 +1,22 @@
import { STATUS } from '@consts';
import { checkWhiteList } from 'app/pubUtils/util';
module.exports = () => {
return async function checkMainten(ctx, next) {
const { serverId } = ctx.request.body;
if (serverId) {
let maintenServers = ctx.service.game.getServerMainten();
if (maintenServers.indexOf(serverId) != -1) {
let isWhiteList = await checkWhiteList(ctx.tel, ctx.request.ip, ctx.auth);
if (isWhiteList) {
await next();
} else {
ctx.body = ctx.service.utils.resResult(STATUS.SERVER_MAINTENANCE);
return;
}
}
}
await next();
};
};
+1
View File
@@ -19,6 +19,7 @@ module.exports = () => {
ctx.auth = user.auth;
ctx.userCode = user.userCode;
ctx.pkgName = user.pkgName;
ctx.tel = user.tel;
await next();
};
};
+3 -2
View File
@@ -3,6 +3,7 @@ import { Application } from 'egg';
export default (app: Application) => {
const { controller, router } = app;
const tokenParser = app.middleware.tokenParser();
const checkMainten = app.middleware.checkMainten();
router.get('/dev', controller.home.dev);
router.get('/dev/smscode', controller.account.getSmsCode);
router.get('/', controller.home.index);
@@ -11,8 +12,8 @@ export default (app: Application) => {
router.post('/user/smslogin', controller.account.smsLogin);
router.post('/user/setpassword', tokenParser, controller.account.setPassword);
router.post('/user/pwlogin', controller.account.pwLogin);
router.post('/user/checkrole', tokenParser, controller.account.checkRole);
router.post('/user/createrole', tokenParser, controller.account.createRole);
router.post('/user/checkrole', tokenParser, checkMainten, controller.account.checkRole);
router.post('/user/createrole', tokenParser, checkMainten, controller.account.createRole);
router.post('/user/bind', tokenParser, controller.account.bind);
router.post('/user/authentication', tokenParser, controller.account.authentication);
router.post('/game/getserverlist', tokenParser, controller.game.getServerList);
+5 -3
View File
@@ -25,6 +25,7 @@ export default class Auth extends Service {
public async deviceLogin(isGuest: boolean, token: string, deviceId: string, platform: string, pkgName: string, serverType: string, getuiCID: string) {
const ctx = this.ctx;
const ip = ctx.request.ip;
let user = await UserModel.findUserByToken(token);
@@ -41,7 +42,7 @@ export default class Auth extends Service {
});
} else {
user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId);
user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId, 0, ip);
if (getuiCID) {//更新个推cid
await UserModel.updateGetuiCID(tel, getuiCID);
}
@@ -61,7 +62,7 @@ export default class Auth extends Service {
}
} else {
const token = ctx.service.utils.generateStr(256);
user = await UserModel.updateToken(user.tel, token, deviceId);
user = await UserModel.updateToken(user.tel, token, deviceId, ip);
if (getuiCID) {//更新个推cid
await UserModel.updateGetuiCID(user.tel, getuiCID);
}
@@ -187,6 +188,7 @@ export default class Auth extends Service {
*/
public async smsLogin(tel: string, deviceId: string, code: string, platform: string, pkgName: string, serverType: string, getuiCID: string) {
const ctx = this.ctx;
const ip = ctx.request.ip;
// 参数检查
const telVerify = this.checkTelNo(tel);
if (telVerify.status !== 0) {
@@ -216,7 +218,7 @@ export default class Auth extends Service {
// 用户注册登录
const token = ctx.service.utils.generateStr(256);
const user = await UserModel.createOrUpdate(false, tel, token, platform, pkgName, serverType, deviceId);
const user = await UserModel.createOrUpdate(false, tel, token, platform, pkgName, serverType, deviceId, ip);
if (getuiCID) {//更新个推cid
await UserModel.updateGetuiCID(tel, getuiCID);
}
+26
View File
@@ -0,0 +1,26 @@
import { Service } from 'egg';
import { MaintenanceModel } from '@db/Maintenance';
/**
* Test Service
*/
export default class Game extends Service {
public setServerMainten(maintenServers: number[]) {
return this.app['maintenServers'] = maintenServers;
}
public getServerMainten() {
return this.app['maintenServers']||[];
}
public async readDbMaintenance() {
const maintenance = await MaintenanceModel.findOpenMaintenance();
if(maintenance) {
this.setServerMainten(maintenance.serverIds);
}
}
}