后台:修改服务器状态

This commit is contained in:
luying
2021-12-08 11:58:56 +08:00
parent aec83c1481
commit b51a2839da
9 changed files with 52 additions and 14 deletions

View File

@@ -5,7 +5,7 @@ import moment = require('moment');
import { CreateServerParam, UpdateRegionParams } from '../../../domain/backEndField/params'; import { CreateServerParam, UpdateRegionParams } from '../../../domain/backEndField/params';
import { RegionModel } from '../../../db/Region'; import { RegionModel } from '../../../db/Region';
import { gameData } from '../../../pubUtils/data'; import { gameData } from '../../../pubUtils/data';
import { Maintenance, ServerlistModel } from '../../../db/Serverlist'; import { Maintenance, ServerlistModel, ServerlistUpdate } from '../../../db/Serverlist';
import { nowSeconds } from '../../../pubUtils/timeUtil'; import { nowSeconds } from '../../../pubUtils/timeUtil';
import { GM_MAIL_TYPE, MAIL_TIME_TYPE, REF_CIRCLE_MAIL_TIME } from '../../../consts'; import { GM_MAIL_TYPE, MAIL_TIME_TYPE, REF_CIRCLE_MAIL_TIME } from '../../../consts';
import { SendMailFun } from '../../../services/mailService'; import { SendMailFun } from '../../../services/mailService';
@@ -78,6 +78,9 @@ export class GmHandler {
let server = await ServerlistModel.findByServerId(id); let server = await ServerlistModel.findByServerId(id);
let maintenance = server.maintenance; let maintenance = server.maintenance;
if(maintenance) { if(maintenance) {
// 更新serverlist上的status
await ServerlistModel.updateByServerId(server.id, { 'maintenance.isOpen': false } as ServerlistUpdate);
// console.log('&&&', server, server.id) // console.log('&&&', server, server.id)
await pinus.app.rpc.systimer.systimerRemote.stopMaintenance.broadcast(maintenance.batchCode, [server.id]); await pinus.app.rpc.systimer.systimerRemote.stopMaintenance.broadcast(maintenance.batchCode, [server.id]);
} }

View File

@@ -486,9 +486,6 @@ async function startMaintenanceSchedule(batchCode: string) {
await pinus.app.rpc.chat.chatRemote.sendServerMaintenance.toServer(chatSid, serverId); await pinus.app.rpc.chat.chatRemote.sendServerMaintenance.toServer(chatSid, serverId);
} }
} }
// 更新serverlist上的status
await ServerlistModel.updateByServerIds(serverIds, { serverStatus: SERVER_STATUS.MAINTENANCE });
// 更新connectorRemote里面的维护服务器 // 更新connectorRemote里面的维护服务器
console.log('******** startMaintenanceSchedule', batchCode, serverIds, maintenance.startTime, maintenance.endTime) console.log('******** startMaintenanceSchedule', batchCode, serverIds, maintenance.startTime, maintenance.endTime)
@@ -516,9 +513,6 @@ export async function stopMaintenance(batchCode: string, serverIds: number[]) {
maintenInfos.delete(batchCode); maintenInfos.delete(batchCode);
} }
// 更新serverlist上的status
await ServerlistModel.updateByServerIds(serverIds, { serverStatus: SERVER_STATUS.HOT, 'maintenance.isOpen': false } as ServerlistUpdate);
// 更新connectorRemote里面的维护服务器 // 更新connectorRemote里面的维护服务器
pinus.app.rpc.connector.connectorRemote.stopServerMainten.broadcast(serverIds); pinus.app.rpc.connector.connectorRemote.stopServerMainten.broadcast(serverIds);
pinus.app.rpc.activity.activityRemote.stopServerMainten.broadcast(serverIds); pinus.app.rpc.activity.activityRemote.stopServerMainten.broadcast(serverIds);

View File

@@ -38,6 +38,22 @@ export default class GameController extends Controller {
return return
} }
public async stopServerRegister() {
const { ctx } = this;
const { id } = ctx.request.body;
ctx.body = await ctx.service.game.stopServerRegister(id);
return
}
public async switchServerStatus() {
const { ctx } = this;
const { id, status } = ctx.request.body;
ctx.body = await ctx.service.game.switchServerStatus(id, status);
return
}
// public async getMaintenanceList() { // public async getMaintenanceList() {
// const { ctx } = this; // const { ctx } = this;
// const {page, pageSize, sortField, sortOrder, form} = ctx.request.body; // const {page, pageSize, sortField, sortOrder, form} = ctx.request.body;

View File

