diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index 4661531d2..e0b361161 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -82,5 +82,6 @@ export class GmHandler { let {sendRoles, endTime, content, sendName, gmMailType, sendTime, goods, serverId} = msg; let mail = await GMMailModel.addMail({serverId, sendRoles, sendName, endTime, content, gmMailType, sendTime, goods}); setGmMails([mail]); + this.app.rpc.role.roleRemote.sendGmMailsToRoles.toServer('role-server-1',[mail]); } } \ No newline at end of file diff --git a/game-server/app/servers/role/remote/roleRemote.ts b/game-server/app/servers/role/remote/roleRemote.ts index 2f595e64a..d218b61f8 100644 --- a/game-server/app/servers/role/remote/roleRemote.ts +++ b/game-server/app/servers/role/remote/roleRemote.ts @@ -1,6 +1,7 @@ import { Application, ChannelService, FrontendSession, RemoterClass } from 'pinus'; import { STATUS } from '../../../consts/statusCode'; import { resResult } from '../../../pubUtils/util'; +import { sendRolesMails } from '../../../services/mailService'; export default function (app: Application) { return new RoleRemote(app); } @@ -12,4 +13,9 @@ export class RoleRemote { this.channelService = app.get('channelService'); } private channelService: ChannelService; + + + sendGmMailsToRoles(mails) { + sendRolesMails(mails) + } } diff --git a/game-server/app/servers/user.rpc.define.ts b/game-server/app/servers/user.rpc.define.ts index 8dcd78764..e1555523e 100644 --- a/game-server/app/servers/user.rpc.define.ts +++ b/game-server/app/servers/user.rpc.define.ts @@ -10,6 +10,7 @@ import { ConnectorRemote } from './connector/remote/connectorRemote'; import { SystimerRemote } from './systimer/remote/systimerRemote'; import { GuildRemote } from './chat/remote/guildRemote'; import { GMRemote } from './gm/remote/gmRemote'; +import { RoleRemote } from './role/remote/roleRemote'; declare global { interface UserRpc { chat: { @@ -28,6 +29,9 @@ declare global { }, gm: { gmRemote: RemoterClass; + }, + role: { + roleRemote: RemoterClass; } } } \ No newline at end of file diff --git a/game-server/app/services/mailService.ts b/game-server/app/services/mailService.ts index df37b5b54..86d7059b0 100644 --- a/game-server/app/services/mailService.ts +++ b/game-server/app/services/mailService.ts @@ -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); + }); } \ No newline at end of file diff --git a/game-server/config/servers.ts b/game-server/config/servers.ts index 7f270589e..89210127d 100644 --- a/game-server/config/servers.ts +++ b/game-server/config/servers.ts @@ -3,136 +3,145 @@ module.exports = { 'connector': [ { 'id': 'connector-server-1', - 'host': '127.0.0.1', + 'host': '192.168.1.136', 'port': 4050, - 'clientHost': '127.0.0.1', + 'clientHost': '192.168.1.136', 'clientPort': 3050, 'frontend': true, 'args': '--inspect=10001' + }, + { + 'id': 'connector-server-2', + 'host': '192.168.1.136', + 'port': 4051, + 'clientHost': '192.168.1.136', + 'clientPort': 3052, + 'frontend': true, + 'args': '--inspect=10002' } ], 'chat': [ - {'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050, "args": " --inspect=9237"} + {'id': 'chat-server-1', 'host': '192.168.1.136', 'port': 6050, "args": " --inspect=9237"} ], 'role': [ - {'id': 'role-server-1', 'host': '127.0.0.1', 'port': 6053, "args": " --inspect=9229"} + {'id': 'role-server-1', 'host': '192.168.1.136', 'port': 6053, "args": " --inspect=9229"} ], 'battle': [ - {'id': 'battle-server-1', 'host': '127.0.0.1', 'port': 6054, "args": " --inspect=9238"} + {'id': 'battle-server-1', 'host': '192.168.1.136', 'port': 6054, "args": " --inspect=9238"} ], 'gm': [ - {'id': 'gm-server-1', 'host': '127.0.0.1', 'port': 6055,"args": " --inspect=9234"} + {'id': 'gm-server-1', 'host': '192.168.1.136', 'port': 6055,"args": " --inspect=9234"} ], 'gate': [ { 'id': 'gate-server-1', - 'host': '127.0.0.1', - 'clientHost': '127.0.0.1', + 'host': '192.168.1.136', + 'clientHost': '192.168.1.136', 'clientPort': 3014, 'frontend': true, "args": " --inspect=9235" }, { 'id': 'gate-server-2', - 'host': '127.0.0.1', - 'clientHost': '127.0.0.1', + 'host': '192.168.1.136', + 'clientHost': '192.168.1.136', 'clientPort': 3015, 'frontend': true, "args": " --inspect=9236" } ], 'systimer': [ - {'id': 'systimer-server-1', 'host': '127.0.0.1', 'port': 6056, "args": " --inspect=9233"} + {'id': 'systimer-server-1', 'host': '192.168.1.136', 'port': 6056, "args": " --inspect=9233"} ] }, 'production': { 'connector': [ - {'id': 'connector-server-1', 'port': 4050, 'clientHost': 'pinus_test.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3050, 'frontend': true}, - {'id': 'connector-server-2', 'port': 4051, 'clientHost': 'pinus_test.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3051, 'frontend': true}, - {'id': 'connector-server-3', 'port': 4052, 'clientHost': 'pinus_test.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3052, 'frontend': true} + {'id': 'connector-server-1', 'port': 4050, 'clientHost': 'pinus_test.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3050, 'frontend': true}, + {'id': 'connector-server-2', 'port': 4051, 'clientHost': 'pinus_test.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3051, 'frontend': true}, + {'id': 'connector-server-3', 'port': 4052, 'clientHost': 'pinus_test.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3052, 'frontend': true} ], 'chat': [ {'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050}, ], 'role': [ - {'id': 'role-server-1', 'host': '127.0.0.1', 'port': 6053} + {'id': 'role-server-1', 'host': '192.168.1.136', 'port': 6053} ], 'battle': [ - {'id': 'battle-server-1', 'host': '127.0.0.1', 'port': 6054} + {'id': 'battle-server-1', 'host': '192.168.1.136', 'port': 6054} ], 'gate': [ - {'id': 'gate-server-1', 'host': '127.0.0.1', 'clientHost': 'pinus_test.trgame.cn', 'clientPort': 3014, 'frontend': true}, + {'id': 'gate-server-1', 'host': '192.168.1.136', 'clientHost': 'pinus_test.trgame.cn', 'clientPort': 3014, 'frontend': true}, { 'id': 'gate-server-2', - 'host': '127.0.0.1', + 'host': '192.168.1.136', 'clientHost': 'pinus_test.trgame.cn', 'clientPort': 3015, 'frontend': true } ], 'gm': [ - {'id': 'gm-server-1', 'host': '127.0.0.1', 'port': 6055} + {'id': 'gm-server-1', 'host': '192.168.1.136', 'port': 6055} ], 'systimer': [ - {'id': 'systimer-server-1', 'host': '127.0.0.1', 'port': 6056} + {'id': 'systimer-server-1', 'host': '192.168.1.136', 'port': 6056} ] }, 'alpha': { 'connector': [ - {'id': 'connector-server-1', 'port': 4050, 'clientHost': 'zyz_web.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3050, 'frontend': true}, - {'id': 'connector-server-2', 'port': 4051, 'clientHost': 'zyz_web.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3051, 'frontend': true}, - {'id': 'connector-server-3', 'port': 4052, 'clientHost': 'zyz_web.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3052, 'frontend': true} + {'id': 'connector-server-1', 'port': 4050, 'clientHost': 'zyz_web.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3050, 'frontend': true}, + {'id': 'connector-server-2', 'port': 4051, 'clientHost': 'zyz_web.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3051, 'frontend': true}, + {'id': 'connector-server-3', 'port': 4052, 'clientHost': 'zyz_web.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3052, 'frontend': true} ], 'chat': [ - {'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050}, - {'id': 'chat-server-2', 'host': '127.0.0.1', 'port': 6051}, - {'id': 'chat-server-3', 'host': '127.0.0.1', 'port': 6052} + {'id': 'chat-server-1', 'host': '192.168.1.136', 'port': 6050}, + {'id': 'chat-server-2', 'host': '192.168.1.136', 'port': 6051}, + {'id': 'chat-server-3', 'host': '192.168.1.136', 'port': 6052} ], 'role': [ - {'id': 'role-server-1', 'host': '127.0.0.1', 'port': 6053} + {'id': 'role-server-1', 'host': '192.168.1.136', 'port': 6053} ], 'battle': [ - {'id': 'battle-server-1', 'host': '127.0.0.1', 'port': 6054} + {'id': 'battle-server-1', 'host': '192.168.1.136', 'port': 6054} ], 'gate': [ - {'id': 'gate-server-1', 'host': '127.0.0.1', 'clientHost': 'zyz_web.trgame.cn', 'clientPort': 3014, 'frontend': true}, + {'id': 'gate-server-1', 'host': '192.168.1.136', 'clientHost': 'zyz_web.trgame.cn', 'clientPort': 3014, 'frontend': true}, { 'id': 'gate-server-2', - 'host': '127.0.0.1', + 'host': '192.168.1.136', 'clientHost': 'zyz_web.trgame.cn', 'clientPort': 3015, 'frontend': true } ], 'gm': [ - {'id': 'gm-server-1', 'host': '127.0.0.1', 'port': 6055} + {'id': 'gm-server-1', 'host': '192.168.1.136', 'port': 6055} ], 'systimer': [ - {'id': 'systimer-server-1', 'host': '127.0.0.1', 'port': 6056} + {'id': 'systimer-server-1', 'host': '192.168.1.136', 'port': 6056} ] }, 'dev': { 'connector': [ - {'id': 'connector-server-1', 'port': 4050, 'clientHost': 'zyzdev.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3050, 'frontend': true, "args": " --inspect=9237"}, - {'id': 'connector-server-2', 'port': 4051, 'clientHost': 'zyzdev.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3051, 'frontend': true, "args": " --inspect=9229"}, - {'id': 'connector-server-3', 'port': 4052, 'clientHost': 'zyzdev.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3052, 'frontend': true, "args": " --inspect=9238"} + {'id': 'connector-server-1', 'port': 4050, 'clientHost': 'zyzdev.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3050, 'frontend': true, "args": " --inspect=9237"}, + {'id': 'connector-server-2', 'port': 4051, 'clientHost': 'zyzdev.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3051, 'frontend': true, "args": " --inspect=9229"}, + {'id': 'connector-server-3', 'port': 4052, 'clientHost': 'zyzdev.trgame.cn', 'host': '192.168.1.136', 'clientPort': 3052, 'frontend': true, "args": " --inspect=9238"} ], 'chat': [ - {'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050,"args": " --inspect=9234"}, - {'id': 'chat-server-2', 'host': '127.0.0.1', 'port': 6051,"args": " --inspect=9235"}, - {'id': 'chat-server-3', 'host': '127.0.0.1', 'port': 6052,"args": " --inspect=9236"} + {'id': 'chat-server-1', 'host': '192.168.1.136', 'port': 6050,"args": " --inspect=9234"}, + {'id': 'chat-server-2', 'host': '192.168.1.136', 'port': 6051,"args": " --inspect=9235"}, + {'id': 'chat-server-3', 'host': '192.168.1.136', 'port': 6052,"args": " --inspect=9236"} ], 'role': [ - {'id': 'role-server-1', 'host': '127.0.0.1', 'port': 6053,"args": " --inspect=9231"} + {'id': 'role-server-1', 'host': '192.168.1.136', 'port': 6053,"args": " --inspect=9231"} ], 'battle': [ - {'id': 'battle-server-1', 'host': '127.0.0.1', 'port': 6054,"args": " --inspect=9230"} + {'id': 'battle-server-1', 'host': '192.168.1.136', 'port': 6054,"args": " --inspect=9230"} ], 'gate': [ - {'id': 'gate-server-1', 'host': '127.0.0.1', 'clientHost': 'zyzdev.trgame.cn', 'clientPort': 3014, 'frontend': true,"args": " --inspect=9227"}, + {'id': 'gate-server-1', 'host': '192.168.1.136', 'clientHost': 'zyzdev.trgame.cn', 'clientPort': 3014, 'frontend': true,"args": " --inspect=9227"}, { 'id': 'gate-server-2', - 'host': '127.0.0.1', + 'host': '192.168.1.136', 'clientHost': 'zyzdev.trgame.cn', 'clientPort': 3015, 'frontend': true, @@ -140,10 +149,10 @@ module.exports = { } ], 'gm': [ - {'id': 'gm-server-1', 'host': '127.0.0.1', 'port': 6055,"args": " --inspect=9232"} + {'id': 'gm-server-1', 'host': '192.168.1.136', 'port': 6055,"args": " --inspect=9232"} ], 'systimer': [ - {'id': 'systimer-server-1', 'host': '127.0.0.1', 'port': 6056, "args": " --inspect=9233"} + {'id': 'systimer-server-1', 'host': '192.168.1.136', 'port': 6056, "args": " --inspect=9233"} ] } };