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

@@ -10,7 +10,7 @@ import { GMMail as StategyMail } from './ServerStategy';
import { ServerlistType } from './Serverlist';
import moment = require('moment');
class Reward {
class MailReward {
@prop({ required: true })
id: number;
@prop({ required: true })
@@ -26,6 +26,8 @@ export class Receiver {
roleId?: string;
@prop({ required: true })
roleName?: string;
@prop({ required: true, type: MailReward, _id: false })
rewards?: MailReward[];
}
export default class GMMail extends BaseModel {
@@ -33,8 +35,8 @@ export default class GMMail extends BaseModel {
@prop({ required: false})
hasGoods: boolean; // 有效时间,单位小时
@prop({ required: true, type: Reward, default: [], _id: false })
goods: Reward[];
@prop({ required: true, type: MailReward, default: [], _id: false })
goods: MailReward[];
@prop({ required: true, default: true })
timeType: MAIL_TIME_TYPE; // 邮件时间类型

View File

@@ -404,8 +404,8 @@ export default class Role extends BaseModel {
return role;
}
public static async findByRoleName(roleName: string, select?: string, getters = false, virtuals = true) {
const role: RoleType = await RoleModel.findOne({ roleName }).select(select).lean({ getters, virtuals });
public static async findByRoleName(roleName: string, serverId: number, select?: string, getters = false, virtuals = true) {
const role: RoleType = await RoleModel.findOne({ roleName, serverId }).select(select).lean({ getters, virtuals });
return role;
}

View File

@@ -20,14 +20,14 @@ export class UpdateMailParams {
content: string;
sendName: string;
mailType: GM_MAIL_TYPE; // 收件人类型
receivers: {env: string; serverId: number; roleId: string; roleName: string; }[];
receivers: {env: string; serverId: number; roleId: string; roleName: string; rewards: {id: number; count: number}[] }[];
reason: string; // 原因
isSp: boolean = false; // 特殊邮件
isSingle: boolean;
constructor(obj: UpdateMailParams) {
this.goods = obj.goods;
this.hasGoods = obj.goods?.length > 0;
if(obj.goods && obj.goods?.length > 0) this.hasGoods = true;
this.timeType = obj.timeType;
this.expire = obj.expire;
this.startTime = obj.startTime;
@@ -44,6 +44,12 @@ export class UpdateMailParams {
this.mailType = GM_MAIL_TYPE.SERVER;
}
this.receivers = obj.receivers;
if(obj.receivers && obj.receivers.length > 0) {
for(let { rewards } of obj.receivers) {
console.log('#### rewards', rewards)
if(rewards && rewards.length > 0) this.hasGoods = true;
}
}
this.reason = obj.reason;
this.isSp = obj.isSp;
}

View File

@@ -999,5 +999,12 @@
"name": "上传二维码",
"module": "server",
"type": "update"
},
{
"id": 144,
"api": "/api/upload/uploadmailexcel",
"name": "上传excel",
"module": "server",
"type": "update"
}
]