后台:停服维护

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
+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();
}