邮件:定时循环邮件
This commit is contained in:
@@ -86,6 +86,7 @@ export class GmHandler {
|
|||||||
if(needSend) {
|
if(needSend) {
|
||||||
let f = new SendMailFun();
|
let f = new SendMailFun();
|
||||||
let code = await f.setWithGmMail(gmmail);
|
let code = await f.setWithGmMail(gmmail);
|
||||||
|
if(!code) return resResult(STATUS.GM_MAIL_CAN_NOT_SENT);
|
||||||
|
|
||||||
if (mailType == GM_MAIL_TYPE.SINGLE || mailType == GM_MAIL_TYPE.GROUP) {
|
if (mailType == GM_MAIL_TYPE.SINGLE || mailType == GM_MAIL_TYPE.GROUP) {
|
||||||
let roleIds = receivers.filter(cur => cur.env == this.app.get('env')).map(cur => cur.roleId);
|
let roleIds = receivers.filter(cur => cur.env == this.app.get('env')).map(cur => cur.roleId);
|
||||||
|
|||||||
@@ -82,10 +82,7 @@ export async function getPlayerSignInData(activityId: number, serverId: number,
|
|||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
|
||||||
let playerData = new SignInData(activityData, createTime, serverTime);
|
let playerData = new SignInData(activityData, createTime, serverTime);
|
||||||
console.log('##### getPlayerSignInData',activityId, roleId, playerData.roundIndex, playerData)
|
|
||||||
let playerRecords: ActivitySignInModelType = await ActivitySignInModel.findData(activityId, roleId, playerData.roundIndex);
|
let playerRecords: ActivitySignInModelType = await ActivitySignInModel.findData(activityId, roleId, playerData.roundIndex);
|
||||||
|
|
||||||
console.log('##### getPlayerSignInData playerData', playerRecords, !!playerRecords)
|
|
||||||
playerData.setPlayerRecords(playerRecords);
|
playerData.setPlayerRecords(playerRecords);
|
||||||
return playerData;
|
return playerData;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,8 +169,10 @@ export async function sendOpenServerMail(type: 'openMail'|'circleMail', mail: St
|
|||||||
if(needSend) {
|
if(needSend) {
|
||||||
let f = new SendMailFun();
|
let f = new SendMailFun();
|
||||||
let code = await f.setWithGmMail(gmmail);
|
let code = await f.setWithGmMail(gmmail);
|
||||||
await f.createServerMails(code, [newServer.id]);
|
if(code) {
|
||||||
await f.pushToUsers();
|
await f.createServerMails(code, [newServer.id]);
|
||||||
|
await f.pushToUsers();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -320,7 +322,6 @@ export async function getParamStr(activity: ActivityModelType, productID: string
|
|||||||
pkg = _pkg; item = _item;
|
pkg = _pkg; item = _item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log('&&&&&', item)
|
|
||||||
if(item.isPushing) {
|
if(item.isPushing) {
|
||||||
param['code'] = item.code;
|
param['code'] = item.code;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { ServerMailModel, ServerMailType } from '../db/ServerMail';
|
|||||||
import { getRoleOnlineInfo } from "./redisService";
|
import { getRoleOnlineInfo } from "./redisService";
|
||||||
import { pinus } from "pinus";
|
import { pinus } from "pinus";
|
||||||
import { gameData } from "../pubUtils/data";
|
import { gameData } from "../pubUtils/data";
|
||||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
import { getCurDay, nowSeconds } from '../pubUtils/timeUtil';
|
||||||
import { STATUS } from '../consts/statusCode';
|
import { STATUS } from '../consts/statusCode';
|
||||||
import { genCode, resResult } from '../pubUtils/util';
|
import { genCode, resResult } from '../pubUtils/util';
|
||||||
import { GM_MAIL_TYPE, ITID, MAIL_STATUS, MAIL_TIME_TYPE, MAIL_TYPE, PUSH_ROUTE, SEND_NAME, SEND_TITLE } from "../consts";
|
import { GM_MAIL_TYPE, ITID, MAIL_STATUS, MAIL_TIME_TYPE, MAIL_TYPE, PUSH_ROUTE, SEND_NAME, SEND_TITLE } from "../consts";
|
||||||
@@ -106,7 +106,20 @@ class MailTemp {
|
|||||||
} else if (gmmail.timeType == MAIL_TIME_TYPE.DELAY) {
|
} else if (gmmail.timeType == MAIL_TIME_TYPE.DELAY) {
|
||||||
this.sendTime = gmmail.startTime;
|
this.sendTime = gmmail.startTime;
|
||||||
} else if (gmmail.timeType == MAIL_TIME_TYPE.CIRCLE) {
|
} else if (gmmail.timeType == MAIL_TIME_TYPE.CIRCLE) {
|
||||||
this.sendTime = moment(moment().format('YYYY-MM-DD ' + gmmail.circleHour)).unix();
|
let time = moment(moment().format('YYYY-MM-DD ' + gmmail.circleHour)).unix();
|
||||||
|
if(time < nowSeconds()) {
|
||||||
|
if(gmmail.circleDay == 0) {
|
||||||
|
time += 86400;
|
||||||
|
} else {
|
||||||
|
let date = getCurDay(true); // 今天星期几
|
||||||
|
if(date < gmmail.circleDay) {
|
||||||
|
time += (gmmail.circleDay - date) * 86400;
|
||||||
|
} else {
|
||||||
|
time += (7 + date - gmmail.circleDay) * 86400;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.sendTime = time;
|
||||||
}
|
}
|
||||||
this.endTime = this.sendTime + gmmail.expire * 60 * 60;
|
this.endTime = this.sendTime + gmmail.expire * 60 * 60;
|
||||||
this.sendName = gmmail.sendName;
|
this.sendName = gmmail.sendName;
|
||||||
@@ -114,7 +127,7 @@ class MailTemp {
|
|||||||
this.content = gmmail.content;
|
this.content = gmmail.content;
|
||||||
this.hasGoods = gmmail.hasGoods;
|
this.hasGoods = gmmail.hasGoods;
|
||||||
this.goods = gmmail.goods;
|
this.goods = gmmail.goods;
|
||||||
return gmmail;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getContent(content: string, params: string[] = []) {
|
private getContent(content: string, params: string[] = []) {
|
||||||
@@ -164,7 +177,8 @@ export class SendMailFun {
|
|||||||
// 从GMMail表读取数据
|
// 从GMMail表读取数据
|
||||||
public async setWithGmMail(gmmail: GMMailType) {
|
public async setWithGmMail(gmmail: GMMailType) {
|
||||||
let mailTemp = new MailTemp();
|
let mailTemp = new MailTemp();
|
||||||
mailTemp.setWithGmMail(gmmail);
|
let canSet = mailTemp.setWithGmMail(gmmail);
|
||||||
|
if(!canSet) return false
|
||||||
this.mailTemps.set(mailTemp.code, mailTemp);
|
this.mailTemps.set(mailTemp.code, mailTemp);
|
||||||
return mailTemp.code;
|
return mailTemp.code;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { ACTIVITY_TYPE, COM_BTL_QUALITY, getRedisKeyByRankType, GUILD_ACTIVITY_TYPE } from './../consts';
|
import { ACTIVITY_TYPE, getRedisKeyByRankType, GUILD_ACTIVITY_TYPE } from './../consts';
|
||||||
import * as Redis from 'redis';
|
import * as Redis from 'redis';
|
||||||
import {REDIS_KEY} from '../consts'
|
import {REDIS_KEY} from '../consts'
|
||||||
import { GameModel } from "../db/Game";
|
|
||||||
import { pinus, ServerInfo } from 'pinus';
|
import { pinus, ServerInfo } from 'pinus';
|
||||||
import { GuildRankParam, GuildLeader, RankParam, LineupParam } from '../domain/rank';
|
import { GuildRankParam, GuildLeader, RankParam, LineupParam } from '../domain/rank';
|
||||||
import { comBtlRanges } from '../pubUtils/data';
|
import { comBtlRanges } from '../pubUtils/data';
|
||||||
|
|||||||
@@ -427,10 +427,11 @@ async function sendCircleMail() {
|
|||||||
let gmmails = await GMMailModel.findCircleMails(pinus.app.get('env'));
|
let gmmails = await GMMailModel.findCircleMails(pinus.app.get('env'));
|
||||||
let f = new SendMailFun();
|
let f = new SendMailFun();
|
||||||
for(let gmmail of gmmails) {
|
for(let gmmail of gmmails) {
|
||||||
let { receivers, mailType, sendTimes } = gmmail;
|
let { receivers, mailType, sendTimes, circleStart, circleEnd } = gmmail;
|
||||||
let code = await f.setWithGmMail(gmmail);
|
let code = await f.setWithGmMail(gmmail);
|
||||||
|
if(!code) continue;
|
||||||
let mapTemp = f.getMailTemp(code);
|
let mapTemp = f.getMailTemp(code);
|
||||||
if(sendTimes.indexOf(mapTemp.sendTime) == -1) {
|
if(sendTimes.indexOf(mapTemp.sendTime) == -1 && circleStart <= mapTemp.sendTime && circleEnd >= mapTemp.sendTime) {
|
||||||
if(mailType == GM_MAIL_TYPE.SINGLE) {
|
if(mailType == GM_MAIL_TYPE.SINGLE) {
|
||||||
await f.createSingleMails(code, receivers.map(cur => cur.roleId));
|
await f.createSingleMails(code, receivers.map(cur => cur.roleId));
|
||||||
} else if (mailType == GM_MAIL_TYPE.GROUP) {
|
} else if (mailType == GM_MAIL_TYPE.GROUP) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { Service } from 'egg';
|
import { Service } from 'egg';
|
||||||
import { STATUS } from '@consts';
|
import { STATUS } from '@consts';
|
||||||
// import { GameModel } from '@db/Game';
|
|
||||||
import { ServerlistModel } from '@db/Serverlist';
|
import { ServerlistModel } from '@db/Serverlist';
|
||||||
import { gameData } from '@pubUtils/data';
|
import { gameData } from '@pubUtils/data';
|
||||||
import { DicHero } from '@pubUtils/dictionary/DicHero';
|
import { DicHero } from '@pubUtils/dictionary/DicHero';
|
||||||
|
|||||||
@@ -498,6 +498,7 @@ export const STATUS = {
|
|||||||
GM_MARQUEE_CANCEL_ERR: { code: 60023, simStr: '取消失败' },
|
GM_MARQUEE_CANCEL_ERR: { code: 60023, simStr: '取消失败' },
|
||||||
GM_MAIL_NOT_FOUND: { code: 60024, simStr: '未找到该邮件' },
|
GM_MAIL_NOT_FOUND: { code: 60024, simStr: '未找到该邮件' },
|
||||||
GM_MAIL_HAS_SENT: { code: 60025, simStr: '邮件已经审批过了' },
|
GM_MAIL_HAS_SENT: { code: 60025, simStr: '邮件已经审批过了' },
|
||||||
|
GM_MAIL_CAN_NOT_SENT: { code: 60026, simStr: '邮件不可发送' },
|
||||||
// 支付相关状态 70000 - 79999
|
// 支付相关状态 70000 - 79999
|
||||||
NO_PRODUCT_ID: { code: 70001, simStr: '无效商品' },
|
NO_PRODUCT_ID: { code: 70001, simStr: '无效商品' },
|
||||||
NO_PAY_TYPE: { code: 70002, simStr: '无效支付类型' },
|
NO_PAY_TYPE: { code: 70002, simStr: '无效支付类型' },
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ export default class GroupMail extends MailTemp {
|
|||||||
{'roleStatus.roleId': roleId},
|
{'roleStatus.roleId': roleId},
|
||||||
{'roleStatus.status': { $in: [ MAIL_STATUS.CREATE, MAIL_STATUS.READ, MAIL_STATUS.RECEIVED ] }}
|
{'roleStatus.status': { $in: [ MAIL_STATUS.CREATE, MAIL_STATUS.READ, MAIL_STATUS.RECEIVED ] }}
|
||||||
],
|
],
|
||||||
|
sendTime: { $lte: nowSeconds() } ,
|
||||||
endTime: { $gte: nowSeconds() }
|
endTime: { $gte: nowSeconds() }
|
||||||
}).populate('mail').lean();
|
}).populate('mail').lean();
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ export default class Mail extends MailTemp {
|
|||||||
const result: MailType[] = await MailModel.find({
|
const result: MailType[] = await MailModel.find({
|
||||||
roleId,
|
roleId,
|
||||||
status: { $in: [ MAIL_STATUS.CREATE, MAIL_STATUS.READ, MAIL_STATUS.RECEIVED ] },
|
status: { $in: [ MAIL_STATUS.CREATE, MAIL_STATUS.READ, MAIL_STATUS.RECEIVED ] },
|
||||||
|
sendTime: { $lte: nowSeconds()} ,
|
||||||
endTime: { $gte: nowSeconds() }
|
endTime: { $gte: nowSeconds() }
|
||||||
}).populate('mail').lean();
|
}).populate('mail').lean();
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ export default class ServerMail extends MailTemp {
|
|||||||
const result: ServerMailType[] = await ServerMailModel.find({
|
const result: ServerMailType[] = await ServerMailModel.find({
|
||||||
serverId,
|
serverId,
|
||||||
delRoles: { $ne: roleId },
|
delRoles: { $ne: roleId },
|
||||||
|
sendTime: { $lte: nowSeconds() } ,
|
||||||
endTime: { $gte: nowSeconds() }
|
endTime: { $gte: nowSeconds() }
|
||||||
}).populate('mail').lean();
|
}).populate('mail').lean();
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
Reference in New Issue
Block a user