后台:发送邮件
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { GM_MAIL_TYPE } from '../consts/constModules/mailConst';
|
||||
|
||||
class Reward {
|
||||
@prop({ required: true })
|
||||
@@ -18,11 +17,17 @@ export default class GMMail extends BaseModel {
|
||||
@prop({ required: true, type: Reward, default: [], _id: false })
|
||||
goods: Reward[];
|
||||
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
sendTime: number;
|
||||
@prop({ required: true, default: true })
|
||||
useTempTime: boolean; // 生成邮件是否按照模板时间
|
||||
|
||||
@prop({ required: false})
|
||||
continueHour: number; // 如果不按模板时间,sendTime为生成单独邮件的时候,endTime为sendTime+continueHour,单位小时
|
||||
|
||||
@prop({ required: true })
|
||||
endTime: number;
|
||||
sendTime: number; // 如果按照模板时间,发送时间,10位时间戳
|
||||
|
||||
@prop({ required: true })
|
||||
endTime: number; // 如果按照模板时间,过期时间,10位时间戳
|
||||
|
||||
@prop({ required: true })
|
||||
content: string;
|
||||
@@ -30,13 +35,15 @@ export default class GMMail extends BaseModel {
|
||||
@prop({ required: true })
|
||||
sendName: string;
|
||||
|
||||
@prop({ required: true, enum: GM_MAIL_TYPE })
|
||||
mailType: GM_MAIL_TYPE; // 1-单人邮件 2-多人邮件 3-全服邮件
|
||||
|
||||
public static async addMail(params: GMMailTypeParam) {
|
||||
public static async addMail(params: GMMailTypeParam, uid = 1) {
|
||||
const doc = new GMMailModel();
|
||||
let mail = Object.assign(doc.toJSON(), params);
|
||||
mail = await GMMailModel.findOneAndUpdate({ _id: mail._id }, { $set: mail }, {upsert: true, new: true}).lean();
|
||||
let result: GMMailType = await GMMailModel.findOneAndUpdate({ _id: mail._id }, { $set: {...mail, updatedBy: uid}, $setOnInsert: { createdBy: uid } }, {upsert: true, new: true}).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateMailById(_id: string, params: GMMailTypeParam, uid: number = 1) {
|
||||
let mail: GMMailType = await GMMailModel.findByIdAndUpdate(_id, { $set: {...params, updatedBy: uid}}, {new: true}).lean();
|
||||
return mail;
|
||||
}
|
||||
|
||||
@@ -55,6 +62,38 @@ export default class GMMail extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private static getSearchObj(form: {_id?: string, content?: string}) {
|
||||
let searchObj = {};
|
||||
if(form['_id']) searchObj['_id'] = form._id;
|
||||
if(form['content']) searchObj['context'] = { $regex: new RegExp(form.content.toString(), 'i') }
|
||||
return searchObj
|
||||
}
|
||||
|
||||
public static async findByCondition(page: number, pageSize: number, sortField: string, sortOrder: string, form: {_id?: string, content?: string} = {}) {
|
||||
|
||||
let searchObj = this.getSearchObj(form);
|
||||
let sort = {};
|
||||
if(sortField && sortOrder) {
|
||||
if(sortOrder == 'ascend') {
|
||||
sort[sortField] = 1;
|
||||
} else if (sortOrder == 'descend') {
|
||||
sort[sortField] = -1;
|
||||
}
|
||||
}
|
||||
const result: GMMailType[] = await GMMailModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true });
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public static async countByCondition(form: {_id?: string, content?: string} = {}) {
|
||||
|
||||
let searchObj = this.getSearchObj(form);
|
||||
const result = await GMMailModel.count(searchObj);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const GMMailModel = getModelForClass(GMMail);
|
||||
|
||||
Reference in New Issue
Block a user