邮件,pvp赛季结算,boss关卡注释
This commit is contained in:
@@ -11,7 +11,16 @@ 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";
|
||||
|
||||
/**
|
||||
* 下发邮件
|
||||
* @param operate
|
||||
* @param toRoleId
|
||||
* @param sendName
|
||||
* @param params
|
||||
* @param goods
|
||||
* @param sendTime
|
||||
*/
|
||||
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)
|
||||
@@ -19,13 +28,17 @@ export async function sendMail(operate: number, toRoleId: string, sendName: stri
|
||||
let mail = await MailModel.addMail({roleId: toRoleId, sendTime, goods, sendName, mailId: JSON.stringify(operate), endTime: time + nowSeconds(), mailTemType: MAIL_TEM_TYPE.GAMEMAIL, params});
|
||||
let key = 'login_roleId_' + toRoleId;
|
||||
let sid = await getRedis(key);
|
||||
if (!!sid) {
|
||||
if (!!sid) {//下发邮件,对应前端红点提示
|
||||
pinus.app.channelService.pushMessageByUids('onMailsAdd', resResult(STATUS.SUCCESS, { mails:[{
|
||||
id: mail._id, goods, sendTime: mail.sendTime, endTime: mail.endTime, content, status: mail.status, mailType: MAIL_TYPE.SINGLEMAIL, sendName
|
||||
}]}), [{uid: toRoleId, sid}]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装玩家的邮件内容
|
||||
* @param operate
|
||||
* @param params
|
||||
*/
|
||||
export function getContent(operate: number, params: string[]) {
|
||||
let mail = gameData.mail.get(operate);
|
||||
if (!mail)
|
||||
@@ -37,7 +50,17 @@ export function getContent(operate: number, params: string[]) {
|
||||
}
|
||||
return { content, time }
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装获得邮件的下发信息,以及需要添加的邮件信息
|
||||
* @param roleId
|
||||
* @param operate
|
||||
* @param params
|
||||
* @param goods
|
||||
* @param mails
|
||||
* @param pushMessage
|
||||
* @param sendTime
|
||||
* @param sendName
|
||||
*/
|
||||
export async function getMailContent(roleId: string, operate: number, params: string[], goods: RewardInter[], mails: MailType[], pushMessage: pushMail[], sendTime?:number, sendName: string = '系统') {
|
||||
const doc = new MailModel();
|
||||
let { content, time } = getContent(operate, params);
|
||||
@@ -53,16 +76,22 @@ export async function getMailContent(roleId: string, operate: number, params: st
|
||||
}], uids: [{ uid: roleId, sid }]});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查上次刷新过后至今 gm后台是否有新邮件下发给玩家
|
||||
* @param roleId
|
||||
* @param sid
|
||||
* @param serverId
|
||||
* @param updatedMailAt
|
||||
*/
|
||||
export async function refreshMails(roleId: string, sid: string, serverId: number, updatedMailAt: number) {
|
||||
let res:any = await lockData(serverId, DATA_NAME.GAMEMAIL, roleId);//加锁
|
||||
let gmMails = await pinus.app.rpc.gm.gmRemote.getMails.toServer('gm-server-1', updatedMailAt, serverId);
|
||||
let gmMails = await pinus.app.rpc.gm.gmRemote.getMailsByTime.toServer('gm-server-1', updatedMailAt, serverId);
|
||||
let addGroupMails: GroupMailType[] = [];
|
||||
let addMails: MailType[] = [];
|
||||
let updateMails: mailData[] = [];
|
||||
let pushMails: mailData[] = [];
|
||||
for (let {gmMailType, id: mailId, sendRoles, endTime, content, goods, sendTime, sendName } of gmMails) {
|
||||
if (gmMailType == GM_MAIL_TYPE.GROUPMAIL) { //群体邮件
|
||||
for (let { gmMailType, id: mailId, sendRoles, endTime, content, goods, sendTime, sendName } of gmMails) {
|
||||
if (gmMailType == GM_MAIL_TYPE.GROUPMAIL) { //检查gm群体邮件是否需要加入
|
||||
let mail = await GroupMailModel.getMail(mailId, MAIL_TEM_TYPE.GMTYPE);
|
||||
if (!mail) {
|
||||
const doc = new GroupMailModel();
|
||||
@@ -77,7 +106,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) { //检查gm服邮件是否需要加入
|
||||
let mail = await MailModel.getMail(roleId, mailId, MAIL_TEM_TYPE.GMTYPE);
|
||||
if (!mail) {
|
||||
const doc = new MailModel();
|
||||
@@ -85,11 +114,12 @@ export async function refreshMails(roleId: string, sid: string, serverId: number
|
||||
addMails.push(mail);
|
||||
pushMails.push({ id: mail._id, goods, sendTime, endTime, content, status: mail.status, mailType: MAIL_TYPE.SINGLEMAIL, sendName });
|
||||
} else {
|
||||
//若加入过,可能修改过奖励内容等信息,更新一下邮件的内容
|
||||
updateMails.push({ id: mail._id, goods, sendTime, endTime, content, status: mail.status, mailType: MAIL_TYPE.SINGLEMAIL, sendName })
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!!updateMails.length) {
|
||||
if (!!updateMails.length) {//下发邮件修改推送
|
||||
pinus.app.channelService.pushMessageByUids('onMailsUpdate', resResult(STATUS.SUCCESS, { mails: updateMails }), [{uid: roleId, sid}]);
|
||||
}
|
||||
if (!!addGroupMails.length) {
|
||||
@@ -99,19 +129,26 @@ export async function refreshMails(roleId: string, sid: string, serverId: number
|
||||
await MailModel.addMails(addMails);
|
||||
}
|
||||
if (!!pushMails.length) {
|
||||
pinus.app.channelService.pushMessageByUids('onMailsAdd', resResult(STATUS.SUCCESS, { mails: pushMails}), [{uid: roleId, sid}]);
|
||||
}
|
||||
pinus.app.channelService.pushMessageByUids('onMailsAdd', resResult(STATUS.SUCCESS, { mails: pushMails}), [{uid: roleId, sid}]);//下发邮件,对应前端红点提示
|
||||
}//下发邮件,对应前端红点提示
|
||||
res.releaseCallback();
|
||||
return nowSeconds();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取邮件信息,gm邮件需要从gm-server-1缓存中读取
|
||||
* @param roleId
|
||||
* @param serverId
|
||||
*/
|
||||
export async function getMails(roleId: string, serverId: number) {
|
||||
let mails = await MailModel.getMailsByRoleId(roleId)||[];
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 下发gm邮件的群体邮件
|
||||
* @param mails
|
||||
*/
|
||||
export async function sendRolesMails(mails) {
|
||||
let addGroupMails: GroupMailType[] = [];
|
||||
let pushMessage: pushMail[] = [];
|
||||
@@ -119,7 +156,7 @@ export async function sendRolesMails(mails) {
|
||||
let uids = [];
|
||||
if (endTime < nowSeconds()|| sendTime > nowSeconds())
|
||||
continue;
|
||||
if (gmMailType != GM_MAIL_TYPE.GROUPMAIL)
|
||||
if (gmMailType != GM_MAIL_TYPE.GROUPMAIL) //不是群体邮件说明是全服邮件,不进行下发
|
||||
return;
|
||||
let mail = await GroupMailModel.getMail(mailId, MAIL_TEM_TYPE.GMTYPE);
|
||||
if (!mail) {
|
||||
@@ -145,5 +182,5 @@ export async function sendRolesMails(mails) {
|
||||
}
|
||||
pushMessage.forEach( message=> {
|
||||
pinus.app.channelService.pushMessageByUids('onMailsAdd', resResult(STATUS.SUCCESS, { mails: message.data }), message.uids);
|
||||
});
|
||||
});//下发邮件,对应前端红点提示
|
||||
}
|
||||
Reference in New Issue
Block a user