后台:停服维护
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
Reference in New Issue
Block a user