活动:限时排行后台
This commit is contained in:
@@ -1,23 +1,18 @@
|
||||
|
||||
import { scheduleJob, Job, scheduledJobs, } from 'node-schedule';
|
||||
import { PVPConfigModel, PVPConfigType } from '../db/SystemConfig';
|
||||
import { nowSeconds, getTimeFun, getSeconds, getZeroPoint } from '../pubUtils/timeUtil';
|
||||
import { nowSeconds, getTimeFun, getSeconds } from '../pubUtils/timeUtil';
|
||||
import { getTodayGuildActivity, gameData } from '../pubUtils/data';
|
||||
import { pvpSeasonEnd } from './pvpService';
|
||||
import { getAllOnlineRoles, getAllServers, delGuildActivityRank } from './redisService';
|
||||
import { GUILD_ACTIVITY_TYPE, REFRESH_TIME, SEND_NAME, SERVER_OPEN_TIME, COUNTER, AUCTION_TIME, GM_MAIL_TYPE, SERVER_STATUS, SERVER_TIMER, ACTIVITY_TYPE, getRedisKeyByRankType, MAIL_TYPE, REDIS_KEY } from '../consts';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { GUILD_ACTIVITY_TYPE, REFRESH_TIME, COUNTER, AUCTION_TIME, GM_MAIL_TYPE, SERVER_TIMER, ACTIVITY_TYPE } from '../consts';
|
||||
import { pinus } from 'pinus';
|
||||
import { indexOf } from 'underscore';
|
||||
import { PvpSeasonResultModel } from '../db/PvpSeasonResult';
|
||||
import { settleGuildWeekly } from './guildService';
|
||||
import { sendMailByContent, SendMailFun, sendMailToGuildByContent } from './mailService';
|
||||
import { getGuildActivityByDic, sendEndMsgToAll, autoDeclare, sendGuildActivityStatus } from './guildActivity/guildActivityService';
|
||||
import { SendMailFun, } from './mailService';
|
||||
import { sendEndMsgToAll, autoDeclare, sendGuildActivityStatus } from './guildActivity/guildActivityService';
|
||||
import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService';
|
||||
import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity';
|
||||
import { dispatch } from '../pubUtils/dispatcher';
|
||||
import { Rank } from './rankService';
|
||||
import { checkTask } from './taskService';
|
||||
import { everydayRefresh } from './connectorService';
|
||||
import { createNewServer, initMarquee } from './gmService';
|
||||
import moment = require('moment');
|
||||
@@ -26,7 +21,7 @@ import { reportOneOnline } from './authenticateService';
|
||||
import { PVP } from '../pubUtils/dicParam';
|
||||
import { fetch37Words } from './sdkService';
|
||||
import { GMMailModel } from '../db/GMMail';
|
||||
import { Maintenance, ServerlistModel, ServerlistType, ServerlistUpdate } from '../db/Serverlist';
|
||||
import { Maintenance, ServerlistModel, ServerlistType } from '../db/Serverlist';
|
||||
import { getWorldChannelSid } from './chatService';
|
||||
import { createMarqueeMsg, pushMarqueeMsg } from './sysChatService';
|
||||
import { RegionModel, RegionType } from '../db/Region';
|
||||
@@ -35,10 +30,8 @@ import { infologger } from '../util/logger';
|
||||
import { MailModel, MailType } from '../db/Mail';
|
||||
import { GroupMailModel, GroupMailType } from '../db/GroupMail';
|
||||
import { ServerMailModel, ServerMailType } from '../db/ServerMail';
|
||||
import { ActivityModel } from '../db/Activity';
|
||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||
import { TimeLimitRankData } from '../domain/activityField/timeLimitRankField';
|
||||
import { GuildRankInfo, RoleRankInfo } from '../domain/rank';
|
||||
import { stringToRewardInter } from './activity/giftPackageService';
|
||||
import { sendRankMail, takeSnapshot } from './activity/timeLimitRankService';
|
||||
|
||||
const PER_SECOND = 1 * 1000;
|
||||
@@ -705,25 +698,40 @@ async function initTimeLimitRank() {
|
||||
|
||||
}
|
||||
|
||||
async function setSendRankMailSchedule(data: TimeLimitRankData) {
|
||||
export async function updateTimeLimitRank(activities: ActivityModelType[]) {
|
||||
for(let activity of activities) {
|
||||
let data = new TimeLimitRankData(activity, 0);
|
||||
if(data.sendMailTime > Date.now()) {
|
||||
await setSendRankMailSchedule(data);
|
||||
}
|
||||
if(data.rankEndTime > Date.now() && data.needSnapshot()) {
|
||||
await setTakeRankSnapshotSchedule(data, activity.groupId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function setSendRankMailSchedule(data: TimeLimitRankData) {
|
||||
console.log('########### setSendRankMailSchedule1 ########')
|
||||
if(scheduledJobs[`rankMail${data.activityId}`]) {
|
||||
scheduledJobs[`rankMail${data.activityId}`].cancel();
|
||||
}
|
||||
|
||||
scheduleJob(`rankMail${data.activityId}`, data.sendMailTime, async () => {
|
||||
console.log('########### setSendRankMailSchedule2 ########')
|
||||
await sendRankMail(data);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
async function setTakeRankSnapshotSchedule(data: TimeLimitRankData, groupId: number) {
|
||||
console.log('########### setTakeRankSnapshotSchedule1 ########')
|
||||
|
||||
if(scheduledJobs[`snapshot${data.activityId}`]) {
|
||||
scheduledJobs[`snapshot${data.activityId}`].cancel();
|
||||
}
|
||||
|
||||
scheduleJob(`snapshot${data.activityId}`, data.rankEndTime, async () => {
|
||||
console.log('########### setTakeRankSnapshotSchedule2 ########')
|
||||
await takeSnapshot(data, groupId);
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user