邮件 活跃度下发
This commit is contained in:
68
shared/db/GMMail.ts
Normal file
68
shared/db/GMMail.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { now } from 'moment';
|
||||
class RewardInter {
|
||||
id: number;
|
||||
count: number;
|
||||
}
|
||||
class SendRole {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
status: number;
|
||||
}
|
||||
|
||||
export default class GMMail extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
serverId: number;
|
||||
|
||||
@prop({ required: true })
|
||||
sendRoles: SendRole[];
|
||||
|
||||
@prop({ required: true, type: RewardInter, default: [], _id: false })
|
||||
goods: RewardInter[];
|
||||
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
sendTime: number;
|
||||
|
||||
@prop({ required: true })
|
||||
endTime: number;
|
||||
|
||||
@prop({ required: true })
|
||||
content: string;
|
||||
|
||||
@prop({ required: true })
|
||||
sendName: string;
|
||||
|
||||
@prop({ required: true })
|
||||
gmMailType: number; //1:群体邮件,2:分服务器邮件
|
||||
|
||||
public static async addMail(params: {serverId: number, sendRoles: SendRole[], sendName: string, endTime: number, content: string, gmMailType: number, sendTime?: number, goods?: RewardInter[] }) {
|
||||
const doc = new GMMailModel();
|
||||
const mail = Object.assign(doc.toJSON(), params);
|
||||
await GMMailModel.create(mail);
|
||||
return mail;
|
||||
}
|
||||
|
||||
public static async getGmMailById(_id: string, lean = true) {
|
||||
const result: GMMailType = await GMMailModel.findOne({ _id }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMail(updatedMailAt: number, lean = true) {
|
||||
const result: GMMailType[] = await GMMailModel.find({ $or: [{updatedAt: { $gte: new Date(updatedMailAt) }}, {sendTime: { $lte: nowSeconds() }}], endTime: { $gte: nowSeconds()} }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMails( lean = true) {
|
||||
const result: GMMailType[] = await GMMailModel.find({ endTime: { $gte: nowSeconds() }}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const GMMailModel = getModelForClass(GMMail);
|
||||
|
||||
export interface GMMailType extends Pick<DocumentType<GMMail>, keyof GMMail> { };
|
||||
Reference in New Issue
Block a user