后台:自动开服

This commit is contained in:
luying
2021-12-08 16:23:00 +08:00
parent 02c2096704
commit fc38485f94
8 changed files with 102 additions and 97 deletions
+11 -74
View File
@@ -11,6 +11,8 @@ import { SendMailFun } from "./mailService";
import GMMail, { GMMailModel, GMMailType } from '../db/GMMail';
import moment = require("moment");
import { getSeconds, nowSeconds } from "../pubUtils/timeUtil";
import { CreateServerParam } from "../domain/backEndField/params";
import { RegionModel, RegionType } from "../db/Region";
// —————————————— 跑马灯 —————————————— //
// 初始
@@ -102,77 +104,6 @@ export async function cancelMarquee(code: string) {
return true
}
// —————————————— 停服维护 —————————————— //
// 维护信息
// export async function initMaintenance() {
// let servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
// for(let server of servers)
// // if(!maintenance)
// // maintenance = await MaintenanceModel.findOpenMaintenance();
// // if(maintenance) {
// // let { startTime, marquee } = maintenance;
// // if(marquee) {
// // let result = await generateMarqueeSchedule(<MarqueeType>marquee);
// // // console.log(result);
// // }
// // if(Date.now() > startTime.getTime()) {
// // await startMaintenance(maintenance);
// // } else {
// // let startJob = scheduleJob(`startMainten${maintenance.code}`, startTime.getTime(), async () => {
// // await startMaintenance(maintenance, startJob);
// // });
// // }
// }
// }
// // 开启维护
// async function startMaintenance(maintenance: MaintenanceType, startJob?: Job) {
// // 向全服发送
// let { serverIds, notice } = maintenance;
// for(let serverId of serverIds) {
// let chatSid = await getWorldChannelSid(serverId);
// await pinus.app.rpc.chat.chatRemote.sendServerMaintenance.toServer(chatSid, serverId);
// }
// // 更新serverlist上的status
// await ServerlistModel.updateByServerIds(serverIds, { serverStatus: SERVER_STATUS.MAINTENANCE });
// // 更新notice的isEnable
// if(notice) {
// await NoticeModel.updateNotice((<NoticeType>notice).id, { isEnable: true });
// }
// // 更新connectorRemote里面的维护服务器
// await pinus.app.rpc.connector.connectorRemote.setServerMainten.broadcast(serverIds);
// }
// // 停止维护
// export async function stopMaintenance(maintenance: MaintenanceType, uid: number) {
// let { serverIds, notice, marquee, mail } = 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);
// }
// console.log('*****', JSON.stringify(mail));
// if(mail) {
// let f = new SendMailFun();
// await f.setWithGmMail((<GMMailType>mail)._id);
// await f.sendToServer(serverIds);
// // await f.saveRecord(uid);
// }
// }
export async function sendOpenServerMail(type: 'openMail'|'circleMail', mail: GMMail, newServer: ServerlistType, uid: number) {
let receivers = [{
env: newServer.env,
@@ -186,7 +117,8 @@ export async function sendOpenServerMail(type: 'openMail'|'circleMail', mail: GM
let gmmail = await GMMailModel.addMail(addParam, uid);
let needSend = false;
if(mail.timeType == MAIL_TIME_TYPE.CIRCLE) {
let refTime = moment(moment().format(`YYYY-MM-DD ${REF_CIRCLE_MAIL_TIME}:00:00`)).unix();
let refTimeStr = REF_CIRCLE_MAIL_TIME >= 10? `${REF_CIRCLE_MAIL_TIME}`: `0${REF_CIRCLE_MAIL_TIME}`;
let refTime = moment(moment().format(`YYYY-MM-DD ${refTimeStr}:00:00`)).unix();
let sendTime = moment(moment().format('YYYY-MM-DD '+ mail.circleHour)).unix();
if(sendTime < refTime) sendTime += 86400;
let now = nowSeconds();
@@ -204,8 +136,6 @@ export async function sendOpenServerMail(type: 'openMail'|'circleMail', mail: GM
return true;
}
export function setServerMainten(serverIds: number[], startTime: number, endTime: number) {
let maintenServers = pinus.app.get('maintenServers')||new Map();
for(let id of serverIds) {
@@ -232,4 +162,11 @@ export function stopServerMainten(serverIds: number[]) {
export function getServerMainten(serverId: number) {
let maintenServers = pinus.app.get('maintenServers')||new Map();
return maintenServers.get(serverId);
}
export async function createNewServer(region: RegionType ,serverId: number, params: CreateServerParam, uid?: number) {
let newServer = await ServerlistModel.newServer(params, region, serverId, uid);
if(params.openMail) await sendOpenServerMail('openMail', params.openMail, newServer, uid);
if(params.circleMail) await sendOpenServerMail('circleMail', params.circleMail, newServer, uid);
await RegionModel.newServer(region.id, newServer);
}