✨ feat(服务器): 修改服务器自动开服策略
This commit is contained in:
@@ -13,7 +13,7 @@ import { sendEndMsgToAllServer, sendGuildActivityStatus, setPreDayActiveData, in
|
||||
import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService';
|
||||
import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity';
|
||||
import { dispatch } from '../util/dispatcher';
|
||||
import { createNewServer, initMarquee, setServerMainten } from './gmService';
|
||||
import { initMarquee, setServerMainten } from './gmService';
|
||||
import moment = require('moment');
|
||||
import { reportOneOnline } from './authenticateService';
|
||||
import { GVG, LADDER, PVP } from '../pubUtils/dicParam';
|
||||
@@ -23,7 +23,7 @@ import { Maintenance, ServerlistModel, ServerlistType } from '../db/Serverlist';
|
||||
import { createMarqueeMsg, pushMarqueeMsg } from './sysChatService';
|
||||
import { RegionModel, RegionType } from '../db/Region';
|
||||
import { CreateServerParam } from '../domain/backEndField/params';
|
||||
import { infologger } from '../util/logger';
|
||||
import { infologger, errlogger } from '../util/logger';
|
||||
import { MailModel, MailType } from '../db/Mail';
|
||||
import { GroupMailModel, GroupMailType } from '../db/GroupMail';
|
||||
import { ServerMailModel, ServerMailType } from '../db/ServerMail';
|
||||
@@ -51,6 +51,7 @@ import { getActivityById } from './activity/activityService';
|
||||
import { MonthlyFundData } from "../domain/activityField/monthlyFundField";
|
||||
import { RewardInter } from '../pubUtils/interface';
|
||||
import { stringToRewardInter } from './activity/giftPackageService';
|
||||
import { autoCreateServerSchedule } from './serverService';
|
||||
|
||||
const PER_SECOND = 1 * 1000;
|
||||
const PER_DAY = 24 * 60 * 60;
|
||||
@@ -684,49 +685,10 @@ export async function stopMaintenance(batchCode: string, serverIds: number[]) {
|
||||
|
||||
// —————————————— 维护 end —————————————— //
|
||||
// —————————————— 自动开服 —————————————— //
|
||||
export async function initAutoCreateServer(region?: RegionType) {
|
||||
if(!region) region = await RegionModel.findRegionByEnv(pinus.app.get('env'));
|
||||
if(region && region.stategy && region.stategy.isOpen) {
|
||||
for(let timer of region.stategy.timers) {
|
||||
setStategyTimer(timer, region)
|
||||
}
|
||||
} else {
|
||||
if(scheduledJobs[`autoServer${SERVER_TIMER.FIVE_HALF}`]) scheduledJobs[`autoServer${SERVER_TIMER.FIVE_HALF}`].cancel();
|
||||
if(scheduledJobs[`autoServer${SERVER_TIMER.TEN_HALF}`]) scheduledJobs[`autoServer${SERVER_TIMER.FIVE_HALF}`].cancel();
|
||||
if(scheduledJobs[`autoServer${SERVER_TIMER.FIFTEEN_HALF}`]) scheduledJobs[`autoServer${SERVER_TIMER.FIVE_HALF}`].cancel();
|
||||
if(scheduledJobs[`autoServer${SERVER_TIMER.NINETEEN_HALF}`]) scheduledJobs[`autoServer${SERVER_TIMER.FIVE_HALF}`].cancel();
|
||||
}
|
||||
export async function initAutoCreateServer() {
|
||||
scheduleJob('autoServer', '0 0 */1 * * ?', autoCreateServerSchedule)
|
||||
}
|
||||
|
||||
function setStategyTimer(timerId: number, region: RegionType) {
|
||||
if(scheduledJobs[`autoServer${timerId}`]) scheduledJobs[`autoServer${timerId}`].cancel();
|
||||
let cron = '';
|
||||
switch(timerId) {
|
||||
case SERVER_TIMER.FIVE_HALF:
|
||||
cron = '0 30 5 * * *'; break;
|
||||
case SERVER_TIMER.TEN_HALF:
|
||||
cron = '0 30 10 * * *'; break;
|
||||
case SERVER_TIMER.FIFTEEN_HALF:
|
||||
cron = '0 30 15 * * *'; break;
|
||||
case SERVER_TIMER.NINETEEN_HALF:
|
||||
cron = '0 30 19 * * *'; break;
|
||||
}
|
||||
if(cron) {
|
||||
scheduleJob(`autoServer${timerId}`, cron, () => {
|
||||
autoCreateServerSchedule(region);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
async function autoCreateServerSchedule(region: RegionType) {
|
||||
console.log('******* createNewServer *******')
|
||||
let latestServer = await ServerlistModel.findByServerId(region.latestServerUniqId);
|
||||
if(!latestServer || latestServer.playerCnt >= region.stategy.maxPlayerCnt) {
|
||||
let params = new CreateServerParam();
|
||||
params.setByRegionStategy(region, nowSeconds())
|
||||
await createNewServer(region, (latestServer?.serverId||0) + 1, params);
|
||||
}
|
||||
}
|
||||
// —————————————— 自动开服 end —————————————— //
|
||||
|
||||
// —————————————— 活动 start —————————————— //
|
||||
@@ -1012,11 +974,11 @@ export async function gvgBattleEndSchedule() {
|
||||
// —————————————— gvg end —————————————— //
|
||||
|
||||
async function initPushMsgSchedule() {
|
||||
scheduleJob('sendAfkPlayers', '0 0 19 * * ?', async () => {
|
||||
scheduleJob('sendDinner', '0 0 19 * * ?', async () => {
|
||||
// pushClientMsg(SDK_PUSH_MSG_TYPE.AFK_ATTENTION);
|
||||
pushClientMsg(SDK_PUSH_MSG_TYPE.AP_DINNER);
|
||||
});
|
||||
scheduleJob('sendAfkPlayers', '0 0 12 * * ?', async () => {
|
||||
scheduleJob('sendLunch', '0 0 12 * * ?', async () => {
|
||||
pushClientMsg(SDK_PUSH_MSG_TYPE.AP_LUNCH);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user