✨ feat(gvg): 排行榜奖励邮件

This commit is contained in:
luying
2023-02-17 11:00:25 +08:00
parent 2eea5d86d9
commit 0804b32db4
9 changed files with 75 additions and 19 deletions
+13 -2
View File
@@ -17,6 +17,7 @@ import { BAG } from "../pubUtils/dicParam";
import { GuildModel, GuildType } from "../db/Guild";
import moment = require("moment");
import { sendMessageToGuildWithSuc, sendMessageToServerWithSuc, sendMessageToUsersWithSuc } from "./pushService";
import { GVGLeagueModel, GVGLeagueType } from "../db/GVGLeague";
/**
* 获取邮件信息
@@ -71,6 +72,16 @@ export async function sendMailToGuildByContent(contentId: MAIL_TYPE, guildCode:
return true;
}
export async function sendMailToLeagueByContent(contentId: MAIL_TYPE, leagueCode: string, params: { sendName?: string, endTime?: number, params?: string[], goods?: RewardInter[] }, league?: GVGLeagueType) {
if(!league) league = await GVGLeagueModel.findByCodeWithoutPopulate(leagueCode);
if(!league) return false;
let f = new SendMailFun();
let code = f.setWithContentId(contentId, params);
await f.createGroupMails(code, league.members.map(cur => cur.roleId), null, leagueCode);
await f.pushToUsers();
return true;
}
export async function sendMailsByGmMail(gmmails: GMMailType[]) {
let f = new SendMailFun();
for(let gmmail of gmmails) {
@@ -224,13 +235,13 @@ export class SendMailFun {
}
// 生成多人邮件
public async createGroupMails(code: string, roleIds: string[], guildCode?: string) {
public async createGroupMails(code: string, roleIds: string[], guildCode?: string, leagueCode?: string) {
let mapTemp = this.mailTemps.get(code);
if(mapTemp.sendTime < nowSeconds()) return;
let roleStatus = roleIds.map(roleId => {
return { roleId, status: MAIL_STATUS.CREATE }
})
let originMail = await GroupMailModel.addMail({ roleStatus, guildCode, ...mapTemp.getCreateMailParams() });
let originMail = await GroupMailModel.addMail({ roleStatus, guildCode, leagueCode, ...mapTemp.getCreateMailParams() });
if(mapTemp.gmmail) await GMMailModel.sendMail(mapTemp.gmmail._id, mapTemp.sendTime);
this.groupMails.push(originMail);
}