✨ feat(后台): 批量邮件
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user