后台:邮件
This commit is contained in:
@@ -31,39 +31,6 @@ export class GmHandler {
|
|||||||
constructor(private app: Application) {
|
constructor(private app: Application) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//对接gm后台,下发邮件
|
|
||||||
async addMail(msg: { endTime: number, sendName: string, content: string, goods: RewardInter[], sendTime: number }) {
|
|
||||||
let { endTime, content, sendName, sendTime, goods } = msg;
|
|
||||||
let mail = await GMMailModel.addMail({ endTime, content, sendName, sendTime, goods });
|
|
||||||
return resResult(STATUS.SUCCESS, { mail });
|
|
||||||
}
|
|
||||||
|
|
||||||
async sendMail(msg: { id: string, mailType: number, roleIds?: string[], serverIds?: number[] }, session: BackendSession) {
|
|
||||||
const uid: number = session.get('uid')
|
|
||||||
let { id, mailType, roleIds, serverIds } = msg;
|
|
||||||
let f = new SendMailFun();
|
|
||||||
await f.setWithGmMail(id);
|
|
||||||
if (mailType == GM_MAIL_TYPE.SINGLE || mailType == GM_MAIL_TYPE.GROUP) {
|
|
||||||
await f.sendToUsers(mailType, roleIds);
|
|
||||||
} else {
|
|
||||||
await f.sendToServer(serverIds);
|
|
||||||
}
|
|
||||||
await f.saveRecord(uid);
|
|
||||||
return resResult(STATUS.SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
async sendWithContent(msg: { contentId: number, mailType: number, params: { params?: string[], sendName?: string, goods?: RewardInter[], endTime?: number }, roleIds?: string[], serverIds?: number[] }, session: BackendSession) {
|
|
||||||
let { contentId, mailType, roleIds, serverIds, params } = msg;
|
|
||||||
let f = new SendMailFun();
|
|
||||||
f.setWithContentId(contentId, params);
|
|
||||||
if (mailType == GM_MAIL_TYPE.SINGLE || mailType == GM_MAIL_TYPE.GROUP) {
|
|
||||||
await f.sendToUsers(mailType, roleIds);
|
|
||||||
} else {
|
|
||||||
await f.sendToServer(serverIds);
|
|
||||||
}
|
|
||||||
return resResult(STATUS.SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
async reloadResource(msg: {}, session: BackendSession) {
|
async reloadResource(msg: {}, session: BackendSession) {
|
||||||
try {
|
try {
|
||||||
let activityServers = this.app.getServersByType('activity');
|
let activityServers = this.app.getServersByType('activity');
|
||||||
|
|||||||
48
game-server/app/servers/gm/handler/gmMailHandler.ts
Normal file
48
game-server/app/servers/gm/handler/gmMailHandler.ts
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
import { Application, BackendSession, pinus } from 'pinus';
|
||||||
|
import { RoleModel } from '../../../db/Role';
|
||||||
|
import { EventRecordModel } from '../../../db/EventRecord';
|
||||||
|
import { getEvent } from '../../../services/eventSercive';
|
||||||
|
import { getRandSingleEelm, resResult } from '../../../pubUtils/util';
|
||||||
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
|
import { GMMailModel } from '../../../db/GMMail';
|
||||||
|
import { delGuildActivityRank, getRoleOnlineInfo } from '../../../services/redisService';
|
||||||
|
import { SendMailFun } from '../../../services/mailService';
|
||||||
|
import { GM_MAIL_TYPE } from '../../../consts';
|
||||||
|
import { RewardInter } from '../../../pubUtils/interface';
|
||||||
|
import { CreateMailParams } from '../../../domain/backEndField/params';
|
||||||
|
|
||||||
|
export default function (app: Application) {
|
||||||
|
return new GmMailHandler(app);
|
||||||
|
}
|
||||||
|
|
||||||
|
export class GmMailHandler {
|
||||||
|
constructor(private app: Application) {
|
||||||
|
}
|
||||||
|
|
||||||
|
//对接gm后台,下发邮件
|
||||||
|
async sendMail(msg: { id: string, mailType: number, roleIds?: string[], serverIds?: number[] }, session: BackendSession) {
|
||||||
|
const uid: number = session.get('uid')
|
||||||
|
let { id, mailType, roleIds, serverIds } = msg;
|
||||||
|
let f = new SendMailFun();
|
||||||
|
await f.setWithGmMail(id);
|
||||||
|
if (mailType == GM_MAIL_TYPE.SINGLE || mailType == GM_MAIL_TYPE.GROUP) {
|
||||||
|
await f.sendToUsers(mailType, roleIds);
|
||||||
|
} else {
|
||||||
|
await f.sendToServer(serverIds);
|
||||||
|
}
|
||||||
|
await f.saveRecord(uid);
|
||||||
|
return resResult(STATUS.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
async sendWithContent(msg: { contentId: number, mailType: number, params: { params?: string[], sendName?: string, goods?: RewardInter[], endTime?: number }, roleIds?: string[], serverIds?: number[] }, session: BackendSession) {
|
||||||
|
let { contentId, mailType, roleIds, serverIds, params } = msg;
|
||||||
|
let f = new SendMailFun();
|
||||||
|
f.setWithContentId(contentId, params);
|
||||||
|
if (mailType == GM_MAIL_TYPE.SINGLE || mailType == GM_MAIL_TYPE.GROUP) {
|
||||||
|
await f.sendToUsers(mailType, roleIds);
|
||||||
|
} else {
|
||||||
|
await f.sendToServer(serverIds);
|
||||||
|
}
|
||||||
|
return resResult(STATUS.SUCCESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,12 +2,6 @@ import { Application, ChannelService, HandlerService, } from 'pinus';
|
|||||||
import { resResult } from '../../../pubUtils/util';
|
import { resResult } from '../../../pubUtils/util';
|
||||||
import { STATUS } from '../../../consts';
|
import { STATUS } from '../../../consts';
|
||||||
import { setGmMails, getGmMailById, getGmMails, getGmUseMails } from '../../../pubUtils/gmData/gmDataUtil';
|
import { setGmMails, getGmMailById, getGmMails, getGmUseMails } from '../../../pubUtils/gmData/gmDataUtil';
|
||||||
import { MAIL_TYPE, MAIL_TEM_TYPE, MAIL_STATUS } from "../../../consts/constModules/mailConst";
|
|
||||||
import { mailData } from "../../../pubUtils/interface";
|
|
||||||
import { findWhere } from 'underscore';
|
|
||||||
import { nowSeconds } from '../../../pubUtils/timeUtil';
|
|
||||||
import { GroupMailType } from '../../../db/GroupMail';
|
|
||||||
import { MailType } from '../../../db/Mail';
|
|
||||||
import { mongoose } from '@typegoose/typegoose';
|
import { mongoose } from '@typegoose/typegoose';
|
||||||
const { ObjectId } = mongoose.Types;
|
const { ObjectId } = mongoose.Types;
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { MailModel, MailType } from '../../../db/Mail';
|
|||||||
import { GroupMailModel, GroupMailType } from '../../../db/GroupMail';
|
import { GroupMailModel, GroupMailType } from '../../../db/GroupMail';
|
||||||
import { resResult } from '../../../pubUtils/util';
|
import { resResult } from '../../../pubUtils/util';
|
||||||
import { STATUS } from '../../../consts/statusCode';
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
import { MAIL_STATUS, MAIL_TEM_TYPE, GM_MAIL_TYPE } from '../../../consts/constModules/mailConst';
|
import { MAIL_STATUS, GM_MAIL_TYPE } from '../../../consts/constModules/mailConst';
|
||||||
import { addItems } from '../../../services/rewardService';
|
import { addItems } from '../../../services/rewardService';
|
||||||
import { checkMailGoods, getMails } from '../../../services/mailService';
|
import { checkMailGoods, getMails } from '../../../services/mailService';
|
||||||
import { ServerMailModel, ServerMailType } from '../../../db/ServerMail';
|
import { ServerMailModel, ServerMailType } from '../../../db/ServerMail';
|
||||||
|
|||||||
@@ -96,18 +96,18 @@ export class SendMailFun {
|
|||||||
|
|
||||||
// 从GMMail表读取数据
|
// 从GMMail表读取数据
|
||||||
public async setWithGmMail(gmmailId: string) {
|
public async setWithGmMail(gmmailId: string) {
|
||||||
let gmmail = await GMMailModel.getGmMailById(gmmailId);
|
// let gmmail = await GMMailModel.getGmMailById(gmmailId);
|
||||||
if(gmmail) {
|
// if(gmmail) {
|
||||||
this.gmmail = gmmail;
|
// this.gmmail = gmmail;
|
||||||
if(gmmail.useTempTime) {
|
// if(gmmail.useTempTime) {
|
||||||
this.sendTime = gmmail.sendTime;
|
// this.sendTime = gmmail.sendTime;
|
||||||
this.endTime = gmmail.endTime;
|
// this.endTime = gmmail.endTime;
|
||||||
} else {
|
// } else {
|
||||||
this.sendTime = nowSeconds();
|
// this.sendTime = nowSeconds();
|
||||||
this.endTime = this.sendTime + (gmmail.continueHour||0) * 60 * 60;
|
// this.endTime = this.sendTime + (gmmail.continueHour||0) * 60 * 60;
|
||||||
}
|
// }
|
||||||
this.setParam({ ...gmmail });
|
// this.setParam({ ...gmmail });
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private setParam(params: { sendName?: string, endTime?: number, params?: string[], goods?: RewardInter[], content?: string }) {
|
private setParam(params: { sendName?: string, endTime?: number, params?: string[], goods?: RewardInter[], content?: string }) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Controller } from 'egg';
|
import { Controller } from 'egg';
|
||||||
import { GM_MAIL_STATUS, GM_MAIL_TYPE, STATUS } from '@consts';
|
import { GM_MAIL_STATUS, GM_MAIL_TYPE, STATUS } from '@consts';
|
||||||
|
import { UpdateMailParams } from '@domain/backEndField/params';
|
||||||
|
|
||||||
export default class MailController extends Controller {
|
export default class MailController extends Controller {
|
||||||
|
|
||||||
@@ -58,22 +59,25 @@ export default class MailController extends Controller {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async findRoleByIdOrName() {
|
||||||
|
const { ctx } = this;
|
||||||
|
const { serverId, roleId, roleName }: { serverId: number, roleId?: string, roleName?: string } = ctx.request.body;
|
||||||
|
if(!serverId || (!roleId && !roleName)) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||||
|
ctx.body = await ctx.service.mail.findRoleByIdOrName(serverId, roleId, roleName);
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
public async updateGMMail() {
|
public async updateGMMail() {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
const { _id, sendTime, endTime, useTempTime, continueHour, goods } = ctx.request.body;
|
const msg = ctx.request.body;
|
||||||
if(!_id) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
if(msg._id == 'new') {
|
||||||
if(useTempTime) {
|
let params = new UpdateMailParams(msg);
|
||||||
if(!sendTime || !endTime) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
let check = params.checkParams();
|
||||||
} else {
|
if(!check) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||||
if(!continueHour) return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
ctx.body = await ctx.service.mail.createGmMail(params);
|
||||||
}
|
}
|
||||||
let updateGoods = [];
|
|
||||||
try{
|
|
||||||
updateGoods = JSON.parse(goods);
|
|
||||||
} catch(e) {
|
|
||||||
return ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
|
||||||
}
|
|
||||||
ctx.body = await ctx.service.mail.updateGMMail(_id, updateGoods);
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ export default (app: Application) => {
|
|||||||
router.post('/api/mail/getviewsinglemailtxt', controller.mail.getViewSingleMailTxt);
|
router.post('/api/mail/getviewsinglemailtxt', controller.mail.getViewSingleMailTxt);
|
||||||
router.post('/api/mail/getviewservermail', controller.mail.getViewServerMail);
|
router.post('/api/mail/getviewservermail', controller.mail.getViewServerMail);
|
||||||
router.post('/api/mail/getviewservermailtxt', controller.mail.getViewServerMailTxt);
|
router.post('/api/mail/getviewservermailtxt', controller.mail.getViewServerMailTxt);
|
||||||
|
router.post('/api/mail/findrolebyidorname', controller.mail.findRoleByIdOrName);
|
||||||
router.post('/api/mail/updategmmail', controller.mail.updateGMMail);
|
router.post('/api/mail/updategmmail', controller.mail.updateGMMail);
|
||||||
router.post('/api/mail/getgmmailrecords', controller.mail.getGMMailRecords);
|
router.post('/api/mail/getgmmailrecords', controller.mail.getGMMailRecords);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -90,8 +90,8 @@ export default class Game extends Service {
|
|||||||
|
|
||||||
let marqueeResult = await MarqueeModel.createData({ ...marquee, serverIds: values.serverIds, type: MARQUEE_TYPE.SCHEDULE, isRunning: false }, ctx.user?.uid);
|
let marqueeResult = await MarqueeModel.createData({ ...marquee, serverIds: values.serverIds, type: MARQUEE_TYPE.SCHEDULE, isRunning: false }, ctx.user?.uid);
|
||||||
let noticeResult = await NoticeModel.updateNotice('new', { ...notice, type: 1, sort: 1000, serverType: curEnv?.serverType, isEnable: false }, ctx.user?.uid);
|
let noticeResult = await NoticeModel.updateNotice('new', { ...notice, type: 1, sort: 1000, serverType: curEnv?.serverType, isEnable: false }, ctx.user?.uid);
|
||||||
let mailResult = await GMMailModel.addMail({ ...mail, }, ctx.user?.uid);
|
// let mailResult = await GMMailModel.addMail(mail, ctx.user?.uid);
|
||||||
await MaintenanceModel.createData(values, marqueeResult, noticeResult, mailResult);
|
await MaintenanceModel.createData(values, marqueeResult, noticeResult, null);
|
||||||
} else {
|
} else {
|
||||||
let maintenanceResult = await MaintenanceModel.updateData(values.code, values, ctx.user?.uid);
|
let maintenanceResult = await MaintenanceModel.updateData(values.code, values, ctx.user?.uid);
|
||||||
if(!maintenanceResult) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
if(!maintenanceResult) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
|
|
||||||
import { Service } from 'egg';
|
import { Service } from 'egg';
|
||||||
import { GMMailModel } from '@db/GMMail';
|
import { GMMailModel, } from '@db/GMMail';
|
||||||
import { STATUS } from '@consts';
|
import { STATUS } from '@consts';
|
||||||
import { GMMailRecordModel } from '@db/GMMailRecord';
|
import { GMMailRecordModel } from '@db/GMMailRecord';
|
||||||
import { RewardInter } from '@pubUtils/interface';
|
|
||||||
import { SearchMailParam } from '@domain/backEndField/search';
|
import { SearchMailParam } from '@domain/backEndField/search';
|
||||||
|
import { UpdateMailParams } from '@domain/backEndField/params';
|
||||||
|
import { RoleModel, RoleType } from '@db/Role';
|
||||||
|
|
||||||
export default class Mail extends Service {
|
export default class Mail extends Service {
|
||||||
|
|
||||||
@@ -17,12 +18,32 @@ export default class Mail extends Service {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async updateGMMail(_id: string, goods: RewardInter[]) {
|
public async findRoleByIdOrName(serverId: number, roleId: string, roleName: string) {
|
||||||
|
let role: RoleType;
|
||||||
|
if(roleId) {
|
||||||
|
role = await RoleModel.findByRoleId(roleId);
|
||||||
|
}
|
||||||
|
if(roleName) {
|
||||||
|
role = await RoleModel.findByRoleName(roleName);
|
||||||
|
}
|
||||||
|
if(!role || role.serverId != serverId) return this.ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||||
|
return this.ctx.service.utils.resResult(STATUS.SUCCESS, { env: this.ctx.app.config.realEnv, serverId, roleId: role.roleId, roleName: role.roleName })
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createGmMail(params: UpdateMailParams) {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
if(_id == 'new') {
|
await GMMailModel.addMail(params);
|
||||||
await GMMailModel.addMail({ goods });
|
|
||||||
|
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async updateGMMail(isCreate: boolean, params: UpdateMailParams) {
|
||||||
|
const { ctx } = this;
|
||||||
|
if(isCreate) {
|
||||||
|
await GMMailModel.addMail(params);
|
||||||
} else {
|
} else {
|
||||||
await GMMailModel.updateMailById(_id, { goods });
|
// await GMMailModel.updateMailById(params._id, params);
|
||||||
}
|
}
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { COUNTER } from '../consts';
|
|||||||
import { CounterModel } from './Counter';
|
import { CounterModel } from './Counter';
|
||||||
import { HeroModel } from './Hero';
|
import { HeroModel } from './Hero';
|
||||||
import { RoleModel } from './Role';
|
import { RoleModel } from './Role';
|
||||||
import { SearchEquipParam } from '@domain/backEndField/search';
|
import { SearchEquipParam } from '../domain/backEndField/search';
|
||||||
|
|
||||||
export class RandSe {
|
export class RandSe {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import BaseModel from './BaseModel';
|
|||||||
import { getModelForClass, prop, DocumentType, mongoose } from '@typegoose/typegoose';
|
import { getModelForClass, prop, DocumentType, mongoose } 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 })
|
||||||
@@ -14,7 +15,7 @@ class Reward {
|
|||||||
count: number;
|
count: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Receiver {
|
export class Receiver {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
env: string;
|
env: string;
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
@@ -66,9 +67,6 @@ export default class GMMail extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
mailType: GM_MAIL_TYPE; // 收件人类型
|
mailType: GM_MAIL_TYPE; // 收件人类型
|
||||||
|
|
||||||
@prop({ required: true })
|
|
||||||
env: string; // 大区环境变量
|
|
||||||
|
|
||||||
@prop({ required: true, type: Receiver, _id: false })
|
@prop({ required: true, type: Receiver, _id: false })
|
||||||
receivers: Receiver[];
|
receivers: Receiver[];
|
||||||
|
|
||||||
@@ -81,7 +79,8 @@ export default class GMMail extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
status: GM_MAIL_STATUS; // 邮件状态
|
status: GM_MAIL_STATUS; // 邮件状态
|
||||||
|
|
||||||
public static async addMail(params: GMMailTypeParam, uid = 1) {
|
|
||||||
|
public static async addMail(params: UpdateMailParams, 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();
|
||||||
|
|||||||
@@ -362,12 +362,16 @@ export default class Role extends BaseModel {
|
|||||||
const role: RoleType = await RoleModel.findOne({ roleId }).select(select).lean({ getters, virtuals });
|
const role: RoleType = await RoleModel.findOne({ roleId }).select(select).lean({ getters, virtuals });
|
||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async findByRoleIds(roleIds: string[], select?: string, getters = false, virtuals = true) {
|
public static async findByRoleIds(roleIds: string[], select?: string, getters = false, virtuals = true) {
|
||||||
const role: RoleType[] = await RoleModel.find({ roleId: { $in: roleIds } }).select(select).lean({ getters, virtuals });
|
const role: RoleType[] = await RoleModel.find({ roleId: { $in: roleIds } }).select(select).lean({ getters, virtuals });
|
||||||
return role;
|
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 });
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
public static async createRole(uid: number, serverId: number, roleInfo: { roleId: string; roleName: string; seqId: number; code: string, lv?: number, exp?: number }, lean = true) {
|
public static async createRole(uid: number, serverId: number, roleInfo: { roleId: string; roleName: string; seqId: number; code: string, lv?: number, exp?: number }, lean = true) {
|
||||||
const user = await User.findUserByUid(uid);
|
const user = await User.findUserByUid(uid);
|
||||||
if (!user) return null;
|
if (!user) return null;
|
||||||
|
|||||||
@@ -87,6 +87,11 @@ export default class Serverlist extends BaseModel {
|
|||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async findByServerIds(serverIds: number[]) {
|
||||||
|
let servers: ServerlistType[] = await ServerlistModel.find({ id: { $in: serverIds } }).select('medianCe activityGroupId').lean({ getters: true, virtuals: true });
|
||||||
|
return servers;
|
||||||
|
}
|
||||||
|
|
||||||
public static async updateByServerId(serverId: number, update: ServerlistUpdate) {
|
public static async updateByServerId(serverId: number, update: ServerlistUpdate) {
|
||||||
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $set: update }).lean({ getters: true, virtuals: true });
|
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $set: update }).lean({ getters: true, virtuals: true });
|
||||||
return server;
|
return server;
|
||||||
|
|||||||
65
shared/domain/backEndField/params.ts
Normal file
65
shared/domain/backEndField/params.ts
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import { GM_MAIL_TYPE, MAIL_TIME_TYPE } from "../../consts";
|
||||||
|
import { isArray } from 'underscore';
|
||||||
|
|
||||||
|
export class UpdateMailParams {
|
||||||
|
hasGoods: boolean = false; // 是否有道具
|
||||||
|
goods: {id: number; count: number}[];
|
||||||
|
timeType: MAIL_TIME_TYPE; // 邮件时间类型
|
||||||
|
expire: number; // 有效时间,单位小时
|
||||||
|
startTime: number; // 发送时间,延时邮件使用
|
||||||
|
circleStart: number; // 循环邮件开始循环时间
|
||||||
|
circleEnd: number; // 循环邮件结束循环时间
|
||||||
|
circleDay: number; // 循环时间,每周几,0表示每天
|
||||||
|
circleHour: string; // 几点发送
|
||||||
|
title: string;
|
||||||
|
content: string;
|
||||||
|
sendName: string;
|
||||||
|
mailType: GM_MAIL_TYPE; // 收件人类型
|
||||||
|
receivers: {env: string; serverId: number; roleId: string; roleName: string; }[];
|
||||||
|
reason: string; // 原因
|
||||||
|
isSp: boolean = false; // 特殊邮件
|
||||||
|
isSingle: boolean;
|
||||||
|
|
||||||
|
constructor(obj: UpdateMailParams) {
|
||||||
|
this.goods = obj.goods;
|
||||||
|
this.hasGoods = obj.goods?.length > 0;
|
||||||
|
this.timeType = obj.timeType;
|
||||||
|
this.expire = obj.expire;
|
||||||
|
this.startTime = obj.startTime;
|
||||||
|
this.circleStart = obj.circleStart;
|
||||||
|
this.circleEnd = obj.circleEnd;
|
||||||
|
this.circleDay = obj.circleDay;
|
||||||
|
this.circleHour = obj.circleHour;
|
||||||
|
this.title = obj.title;
|
||||||
|
this.content = obj.content;
|
||||||
|
this.sendName = obj.sendName;
|
||||||
|
if(obj.isSingle == true) {
|
||||||
|
this.mailType = GM_MAIL_TYPE.SINGLE;
|
||||||
|
} else if (obj.isSingle == false) {
|
||||||
|
this.mailType = GM_MAIL_TYPE.SERVER;
|
||||||
|
}
|
||||||
|
this.receivers = obj.receivers;
|
||||||
|
this.reason = obj.reason;
|
||||||
|
}
|
||||||
|
|
||||||
|
checkParams() {
|
||||||
|
if(!this.title || !this.content || !this.sendName || !this.reason) return false;
|
||||||
|
if(this.timeType == MAIL_TIME_TYPE.IMMEDIATE) {
|
||||||
|
if(!this.expire) return false;
|
||||||
|
} else if (this.timeType == MAIL_TIME_TYPE.DELAY) {
|
||||||
|
if(!this.expire || !this.startTime) return false;
|
||||||
|
} else if (this.timeType == MAIL_TIME_TYPE.CIRCLE) {
|
||||||
|
if(!this.expire || !this.circleStart || !this.circleEnd || this.circleDay == undefined || !this.circleHour)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(!this.receivers || !isArray(this.receivers)) return false;
|
||||||
|
if(!this.mailType) return false;
|
||||||
|
for(let { serverId, roleId, roleName } of this.receivers) {
|
||||||
|
if(!serverId) return false;
|
||||||
|
if(this.mailType == GM_MAIL_TYPE.SINGLE||this.mailType == GM_MAIL_TYPE.GROUP) {
|
||||||
|
if(!roleId || !roleName) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { GM_MAIL_STATUS, GM_MAIL_TYPE } from "@consts";
|
import { GM_MAIL_STATUS, GM_MAIL_TYPE } from "../../consts";
|
||||||
|
|
||||||
export interface SearchUserParam {
|
export interface SearchUserParam {
|
||||||
uid?: number;
|
uid?: number;
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ export class MailParam {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setContent(mail: MailType|GroupMailType|ServerMailType) {
|
setContent(mail: MailType|GroupMailType|ServerMailType) {
|
||||||
let { contentId = 0, params, goods, sendName } = mail;
|
let { contentId = 0, goods, sendName } = mail;
|
||||||
|
let params = []
|
||||||
let dicMail = gameData.mail.get(contentId);
|
let dicMail = gameData.mail.get(contentId);
|
||||||
if(!dicMail) dicMail = gameData.mail.get(0);
|
if(!dicMail) dicMail = gameData.mail.get(0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user