活动:修改显示排行榜定时器

This commit is contained in:
luying
2022-05-11 21:55:36 +08:00
parent 2e23263e56
commit 6284fa02f7
4 changed files with 31 additions and 57 deletions

View File

@@ -695,8 +695,6 @@ async function initTimeLimitRank() {
}
export async function updateTimeLimitRank(activities: ActivityModelType[]) {
let sendMailDataMap = new Map<number, Map<number, { serverId: number, data: TimeLimitRankData}[]>>(); // activityId => sendTime => data
let takeSnapDataMap = new Map<number, Map<number, { serverId: number, data: TimeLimitRankData}[]>>(); // activityId=>rankTime=>data
for(let activity of activities) {
let { activityId } = activity
let group = await ActivityGroupModel.findByActivity(activityId);
@@ -706,66 +704,40 @@ export async function updateTimeLimitRank(activities: ActivityModelType[]) {
if(env == pinus.app.get('env')) {
let data = new TimeLimitRankData(activity, 0, openTime);
if(data.sendMailTime > Date.now()) {
if(!sendMailDataMap.has(activityId)) {
sendMailDataMap.set(activityId, new Map());
}
if(!sendMailDataMap.get(activityId).has(data.sendMailTime)) {
sendMailDataMap.get(activityId).set(data.sendMailTime, []);
}
sendMailDataMap.get(activityId).get(data.sendMailTime).push({ serverId, data });
await setSendRankMailSchedule(activityId, serverId, data);
}
if(data.rankEndTime > Date.now() && data.needSnapshot()) {
if(!takeSnapDataMap.has(activityId)) {
takeSnapDataMap.set(activityId,new Map());
}
if(!takeSnapDataMap.get(activityId).has(data.rankEndTime)) {
takeSnapDataMap.get(activityId).set(data.rankEndTime, []);
}
takeSnapDataMap.get(activityId).get(data.rankEndTime).push({ serverId, data });
await setTakeRankSnapshotSchedule(activityId, serverId, data);
}
}
}
}
}
for(let [activityId, map] of sendMailDataMap) {
for(let [sendMailTime, arr] of map) {
await setSendRankMailSchedule(sendMailTime, activityId, arr);
}
}
for(let [activityId, map] of takeSnapDataMap) {
for(let [rankEndTime, arr] of map) {
await setTakeRankSnapshotSchedule(rankEndTime, activityId, arr);
}
}
}
async function setSendRankMailSchedule(sendMailTime: number, activityId: number, arr: { serverId: number, data: TimeLimitRankData}[]) {
console.log('########### setSendRankMailSchedule1 ########', sendMailTime, activityId, arr.length)
if(scheduledJobs[`rankMail_${sendMailTime}_${activityId}`]) {
scheduledJobs[`rankMail_${sendMailTime}_${activityId}`].cancel();
async function setSendRankMailSchedule(activityId: number, serverId: number, data: TimeLimitRankData) {
console.log('########### setSendRankMailSchedule1 ########', activityId, serverId, data.sendMailTime)
if(scheduledJobs[`rankMail_${serverId}_${activityId}`]) {
scheduledJobs[`rankMail_${serverId}_${activityId}`].cancel();
}
scheduleJob(`rankMail_${sendMailTime}_${activityId}`, sendMailTime, async () => {
scheduleJob(`rankMail_${serverId}_${activityId}`, data.sendMailTime, async () => {
console.log('########### setSendRankMailSchedule2 ########')
for(let { serverId, data } of arr) {
await sendRankMail(data, serverId);
}
})
await sendRankMail(data, serverId);
});
}
async function setTakeRankSnapshotSchedule(rankEndTime: number, activityId: number, arr: { serverId: number, data: TimeLimitRankData}[]) {
console.log('########### setTakeRankSnapshotSchedule1 ########', rankEndTime, activityId, arr.length)
async function setTakeRankSnapshotSchedule(activityId: number, serverId: number, data: TimeLimitRankData) {
console.log('########### setTakeRankSnapshotSchedule1 ########', activityId, serverId, data.rankEndTime)
if(scheduledJobs[`snapshot_${rankEndTime}_${activityId}`]) {
scheduledJobs[`snapshot_${rankEndTime}_${activityId}`].cancel();
if(scheduledJobs[`snapshot_${serverId}_${activityId}`]) {
scheduledJobs[`snapshot_${serverId}_${activityId}`].cancel();
}
scheduleJob(`snapshot_${rankEndTime}_${activityId}`, rankEndTime, async () => {
scheduleJob(`snapshot_${serverId}_${activityId}`, data.rankEndTime, async () => {
console.log('########### setTakeRankSnapshotSchedule2 ########')
for(let { serverId, data } of arr) {
await takeSnapshot(data, serverId);
}
await takeSnapshot(data, serverId);
})
}
// —————————————— 活动 end —————————————— //