后台:停服维护

This commit is contained in:
luying
2021-07-16 15:39:36 +08:00
parent 4d1723b5c2
commit 23750e89b9
9 changed files with 211 additions and 37 deletions
+20 -10
View File
@@ -14,6 +14,8 @@ import { RewardInter } from '../../../pubUtils/interface';
import { MarqueeModel } from '../../../db/Marquee';
import { ServerlistModel } from '../../../db/Serverlist';
import { getWorldChannelSid } from '../../../services/chatService';
import { MaintenanceModel } from '../../../db/Maintenance';
import { initMaintenance, stopMaintenance } from '../../../services/gmService';
export default function(app: Application) {
return new GmHandler(app);
}
@@ -186,16 +188,24 @@ export class GmHandler {
return resResult(STATUS.SUCCESS);
}
async sendMaintenance(msg: { serverType: string }, session: BackendSession) {
const { serverType } = msg;
let allServers = await ServerlistModel.findByServerType(serverType);
let results = [];
for(let { serverId } of allServers) {
let chatSid = await getWorldChannelSid(serverId);
let result = await this.app.rpc.chat.chatRemote.sendServerMaintenance.toServer(chatSid, serverId);
results.push(result);
}
return resResult(STATUS.SUCCESS, results);
async startMaintenance(msg: { code: string }, session: BackendSession) {
const { code } = msg;
const uid = session.get('uid');
const maintenance = await MaintenanceModel.updateStatusByCode(code, true, uid);
if(!maintenance) return resResult(STATUS.WRONG_PARMS);
await initMaintenance(maintenance);
return resResult(STATUS.SUCCESS,);
}
async stopMaintenance(msg: { code: string }, session: BackendSession) {
const { code } = msg;
const uid = session.get('uid');
const maintenance = await MaintenanceModel.updateStatusByCode(code, false, uid);
if(!maintenance) return resResult(STATUS.WRONG_PARMS);
await stopMaintenance(maintenance);
return resResult(STATUS.SUCCESS,);
}
async setMaintenance() {
+32 -6
View File
@@ -102,11 +102,15 @@ export async function cancelMarquee(code: string) {
// —————————————— 停服维护 —————————————— //
// 维护信息
export async function initMaintenance() {
const maintenance = await MaintenanceModel.findOpenMaintenance();
export async function initMaintenance(maintenance?: MaintenanceType) {
if(!maintenance)
maintenance = await MaintenanceModel.findOpenMaintenance();
if(maintenance) {
let { startTime, marquee } = maintenance;
if(marquee) await generateMarqueeSchedule(<MarqueeType>marquee);
if(marquee) {
let result = await generateMarqueeSchedule(<MarqueeType>marquee);
console.log(result);
}
if(Date.now() > startTime.getTime()) {
await startMaintenance(maintenance);
} else {
@@ -117,6 +121,7 @@ export async function initMaintenance() {
}
}
// 开启维护
async function startMaintenance(maintenance: MaintenanceType, startJob?: Job) {
// 向全服发送
let { serverIds, notice } = maintenance;
@@ -132,10 +137,31 @@ async function startMaintenance(maintenance: MaintenanceType, startJob?: Job) {
await NoticeModel.updateNotice((<NoticeType>notice).id, { isEnable: true });
}
// 更新connectorRemote里面的
// 更新connectorRemote里面的维护服务器
let connectorServers = pinus.app.getServersByType('connector');
for(let { id } of connectorServers) {
pinus.app.rpc.connector.connectorRemote.setServerMainten.toServer(id, serverIds);
await pinus.app.rpc.connector.connectorRemote.setServerMainten.toServer(id, serverIds);
}
}
// 停止维护
export async function stopMaintenance(maintenance: MaintenanceType) {
let { serverIds, notice, marquee } = maintenance;
// 更新serverlist上的status
await ServerlistModel.updateByServerIds(serverIds, { serverStatus: SERVER_STATUS.HOT });
// 更新notice的isEnable
if(notice) {
await NoticeModel.updateNotice((<NoticeType>notice).id, { isEnable: false });
}
// 更新connectorRemote里面的维护服务器
let connectorServers = pinus.app.getServersByType('connector');
for(let { id } of connectorServers) {
await pinus.app.rpc.connector.connectorRemote.setServerMainten.toServer(id, []);
}
if(marquee) {
await cancelMarquee((<MarqueeType>marquee).code);
}
if(startJob) startJob.cancel();
}