feat(后台): 批量邮件

This commit is contained in:
luying
2023-06-03 20:02:24 +08:00
parent 6e5a8affe9
commit ac877d9561
12 changed files with 435 additions and 308 deletions

View File

@@ -13,7 +13,7 @@ import { taflush } from '../../../services/sdkService';
import { ActivityInRemote } from '../../../domain/activityField/activityField';
import { pushCurrentTime } from '../../../services/auctionService';
import { SurveyModel, SurveyUpdate } from '../../../db/Survery';
import { getSurvey } from '../../../services/gmService';
import { compaireMailGoods, getSurvey } from '../../../services/gmService';
import { sendMessageToAllWithSuc } from '../../../services/pushService';
import { sendMailByContent, sendMailsByGmMail } from '../../../services/mailService';
import { saveMemory } from '../../../services/log/memoryLogService';
@@ -69,13 +69,28 @@ export class GmHandler {
//对接gm后台下发邮件
async sendMail(gmmail: GMMailType, isPass: boolean, uid: number) {
let id = gmmail._id;
let { receivers, mailType, status, timeType, startTime, circleHour, circleDay } = gmmail;
let { receivers, mailType, status, hasGoods, goods } = gmmail;
if(status != GM_MAIL_STATUS.CREATE) {
return resResult(STATUS.GM_MAIL_HAS_SENT);
}
if(isPass) {
await sendMailsByGmMail([gmmail]);
let gmmailArr: GMMailType[] = [];
if(mailType == GM_MAIL_TYPE.SINGLE && hasGoods && (!goods || goods.length == 0)) {
for(let receiver of receivers) {
let index = gmmailArr.findIndex(gmmail => compaireMailGoods(gmmail, receiver));
if(index == -1) {
gmmailArr.push({...gmmail, receivers: [receiver], goods: receiver.rewards, hasGoods: receiver?receiver.rewards.length > 0: false });
} else {
gmmailArr[index].receivers.push(receiver);
}
}
} else {
gmmailArr.push(gmmail);
}
await sendMailsByGmMail(gmmailArr);
}
await GMMailModel.updateMailById(id, { status: isPass? GM_MAIL_STATUS.PASS: GM_MAIL_STATUS.NOT_PASS, viewAt: new Date(), viewBy: uid }, uid);
return resResult(STATUS.SUCCESS);

View File

@@ -6,7 +6,7 @@ import { GroupMessageType } from "../db/GroupMessage";
import { pinus } from "pinus";
import { ServerlistModel, ServerlistType } from "../db/Serverlist";
import { sendMailsByGmMail } from "./mailService";
import GMMail, { GMMailModel } from '../db/GMMail';
import GMMail, { GMMailModel, GMMailType, Receiver } from '../db/GMMail';
import { getPastTime, nowSeconds } from "../pubUtils/timeUtil";
import { CreateServerParam } from "../domain/backEndField/params";
import { SignInData } from "../domain/activityField/signInField";
@@ -385,4 +385,19 @@ export async function calHiddenData(uid: number) {
}
}
await HiddenDataModel.updateHiddenData(getPastTime(), heroes, goods, uid);
}
export function compaireMailGoods(gmmail: GMMailType, receiver: Receiver) {
if(gmmail.hasGoods == false && (!receiver.rewards || receiver.rewards.length)) return true;
let tmpGoods = gmmail.goods||[];
let receiverGoods = receiver.rewards||[];
if(tmpGoods.length != receiverGoods.length) return false;
tmpGoods.sort((a, b) => a.id - b.id);
receiverGoods.sort((a, b) => a.id - b.id);
for(let i = 0; i < tmpGoods.length; i++) {
if(!receiverGoods[i]) return false;
if(tmpGoods[i].id != receiverGoods[i].id || tmpGoods[i].count != receiverGoods[i].count) return false;
}
return true
}