@@ -55,6 +55,8 @@ export default (app: Application) => {
router.post('/api/game/getregions', controller.game.getRegions); router.post('/api/game/getregions', controller.game.getRegions);
router.post('/api/game/getservers', controller.game.getServers); router.post('/api/game/getservers', controller.game.getServers);
router.post('/api/game/getregionstategy', controller.game.getRegionStategy); router.post('/api/game/getregionstategy', controller.game.getRegionStategy);
router.post('/api/game/stopserverregister', controller.game.stopServerRegister);
router.post('/api/game/swicthserverstatus', controller.game.switchServerStatus);
// router.post('/api/game/getmaintenancelist', controller.game.getMaintenanceList); // router.post('/api/game/getmaintenancelist', controller.game.getMaintenanceList);
// router.post('/api/game/updatemaintenance', controller.game.updateMaintenance); // router.post('/api/game/updatemaintenance', controller.game.updateMaintenance);

View File

@@ -12,6 +12,7 @@ import { MarqueeModel, MarqueeParam } from '@db/Marquee';
import { AccuseRecModel } from '@db/AccuseRec'; import { AccuseRecModel } from '@db/AccuseRec';
import { RegionModel } from '@db/Region'; import { RegionModel } from '@db/Region';
import { ActivityGroupModel } from '@db/ActivityGroup'; import { ActivityGroupModel } from '@db/ActivityGroup';
import { nowSeconds } from '@pubUtils/timeUtil';
/** /**
* Test Service * Test Service
@@ -63,6 +64,20 @@ export default class Game extends Service {
}); });
} }
public async stopServerRegister(id: number) {
const { ctx } = this;
const server = await ServerlistModel.updateByServerId(id, { stopRegisterTime: nowSeconds() - 1 });
if(!server) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
public async switchServerStatus(id: number, status: number) {
const { ctx } = this;
const server = await ServerlistModel.updateByServerId(id, { serverStatus: status });
if(!server) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
public async getRegionStategy(id: number) { public async getRegionStategy(id: number) {
const { ctx } = this; const { ctx } = this;
let region = await RegionModel.findRegionById(id); let region = await RegionModel.findRegionById(id);

View File

@@ -64,10 +64,13 @@ export default class Serverlist extends BaseModel {
activityGroupId: number[]; // 活动组 activityGroupId: number[]; // 活动组
public get status() { public get status() {
if (nowSeconds() > this.openTime) { let now = nowSeconds();
return this.serverStatus; if (now < this.openTime) {
return SERVER_STATUS.WILL_OPEN;
} else if (this.maintenance && this.maintenance.isOpen && this.maintenance.startTime < now && this.maintenance.endTime > now) {
return SERVER_STATUS.MAINTENANCE;
} else { } else {
return SERVER_STATUS.WILL_OPEN; // 未开服 return this.serverStatus; // 未开服
} }
} }

View File

@@ -19,6 +19,10 @@ export default class FooBoot implements IBoot {
await this.connectGMDB(this.app); await this.connectGMDB(this.app);
await this.connectRedis(this.app); await this.connectRedis(this.app);
this.app.config.realEnv = this.app.config.env;
if(this.app.config.env == 'local') {
this.app.config.realEnv = 'development';
}
} }
configDidLoad() { configDidLoad() {

View File

@@ -31,6 +31,7 @@ export default class GameController extends Controller {
let serverList = new Array<GroupParam>(); let serverList = new Array<GroupParam>();
let loginServerList = new Array<ServerParamWithRole>(); let loginServerList = new Array<ServerParamWithRole>();
console.log('****', ctx.app.config.realEnv)
let allServers = await ServerlistModel.findByEnv(ctx.app.config.realEnv); let allServers = await ServerlistModel.findByEnv(ctx.app.config.realEnv);
let roles = await RoleModel.findAllByUid(uid, true, true); let roles = await RoleModel.findAllByUid(uid, true, true);
for (let server of allServers) { for (let server of allServers) {
@@ -50,7 +51,7 @@ export default class GameController extends Controller {
loginServerList.sort((a, b) => { return b.updatedAt.getTime() - a.updatedAt.getTime() }); loginServerList.sort((a, b) => { return b.updatedAt.getTime() - a.updatedAt.getTime() });
if (serverList && serverList.length > 0) { if (serverList) {
ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { serverList, loginServerList }); ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { serverList, loginServerList });
} else { } else {
ctx.body = ctx.service.utils.resResult(STATUS.SERVER_NOT_FOUND); ctx.body = ctx.service.utils.resResult(STATUS.SERVER_NOT_FOUND);

View File

@@ -291,10 +291,10 @@ export default class Auth extends Service {
const ctx = this.ctx; const ctx = this.ctx;
const { uid } = ctx; const { uid } = ctx;
const role = await RoleModel.findByUid(uid, serverId); const role = await RoleModel.findByUid(uid, serverId);
if(role.blockType == BLOCK_TYPE.BLOCK) {
return ctx.service.utils.resResult(STATUS.BLOCKED);
}
if (role) { if (role) {
if(role.blockType == BLOCK_TYPE.BLOCK) {
return ctx.service.utils.resResult(STATUS.BLOCKED);
}
return ctx.service.utils.resResult(STATUS.SUCCESS, { roleId: role.roleId }); return ctx.service.utils.resResult(STATUS.SUCCESS, { roleId: role.roleId });
} }
return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND); return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND);