邮件:循环邮件优化
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
|
||||
import { scheduleJob, Job, scheduledJobs, } from 'node-schedule';
|
||||
import { PVPConfigModel, PVPConfigType } from '../db/SystemConfig';
|
||||
import { nowSeconds, getTimeFun, getSeconds } from '../pubUtils/timeUtil';
|
||||
import { nowSeconds, getTimeFun, getSeconds, getZeroPoint } from '../pubUtils/timeUtil';
|
||||
import { getTodayGuildActivity, gameData } from '../pubUtils/data';
|
||||
import { pvpSeasonEnd } from './pvpService';
|
||||
import { getAllOnlineRoles, getAllServers, delGuildActivityRank } from './redisService';
|
||||
@@ -67,7 +67,7 @@ export async function init() {
|
||||
scheduleJob('fetchWord', '0 0 4 * * ?', fetch37Words);
|
||||
|
||||
// 每天邮件
|
||||
scheduleJob('circleMail', '0 0 3 * * ?', sendCircleMail);
|
||||
checkCircleMail();
|
||||
// 每小时查询邮件推送
|
||||
checkMailByHour();
|
||||
|
||||
@@ -403,18 +403,30 @@ function clearAuctionSchedule() {
|
||||
// —————————————— 拍卖行 end —————————————— //
|
||||
|
||||
// —————————————— 邮件 —————————————— //
|
||||
let circleMailJob: Job;
|
||||
async function checkCircleMail() {
|
||||
if(circleMailJob) {
|
||||
circleMailJob.cancel();
|
||||
}
|
||||
circleMailJob = scheduleJob('circleMail', '0 0 20 * * ?', sendCircleMail);
|
||||
sendCircleMail();
|
||||
}
|
||||
|
||||
async function sendCircleMail() {
|
||||
let gmmails = await GMMailModel.findCircleMails(pinus.app.get('env'));
|
||||
let f = new SendMailFun();
|
||||
for(let gmmail of gmmails) {
|
||||
let { receivers, mailType } = gmmail;
|
||||
let { receivers, mailType, sendTimes } = gmmail;
|
||||
let code = await f.setWithGmMail(gmmail);
|
||||
if(mailType == GM_MAIL_TYPE.SINGLE) {
|
||||
await f.createSingleMails(code, receivers.map(cur => cur.roleId));
|
||||
} else if (mailType == GM_MAIL_TYPE.GROUP) {
|
||||
await f.createGroupMails(code, receivers.map(cur => cur.roleId));
|
||||
} else if (mailType == GM_MAIL_TYPE.SERVER) {
|
||||
await f.createServerMails(code, receivers.map(cur => cur.serverId));
|
||||
let mapTemp = f.getMailTemp(code);
|
||||
if(sendTimes.indexOf(mapTemp.sendTime) == -1) {
|
||||
if(mailType == GM_MAIL_TYPE.SINGLE) {
|
||||
await f.createSingleMails(code, receivers.map(cur => cur.roleId));
|
||||
} else if (mailType == GM_MAIL_TYPE.GROUP) {
|
||||
await f.createGroupMails(code, receivers.map(cur => cur.roleId));
|
||||
} else if (mailType == GM_MAIL_TYPE.SERVER) {
|
||||
await f.createServerMails(code, receivers.map(cur => cur.serverId));
|
||||
}
|
||||
}
|
||||
}
|
||||
await f.pushToUsers();
|
||||
@@ -433,7 +445,6 @@ async function checkMailByHour() {
|
||||
}
|
||||
|
||||
async function setMailSchedule(isInit: boolean) {
|
||||
console.log('####### setMailSchedule')
|
||||
let minuteNow = moment().minute();
|
||||
let beforeTime = minuteNow >= 5? moment().minute(5).unix(): moment().minute(5).add(-1, 'h').unix();
|
||||
let time = minuteNow >= 5? moment().minute(5).add(1, 'h').unix(): moment().minute(5).unix();
|
||||
@@ -460,7 +471,6 @@ async function setMailSchedule(isInit: boolean) {
|
||||
|
||||
// 当前时间到下一次定时器之间的定时器
|
||||
export async function addMailsToSchedule(mails: MailType[], groupMails: GroupMailType[], serverMails: ServerMailType[]) {
|
||||
console.log('####### addMailsToSchedule')
|
||||
let minuteNow = moment().minute();
|
||||
let time = minuteNow >= 5? moment().minute(5).add(1, 'h').unix(): moment().minute(5).unix();
|
||||
|
||||
@@ -469,7 +479,6 @@ export async function addMailsToSchedule(mails: MailType[], groupMails: GroupMai
|
||||
if(sendTime * 1000 > Date.now() && sendTime < time && times.indexOf(sendTime) == -1) times.push(sendTime);
|
||||
}
|
||||
|
||||
console.log('#######', times);
|
||||
for(let time of times) {
|
||||
if(!scheduledJobs[`mailPush${time}`]) {
|
||||
scheduleJob(`mailPush${time}`, time * 1000, async () => {
|
||||
|
||||
Reference in New Issue
Block a user