后台:邮件

This commit is contained in:
luying
2021-12-01 14:45:06 +08:00
parent 53e55b288f
commit fe372de419
10 changed files with 41 additions and 63 deletions

View File

@@ -9,7 +9,6 @@ import { delGuildActivityRank, getRoleOnlineInfo } from '../../../services/redis
import { SendMailFun } from '../../../services/mailService'; import { SendMailFun } from '../../../services/mailService';
import { GM_MAIL_TYPE } from '../../../consts'; import { GM_MAIL_TYPE } from '../../../consts';
import { RewardInter } from '../../../pubUtils/interface'; import { RewardInter } from '../../../pubUtils/interface';
import { CreateMailParams } from '../../../domain/backEndField/params';
export default function (app: Application) { export default function (app: Application) {
return new GmMailHandler(app); return new GmMailHandler(app);

View File

@@ -1,52 +1,28 @@
import { Controller } from 'egg'; import { Controller } from 'egg';
import { GM_MAIL_STATUS, GM_MAIL_TYPE, STATUS } from '@consts'; import { GM_MAIL_TYPE, STATUS } from '@consts';
import { UpdateMailParams } from '@domain/backEndField/params'; import { UpdateMailParams } from '@domain/backEndField/params';
export default class MailController extends Controller { export default class MailController extends Controller {
public async getCreateSingleMail() { public async getSingleMail() {
const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SINGLE, status: GM_MAIL_STATUS.CREATE, hasGoods: true });
return
}
public async getCreateSingleMailTxt() {
const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SINGLE, status: GM_MAIL_STATUS.CREATE, hasGoods: false });
return
}
public async getCreateServerMail() {
const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SERVER, status: GM_MAIL_STATUS.CREATE, hasGoods: true });
return
}
public async getCreateServerMailTxt() {
const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SERVER, status: GM_MAIL_STATUS.CREATE, hasGoods: false });
return
}
public async getViewSingleMail() {
const { ctx } = this; const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body; const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SINGLE, hasGoods: true }); ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SINGLE, hasGoods: true });
return return
} }
public async getViewSingleMailTxt() { public async getSingleMailTxt() {
const { ctx } = this; const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body; const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SINGLE, hasGoods: false }); ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SINGLE, hasGoods: false });
return return
} }
public async getViewServerMail() { public async getServerMail() {
const { ctx } = this; const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body; const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SERVER, hasGoods: true }); ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SERVER, hasGoods: true });
return return
} }
public async getViewServerMailTxt() { public async getServerMailTxt() {
const { ctx } = this; const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body; const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SERVER, hasGoods: false }); ctx.body = await ctx.service.mail.getGMMailList(page, pageSize, sortField, sortOrder, {...form, mailType: GM_MAIL_TYPE.SERVER, hasGoods: false });
@@ -71,11 +47,15 @@ export default class MailController extends Controller {
public async updateGMMail() { public async updateGMMail() {
const { ctx } = this; const { ctx } = this;
const msg = ctx.request.body; const msg = ctx.request.body;
let params = new UpdateMailParams(msg);
let check = params.checkParams();
if(!check) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
if(msg._id == 'new') { if(msg._id == 'new') {
let params = new UpdateMailParams(msg);
let check = params.checkParams();
if(!check) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
ctx.body = await ctx.service.mail.createGmMail(params); ctx.body = await ctx.service.mail.createGmMail(params);
} else if(msg._id) {
ctx.body = await ctx.service.mail.updateGMMail(msg._id, params);
} else {
return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
} }
return return

View File

@@ -95,15 +95,18 @@ export default (app: Application) => {
router.post('/api/activity/updateactivitytaskpoint', controller.activity.updateActivityTaskPoint); router.post('/api/activity/updateactivitytaskpoint', controller.activity.updateActivityTaskPoint);
router.post('/api/activity/delactivitytaskpoint', controller.activity.delActivityTaskPoint); router.post('/api/activity/delactivitytaskpoint', controller.activity.delActivityTaskPoint);
router.post('/api/mail/getcreatesinglemail', controller.mail.getCreateSingleMail); router.post('/api/mail/getcreatesinglemail', controller.mail.getSingleMail);
router.post('/api/mail/getcreatesinglemailtxt', controller.mail.getCreateSingleMailTxt); router.post('/api/mail/getcreatesinglemailtxt', controller.mail.getSingleMailTxt);
router.post('/api/mail/getcreateservermail', controller.mail.getCreateServerMail); router.post('/api/mail/getcreateservermail', controller.mail.getServerMail);
router.post('/api/mail/getcreateservermailtxt', controller.mail.getCreateServerMailTxt); router.post('/api/mail/getcreateservermailtxt', controller.mail.getServerMailTxt);
router.post('/api/mail/getviewsinglemail', controller.mail.getViewSingleMail); router.post('/api/mail/getviewsinglemail', controller.mail.getSingleMail);
router.post('/api/mail/getviewsinglemailtxt', controller.mail.getViewSingleMailTxt); router.post('/api/mail/getviewsinglemailtxt', controller.mail.getSingleMailTxt);
router.post('/api/mail/getviewservermail', controller.mail.getViewServerMail); router.post('/api/mail/getviewservermail', controller.mail.getServerMail);
router.post('/api/mail/getviewservermailtxt', controller.mail.getViewServerMailTxt); router.post('/api/mail/getviewservermailtxt', controller.mail.getServerMailTxt);
router.post('/api/mail/findrolebyidorname', controller.mail.findRoleByIdOrName); router.post('/api/mail/findrolebyidorname', controller.mail.findRoleByIdOrName);
router.post('/api/mail/updategmmail', controller.mail.updateGMMail); router.post('/api/mail/updatesinglemail', controller.mail.updateGMMail);
router.post('/api/mail/updatesinglemailtxt', controller.mail.updateGMMail);
router.post('/api/mail/updateservermail', controller.mail.updateGMMail);
router.post('/api/mail/updateservermailtxt', controller.mail.updateGMMail);
router.post('/api/mail/getgmmailrecords', controller.mail.getGMMailRecords); router.post('/api/mail/getgmmailrecords', controller.mail.getGMMailRecords);
}; };

View File

@@ -33,18 +33,14 @@ export default class Mail extends Service {
public async createGmMail(params: UpdateMailParams) { public async createGmMail(params: UpdateMailParams) {
const { ctx } = this; const { ctx } = this;
await GMMailModel.addMail(params); await GMMailModel.addMail(params, ctx.user?.uid);
return ctx.service.utils.resResult(STATUS.SUCCESS); return ctx.service.utils.resResult(STATUS.SUCCESS);
} }
public async updateGMMail(isCreate: boolean, params: UpdateMailParams) { public async updateGMMail(_id: string, params: UpdateMailParams) {
const { ctx } = this; const { ctx } = this;
if(isCreate) { await GMMailModel.updateMailById(_id, params, ctx.user?.uid);
await GMMailModel.addMail(params);
} else {
// await GMMailModel.updateMailById(params._id, params);
}
return ctx.service.utils.resResult(STATUS.SUCCESS); return ctx.service.utils.resResult(STATUS.SUCCESS);
} }

View File

@@ -38,7 +38,7 @@ export default class Api extends BaseModel {
} }
export let ApiModel: ReturnModelType<typeof Api, {}> = getModelForClass(Api); export let ApiModel: ReturnModelType<typeof Api, {}>;
export function loadApiModel(connect: mongoose.Connection) { export function loadApiModel(connect: mongoose.Connection) {
ApiModel = getModelForClass(Api, { ApiModel = getModelForClass(Api, {
existingConnection: connect existingConnection: connect

View File

@@ -74,7 +74,7 @@ export default class GMGroup extends BaseModel {
} }
export let GMGroupModel: ReturnModelType<typeof GMGroup, {}> = getModelForClass(GMGroup); export let GMGroupModel: ReturnModelType<typeof GMGroup, {}>;
export function loadGMGroupModel(connect: mongoose.Connection) { export function loadGMGroupModel(connect: mongoose.Connection) {
GMGroupModel = getModelForClass(GMGroup, { GMGroupModel = getModelForClass(GMGroup, {
existingConnection: connect existingConnection: connect

View File

@@ -2,11 +2,10 @@
* 邮件的模板在GM后台能看到的邮件列表 * 邮件的模板在GM后台能看到的邮件列表
*/ */
import BaseModel from './BaseModel'; import BaseModel from './BaseModel';
import { getModelForClass, prop, DocumentType, mongoose } from '@typegoose/typegoose'; import { getModelForClass, prop, DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';
import { nowSeconds } from '../pubUtils/timeUtil'; import { nowSeconds } from '../pubUtils/timeUtil';
import { GM_MAIL_STATUS, GM_MAIL_TYPE, MAIL_TIME_TYPE } from '../consts'; import { GM_MAIL_STATUS, GM_MAIL_TYPE, MAIL_TIME_TYPE } from '../consts';
import { SearchMailParam } from '../domain/backEndField/search'; import { SearchMailParam } from '../domain/backEndField/search';
import { UpdateMailParams } from '../domain/backEndField/params';
class Reward { class Reward {
@prop({ required: true }) @prop({ required: true })
@@ -53,7 +52,7 @@ export default class GMMail extends BaseModel {
circleDay: number; // 循环时间每周几0表示每天 circleDay: number; // 循环时间每周几0表示每天
@prop({ required: true }) @prop({ required: true })
circleHour: number; // 几点发送 circleHour: string; // 几点发送
@prop({ required: true }) @prop({ required: true })
title: string; title: string;
@@ -73,14 +72,14 @@ export default class GMMail extends BaseModel {
@prop({ required: true }) @prop({ required: true })
reason: string; // 原因 reason: string; // 原因
@prop({ required: true }) @prop({ required: true, default: false })
isSp: boolean; // 特殊邮件 isSp: boolean; // 特殊邮件
@prop({ required: true }) @prop({ required: true, default: 0 })
status: GM_MAIL_STATUS; // 邮件状态 status: GM_MAIL_STATUS; // 邮件状态
public static async addMail(params: UpdateMailParams, uid = 1) { public static async addMail(params: GMMailTypeParam, uid = 1) {
const doc = new GMMailModel(); const doc = new GMMailModel();
let mail = Object.assign(doc.toJSON(), params); let mail = Object.assign(doc.toJSON(), params);
let result: GMMailType = await GMMailModel.findOneAndUpdate({ _id: mail._id }, { $set: {...mail, updatedBy: uid}, $setOnInsert: { createdBy: uid } }, {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();
@@ -110,8 +109,9 @@ export default class GMMail extends BaseModel {
private static getSearchObj(form: SearchMailParam) { private static getSearchObj(form: SearchMailParam) {
let searchObj = {}; let searchObj = {};
if(form.createTimeStart) searchObj['createdAt'] = { $gt: new Date(form.createTimeStart) }; console.log('******', form)
if(form.createTimeEnd) searchObj['createdAt'] = { $lt: new Date(form.createTimeEnd) }; if(form.createTimeStart) searchObj['createdAt'] = { $gt: new Date(form.createTimeStart * 1000) };
if(form.createTimeEnd) searchObj['createdAt'] = { $lt: new Date(form.createTimeEnd * 1000) };
if(form.serverId) searchObj['receivers.serverId'] = form.serverId; if(form.serverId) searchObj['receivers.serverId'] = form.serverId;
if(form.roleId) searchObj['receivers.roleId'] = form.roleId; if(form.roleId) searchObj['receivers.roleId'] = form.roleId;
if(form.roleName) searchObj['receivers.roleName'] = { $regex: new RegExp(form.roleName.toString(), 'i') } if(form.roleName) searchObj['receivers.roleName'] = { $regex: new RegExp(form.roleName.toString(), 'i') }
@@ -148,7 +148,7 @@ export default class GMMail extends BaseModel {
} }
export let GMMailModel = getModelForClass(GMMail); export let GMMailModel: ReturnModelType<typeof GMMail, {}>;
export function loadGMMailModel(connect: mongoose.Connection) { export function loadGMMailModel(connect: mongoose.Connection) {
GMMailModel = getModelForClass(GMMail, { GMMailModel = getModelForClass(GMMail, {
existingConnection: connect existingConnection: connect

View File

@@ -28,7 +28,7 @@ export default class GMRecord extends BaseModel {
} }
export let GMRecordModel: ReturnModelType<typeof GMRecord, {}> = getModelForClass(GMRecord); export let GMRecordModel: ReturnModelType<typeof GMRecord, {}>;
export function loadGMRecordModel(connect: mongoose.Connection) { export function loadGMRecordModel(connect: mongoose.Connection) {
GMRecordModel = getModelForClass(GMRecord, { GMRecordModel = getModelForClass(GMRecord, {
existingConnection: connect existingConnection: connect

View File

@@ -85,7 +85,7 @@ export default class GMUser extends BaseModel {
} }
} }
export let GMUserModel: ReturnModelType<typeof GMUser, {}> = getModelForClass(GMUser); export let GMUserModel: ReturnModelType<typeof GMUser, {}>;
export function loadGMUserModel(connect: mongoose.Connection) { export function loadGMUserModel(connect: mongoose.Connection) {
GMUserModel = getModelForClass(GMUser, { GMUserModel = getModelForClass(GMUser, {
existingConnection: connect existingConnection: connect

View File

@@ -32,7 +32,7 @@ export default class GMUserGroup extends BaseModel {
} }
} }
export let GMUserGroupModel: ReturnModelType<typeof GMUserGroup, {}> = getModelForClass(GMUserGroup); export let GMUserGroupModel: ReturnModelType<typeof GMUserGroup, {}>;
export function loadGMUserGroupModel(connect: mongoose.Connection) { export function loadGMUserGroupModel(connect: mongoose.Connection) {
GMUserGroupModel = getModelForClass(GMUserGroup, { GMUserGroupModel = getModelForClass(GMUserGroup, {
existingConnection: connect existingConnection: connect