This commit is contained in:
mamengke01
2021-02-06 16:14:43 +08:00
parent 8c6f9066ba
commit 4ff0facdc8
5 changed files with 98 additions and 45 deletions

View File

@@ -11,6 +11,7 @@ import { findWhere } from "underscore";
import { MAIL_TYPE, MAIL_TEM_TYPE, GM_MAIL_TYPE, MAIL_STATUS } from "../consts/constModules/mailConst";
import { DATA_NAME } from '../consts/dataName';
import { lockData } from './redLockService';
import GMMail from "../db/GMMail";
export async function sendMail(operate: number, toRoleId: string, sendName: string = '系统', params: string[] = [], goods: RewardInter[] = [], sendTime: number = nowSeconds()) {
let { content, time } = getContent(operate, params);
if (!content)
@@ -76,7 +77,7 @@ export async function refreshMails(roleId: string, sid: string, serverId: number
pushMails.push({ id: mail._id, goods, sendTime, endTime, content, status: MAIL_STATUS.CREATE, mailType: MAIL_TYPE.GROUPMAIL, sendName });
}
}
} else if (gmMailType == GM_MAIL_TYPE.SERVER) { //游戏服邮件
} else if (gmMailType == GM_MAIL_TYPE.SERVER) { //游戏服邮件
let mail = await MailModel.getMail(roleId, mailId, MAIL_TEM_TYPE.GMTYPE);
if (!mail) {
const doc = new MailModel();
@@ -109,4 +110,36 @@ export async function getMails(roleId: string, serverId: number) {
let groupMails = await GroupMailModel.getGroupMailsByRoleId(roleId)||[];
let list: mailData[] = await pinus.app.rpc.gm.gmRemote.getMailInfos.toServer('gm-server-1', roleId, serverId, mails, groupMails);
return list;
}
export async function sendRolesMails(mails) {
let addGroupMails: GroupMailType[] = [];
let pushMessage: pushMail[] = [];
for (let { gmMailType, id: mailId, sendRoles, endTime, content, goods, sendTime, sendName } of mails) {
let uids = [];
if (gmMailType != GM_MAIL_TYPE.GROUPMAIL)
return;
let mail = await GroupMailModel.getMail(mailId, MAIL_TEM_TYPE.GMTYPE);
if (!mail) {
const doc = new GroupMailModel();
const mail = Object.assign(doc.toJSON(), { mailId, mailTemType: MAIL_TEM_TYPE.GMTYPE, sendRoles, sendName });
addGroupMails.push(mail);
}
for (let {roleId} of sendRoles) {
let key = 'login_roleId_' + roleId;
let sid = await getRedis(key);
if (!!sid) {
uids.push({sid, uid: roleId})
}
}
pushMessage.push({route: 'onMailsAdd', data:[{
id: mail._id, goods, sendTime: mail.sendTime, endTime: mail.endTime, content, status: MAIL_STATUS.CREATE, mailType: MAIL_TYPE.SINGLEMAIL, sendName
}], uids});
}
if (!!addGroupMails.length) {
await GroupMailModel.addGroupMails(addGroupMails);
}
pushMessage.forEach( message=> {
pinus.app.channelService.pushMessageByUids('onMailsAdd', resResult(STATUS.SUCCESS, { mails: message.data }), message.uids);
});
}