fix军团:分服推送无法推全,放入chat服
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { Application, BackendSession, pinus, ChannelService } from 'pinus';
|
||||
import { resResult, getRandEelm, reduceCe, getRefTime } from '../../../pubUtils/util';
|
||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_DATA_NAME } from '../../../consts';
|
||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_DATA_NAME, CHAT_SERVER } from '../../../consts';
|
||||
import { UserGuildModel } from '../../../db/UserGuild';
|
||||
import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, message, settleGuildWeekly } from '../../../services/guildService';
|
||||
import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, settleGuildWeekly } from '../../../services/guildService';
|
||||
import { GuildModel, GuildType } from '../../../db/Guild';
|
||||
import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { ARMY } from '../../../pubUtils/dicParam';
|
||||
@@ -74,11 +74,11 @@ export class GuildHandler {
|
||||
let rank = await getMyRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code);
|
||||
|
||||
// 加入channel
|
||||
message.enterChannel(guild.code, roleId, sid);
|
||||
this.app.rpc.chat.guildRemote.enterChannel.toServer(CHAT_SERVER, guild.code, roleId, sid);
|
||||
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, guild.code, GUILD_REC_TYPE.JOIN_GUILD, [roleName]);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER, rec);
|
||||
|
||||
// 返回
|
||||
const result = { ...guild, rank, myInfo: { ...userGuild, isOnline: true}};
|
||||
@@ -123,7 +123,7 @@ export class GuildHandler {
|
||||
|
||||
const select = ['code', 'name', 'notice', 'introduce', 'ceLimit', 'isAuto', 'icon'];
|
||||
const guild = await GuildModel.updateInfo(code, { name, notice, introduce, ceLimit, isAuto }, {}, select.join(' '));
|
||||
message.updateInfo(code, { name, notice, introduce, ceLimit, isAuto });
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { name, notice, introduce, ceLimit, isAuto });
|
||||
|
||||
await redisUserInfoUpdate(REDIS_KEY.GUILD_INFO, code, [{ field: 'name', value: name }]);
|
||||
// 返回
|
||||
@@ -213,17 +213,18 @@ export class GuildHandler {
|
||||
// 添加动态
|
||||
if(auth == GUILD_AUTH.MANAGER) {
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.SET_MANAGER, [role.roleName]);
|
||||
message.updateInfo(code, { managerCnt: guild.managerCnt });
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { managerCnt: guild.managerCnt });
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER, rec);
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_SET_MANAGER, memberRoleId, roleName, [guild.name]);
|
||||
|
||||
} else if (auth == GUILD_AUTH.LEADER) {
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.SET_LEADER, [roleName, role.roleName]);
|
||||
message.changeLeader(code, guild.managerCnt, role, roleId);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.changeLeader.toServer(CHAT_SERVER, code, guild.managerCnt, role, roleId);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER, rec);
|
||||
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_SET_LEADER, memberRoleId, roleName, [guild.name]);
|
||||
} else {
|
||||
message.updateInfo(code, { managerCnt: guild.managerCnt });
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER,code, { managerCnt: guild.managerCnt });
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_SET_MEMBER, memberRoleId, roleName, [guild.name]);
|
||||
}
|
||||
|
||||
@@ -261,7 +262,9 @@ export class GuildHandler {
|
||||
let leaderIsOnline = await isRoleOnline(guild.leader.roleId);
|
||||
|
||||
// 打开公会页面,加入channel
|
||||
message.enterChannel(userGuild.guildCode, roleId, sid);
|
||||
if(userGuild.guildCode) {
|
||||
this.app.rpc.chat.guildRemote.enterChannel.toServer(CHAT_SERVER, userGuild.guildCode, roleId, sid);
|
||||
}
|
||||
|
||||
// 获取排行榜
|
||||
const rank = await getMyRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code);
|
||||
@@ -311,8 +314,8 @@ export class GuildHandler {
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.JOIN_GUILD, [roleName]);
|
||||
// 更新人数增加
|
||||
message.updateInfo(code, { memberCnt: joinResult.memberCnt });
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { memberCnt: joinResult.memberCnt });
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER,rec);
|
||||
|
||||
hasGuild = true;
|
||||
} else { // 不自动加入,插入申请表
|
||||
@@ -368,10 +371,10 @@ export class GuildHandler {
|
||||
if(joinResult.status == 0) continue;
|
||||
|
||||
// 更新人数增加
|
||||
message.updateInfo(code, { memberCnt: joinResult.memberCnt });
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { memberCnt: joinResult.memberCnt });
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.JOIN_GUILD, [joinResult.roleName]);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER,rec);
|
||||
|
||||
roleIds.push(roleId);
|
||||
}
|
||||
@@ -489,10 +492,10 @@ export class GuildHandler {
|
||||
}
|
||||
|
||||
// 更新人数增加
|
||||
message.updateInfo(code, { memberCnt: joinResult.memberCnt });
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { memberCnt: joinResult.memberCnt });
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.JOIN_GUILD, [joinResult.roleName]);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER, rec);
|
||||
|
||||
code = guild.code;
|
||||
}
|
||||
@@ -567,7 +570,7 @@ export class GuildHandler {
|
||||
|
||||
// 删除channel
|
||||
|
||||
message.dismiss(code);
|
||||
this.app.rpc.chat.guildRemote.dismiss.toServer(CHAT_SERVER,code);
|
||||
|
||||
await removeFromRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, code);
|
||||
return resResult(STATUS.SUCCESS, { code, status: guild.status });
|
||||
@@ -597,8 +600,8 @@ export class GuildHandler {
|
||||
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.QUIT_GUILD, [roleName]);
|
||||
message.addRec(rec);
|
||||
message.memberQuit(code, roleId, guild, sid);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER,rec);
|
||||
this.app.rpc.chat.guildRemote.memberQuit.toServer(CHAT_SERVER,code, roleId, guild, sid);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { hasGuild: role.hasGuild });
|
||||
}
|
||||
@@ -629,11 +632,11 @@ export class GuildHandler {
|
||||
const guild = await GuildModel.quit(code, memberRoleId, serverId);
|
||||
if(!guild) return resResult(STATUS.GUILD_KICK_ERROR);
|
||||
|
||||
message.memberQuit(code, roleId, guild);
|
||||
this.app.rpc.chat.guildRemote.memberQuit.toServer(CHAT_SERVER,code, roleId, guild);
|
||||
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.QUIT_GUILD, [role.roleName]);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER,rec);
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_KICK, memberRoleId, roleName, [guild.name]);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { memberCnt: guild.memberCnt });
|
||||
@@ -685,9 +688,9 @@ export class GuildHandler {
|
||||
|
||||
// 添加动态
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.IMPEACH, [ oldRoleName, topUser.roleName]);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER,rec);
|
||||
|
||||
message.changeLeader(code, guild.managerCnt, topUser, leaderRoleId);
|
||||
this.app.rpc.chat.guildRemote.changeLeader.toServer(CHAT_SERVER,code, guild.managerCnt, topUser, leaderRoleId);
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_IMPEACH, leaderRoleId, roleName, [guild.name]);
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_SET_LEADER, topUser.roleId, roleName, [guild.name]);
|
||||
|
||||
@@ -753,13 +756,13 @@ export class GuildHandler {
|
||||
const resultStructure = result.structure.find(cur => cur.id == id);
|
||||
|
||||
// 修改信息
|
||||
message.updateInfo(code, { ...result });
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER,code, { ...result });
|
||||
await redisUserInfoUpdate(REDIS_KEY.GUILD_INFO, code, [{field: 'lv', value: result.lv } ]);
|
||||
|
||||
// 添加动态
|
||||
const structureName = GUILD_STRUCTURE_NAME.get(id);
|
||||
const rec = await GuildRecModel.createGuildRec(roleId, code, GUILD_REC_TYPE.STRUCTURE_UP, [structureName, resultStructure.lv.toString()]);
|
||||
message.addRec(rec);
|
||||
this.app.rpc.chat.guildRemote.addRec.toServer(CHAT_SERVER,rec);
|
||||
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
}
|
||||
@@ -901,7 +904,7 @@ export class GuildHandler {
|
||||
const { guild, userGuild } = result;
|
||||
|
||||
let { activeDaily, activeWeekly } = guild;
|
||||
message.updateInfo(code, { activeDaily, activeWeekly });
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, { activeDaily, activeWeekly });
|
||||
|
||||
return resResult(STATUS.SUCCESS, { activeDaily, activeWeekly, myInfo: userGuild });
|
||||
}
|
||||
@@ -918,7 +921,7 @@ export class GuildHandler {
|
||||
|
||||
const { code, count } = msg;
|
||||
const guild = await GuildModel.updateInfo(code, {}, { fund: count }, 'fund');
|
||||
message.updateInfo(code, {fund: guild.fund});
|
||||
this.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, code, {fund: guild.fund});
|
||||
return resResult(STATUS.SUCCESS, { code, fund: guild.fund });
|
||||
}
|
||||
|
||||
|
||||
225
game-server/app/servers/chat/remote/guildRemote.ts
Normal file
225
game-server/app/servers/chat/remote/guildRemote.ts
Normal file
@@ -0,0 +1,225 @@
|
||||
import { Application, ChannelService, FrontendSession, RemoterClass, pinus } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { STATUS } from '../../../consts';
|
||||
import { GuildType } from '../../../db/Guild';
|
||||
import { RoleType } from '../../../db/Role';
|
||||
import { GuildRecType } from '../../../db/GuildRec';
|
||||
import { UserGuildModel } from '../../../db/UserGuild';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GuildRemote(app);
|
||||
}
|
||||
|
||||
export class GuildRemote {
|
||||
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
|
||||
private channelService: ChannelService;
|
||||
private MEMBER_QUIT = 'onMemberQuit';
|
||||
private DISMISS = 'onDismiss';
|
||||
private GUILD_INFO_UPDATE = 'onGuildInfoUpdate';
|
||||
private DEMOTION = 'onDemotion';
|
||||
private PROMOTION = 'onPromotion';
|
||||
private GUILD_REC_ADD = 'onGuildRecAdd';
|
||||
|
||||
/**
|
||||
* 封装,军团相关channel名: 'guild'+guildCode
|
||||
* @param guildCode 军团code
|
||||
* @param create 是否创建channel
|
||||
*/
|
||||
private getChannel(guildCode: string, create: boolean = false) {
|
||||
let channelName = `guild${guildCode}`;
|
||||
let channel = this.channelService.getChannel(channelName, create);
|
||||
return channel
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装,向单人发推送
|
||||
* @param guildCode 军团code
|
||||
* @param path 推送地址
|
||||
* @param roleId 玩家id
|
||||
* @param message 推送信息
|
||||
* @param sid 玩家服
|
||||
*/
|
||||
private pushMessageByUids(guildCode: string, path: string, roleId: string, message: {code: string, roleId?: string}, sid?: string) {
|
||||
|
||||
let channel = this.getChannel(guildCode);
|
||||
let uids = [];
|
||||
if(!sid) {
|
||||
sid = channel && channel.getMember(roleId)['sid'];
|
||||
}
|
||||
if(sid) {
|
||||
uids.push({roleId, sid});
|
||||
this.channelService.pushMessageByUids(path, resResult(STATUS.SUCCESS, message), uids);
|
||||
}
|
||||
return channel
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装,向channel发推送
|
||||
* @param guildCode 军团code
|
||||
* @param path 推送地址
|
||||
* @param message 推送信息
|
||||
*/
|
||||
private pushMessage(guildCode: string, path: string, message: any) {
|
||||
let channel = this.getChannel(guildCode);
|
||||
if(!!channel) {
|
||||
channel.pushMessage(path, resResult(STATUS.SUCCESS, message));
|
||||
}
|
||||
return channel
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家上线
|
||||
* @param roleId 玩家id
|
||||
* @param sid 玩家所在服 connector
|
||||
*/
|
||||
public async enterMyChannel(roleId: string, sid: string) {
|
||||
let myGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
|
||||
if(!!myGuild) {
|
||||
this.enterChannel(myGuild.guildCode, roleId, sid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入军团channel
|
||||
* @param guildCode 军团code
|
||||
* @param roleId 玩家id
|
||||
* @param sid 玩家所在服 connector
|
||||
*/
|
||||
public enterChannel(guildCode: string, roleId: string, sid: string) {
|
||||
let channel = this.getChannel(guildCode, true);
|
||||
|
||||
// TODO: 后续可能添加上下线通知功能
|
||||
// let param = {
|
||||
// roleId
|
||||
// };
|
||||
// channel.pushMessage('onMemberAdd', resResult(STATUS.SUCCESS, param));
|
||||
|
||||
let users = channel.getMembers();
|
||||
if (users.indexOf(roleId) === -1) {
|
||||
channel.add(roleId, sid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家下线
|
||||
* @param roleId 玩家id
|
||||
* @param sid 玩家所在服 connector
|
||||
*/
|
||||
public async leaveMyChannel(roleId: string, sid: string) {
|
||||
let myGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
|
||||
if(!!myGuild) {
|
||||
this.leaveChannel(myGuild.guildCode, roleId, sid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出军团channel
|
||||
* @param guildCode 军团code
|
||||
* @param roleId 玩家id
|
||||
* @param sid 玩家所在服 connector
|
||||
*/
|
||||
public leaveChannel(guildCode: string, roleId: string, sid?: string) {
|
||||
let channel = this.getChannel(guildCode, false);
|
||||
if(!sid) {
|
||||
sid = channel && channel.getMember(roleId)['sid'];
|
||||
}
|
||||
// leave channel
|
||||
if (!!channel) {
|
||||
channel.leave(roleId, sid);
|
||||
}
|
||||
|
||||
// TODO: 后续可能添加上下线通知功能
|
||||
// let param = {
|
||||
// roleId
|
||||
// };
|
||||
// channel.pushMessage('onMemberLeave', resResult(STATUS.SUCCESS, param));
|
||||
}
|
||||
|
||||
/**
|
||||
* 踢出某个成员
|
||||
* @param guildCode 军团code
|
||||
* @param roleId 踢出玩家roleId
|
||||
* @param guild 军团信息
|
||||
* @param sid 玩家sid
|
||||
*/
|
||||
public memberQuit (guildCode: string, roleId: string, guild: GuildType, sid?: string) {
|
||||
// 被踢出公会
|
||||
this.pushMessageByUids(guildCode, this.MEMBER_QUIT, roleId, {
|
||||
code: guildCode,
|
||||
roleId
|
||||
}, sid);
|
||||
// 更新人数减少
|
||||
this.updateInfo(guildCode, { memberCnt: guild.memberCnt });
|
||||
this.leaveChannel(guildCode, roleId, sid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解散军团
|
||||
* @param guildCode 军团code
|
||||
*/
|
||||
public dismiss(guildCode: string) {
|
||||
let channel = this.pushMessage(guildCode, this.DISMISS, {code: guildCode});
|
||||
if(!!channel) {
|
||||
channel.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新军团信息
|
||||
* @param guildCode 军团code
|
||||
* @param info 军团相关信息
|
||||
*/
|
||||
public updateInfo (guildCode: string, info: any) {
|
||||
this.pushMessage(guildCode, this.GUILD_INFO_UPDATE, info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更换团长信息
|
||||
* @param guildCode 军团code
|
||||
* @param managerCnt 管理员人数
|
||||
* @param newLeader 新的团长
|
||||
* @param oldLeaderId 旧团长
|
||||
*/
|
||||
public changeLeader (guildCode: string, managerCnt: number, newLeader: RoleType, oldLeaderId: string) {
|
||||
let { roleId, roleName, sHid, headHid, lv, quitTime } = newLeader;
|
||||
this.updateInfo(guildCode, {managerCnt, leader: { roleId, roleName, sHid, headHid, lv, quitTime }});
|
||||
this.demotion(guildCode, oldLeaderId);
|
||||
this.promotion(guildCode, roleId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 向旧团长推送降职信息
|
||||
* @param guildCode 军团code
|
||||
* @param roleId 旧团长id
|
||||
*/
|
||||
public demotion (guildCode: string, roleId: string) {
|
||||
this.pushMessageByUids(guildCode, this.DEMOTION, roleId, {
|
||||
code: guildCode
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 向新团长推送升职信息
|
||||
* @param guildCode 军团code
|
||||
* @param roleId 新团长id
|
||||
*/
|
||||
public promotion (guildCode: string, roleId: string) {
|
||||
this.pushMessageByUids(guildCode, this.PROMOTION, roleId, {
|
||||
code: guildCode
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加动态
|
||||
* @param guildRecType 动态
|
||||
*/
|
||||
public addRec (guildRecType: GuildRecType) {
|
||||
let { guildCode, type, params, createTime } = guildRecType;
|
||||
this.pushMessage(guildCode, this.GUILD_REC_ADD, {type, params, createTime});
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import { chackFunOpenWhenLogin } from '../../../services/funcSwitchService';
|
||||
import { loginRefresh } from '../../../services/playerEventService';
|
||||
import { nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { getRedis, setRedis, delRedis, rmRoleFromQueue } from '../../../services/redisService';
|
||||
import { GuildModel } from '../../../db/Guild';
|
||||
export default function (app: Application) {
|
||||
return new EntryHandler(app);
|
||||
}
|
||||
@@ -81,6 +82,7 @@ export class EntryHandler {
|
||||
// await self.app.rpc.battle.battleRemote.add.route(session)(role.roleId, self.app.get('serverId'), role.serverId, true);
|
||||
|
||||
await self.app.rpc.chat.chatRemote.addWorldChannel.route(session)(role.roleId, serverId, self.app.get('serverId'));
|
||||
await self.app.rpc.chat.guildRemote.enterMyChannel.route(session)(role.roleId, self.app.get('serverId'));
|
||||
let heros = await HeroModel.findByRole(role.roleId);
|
||||
let equips = await EquipModel.findbyRole(role.roleId);
|
||||
let items = await ItemModel.findbyRole(role.roleId);
|
||||
@@ -123,6 +125,7 @@ export class EntryHandler {
|
||||
channel.leave(roleId, sid);
|
||||
// this.app.rpc.battle.battleRemote.kick.route(session)(roleId, this.app.get('serverId'), serverId);
|
||||
this.app.rpc.chat.chatRemote.kickWorldChannel.route(session, true)(roleId, sid, serverId);
|
||||
this.app.rpc.chat.guildRemote.leaveMyChannel.route(session)(roleId, sid);
|
||||
RoleModel.updateRoleInfo(roleId, { quitTime: nowSeconds() });
|
||||
}
|
||||
|
||||
|
||||
@@ -8,11 +8,13 @@ import { ComBattleRemote } from './battle/remote/comBattleRemote';
|
||||
import { BattleRemote } from './battle/remote/battleRemote';
|
||||
import { ConnectorRemote } from './connector/remote/connectorRemote';
|
||||
import { SystimerRemote } from './systimer/remote/systimerRemote';
|
||||
import { GuildRemote } from './chat/remote/guildRemote';
|
||||
|
||||
declare global {
|
||||
interface UserRpc {
|
||||
chat: {
|
||||
chatRemote: RemoterClass<FrontendSession, ChatRemote>;
|
||||
guildRemote: RemoterClass<FrontendSession, GuildRemote>;
|
||||
};
|
||||
battle: {
|
||||
comBattleRemote: RemoterClass<FrontendSession, ComBattleRemote>;
|
||||
|
||||
@@ -245,77 +245,3 @@ export async function settleGuildWeekly() {
|
||||
await SystemConfigModel.updateSystemConfig({settleGuildWeeklyTime: nowSeconds()}); // 记录一下
|
||||
console.log('————— settleGuildWeekly结束 —————');
|
||||
}
|
||||
|
||||
export const message = {
|
||||
getChannel: function(name: string, create: boolean = false) {
|
||||
let channel = pinus.app.get('channelService').getChannel(name, create);
|
||||
return channel
|
||||
},
|
||||
enterChannel: function (guildCode: string, roleId: string, sid: string) {
|
||||
// 加入channel
|
||||
let channel = this.getChannel(`guild${guildCode}`, true);
|
||||
let users = channel.getMembers();
|
||||
if (users.indexOf(roleId) === -1) {
|
||||
channel.add(roleId, sid);
|
||||
}
|
||||
return channel
|
||||
},
|
||||
memberQuit: function (guildCode: string, roleId: string, guild: GuildType,sid?: string) {
|
||||
// 被踢出公会
|
||||
this.pushMessageByUids(`guild${guildCode}`, 'onMemberQuit', roleId, {
|
||||
code: guildCode,
|
||||
roleId
|
||||
}, sid);
|
||||
// 更新人数减少
|
||||
this.updateInfo(guildCode, { memberCnt: guild.memberCnt });
|
||||
},
|
||||
dismiss: function(guildCode: string) {
|
||||
let channel = this.getChannel(`guild${guildCode}`);
|
||||
if(!!channel) {
|
||||
channel.pushMessage('onDismiss', resResult(STATUS.SUCCESS, { code: guildCode }));
|
||||
channel.destroy();
|
||||
}
|
||||
},
|
||||
updateInfo: function(guildCode: string, info: any) {
|
||||
let channel = this.getChannel(`guild${guildCode}`);
|
||||
if(!!channel) {
|
||||
channel.pushMessage('onGuildInfoUpdate', resResult(STATUS.SUCCESS, {code: guildCode, ...info}));
|
||||
}
|
||||
},
|
||||
changeLeader: function(guildCode: string, managerCnt: number, newLeader: RoleType, oldLeaderId: string) {
|
||||
let { roleId, roleName, sHid, headHid, lv, quitTime } = newLeader;
|
||||
this.updateInfo(guildCode, {managerCnt, leader: { roleId, roleName, sHid, headHid, lv, quitTime }});
|
||||
this.demotion(guildCode, oldLeaderId);
|
||||
this.promotion(guildCode, roleId);
|
||||
},
|
||||
demotion: function(guildCode: string, roleId: string) {
|
||||
this.pushMessageByUids(`guild${guildCode}`, 'onDemotion', roleId, {
|
||||
code: guildCode
|
||||
});
|
||||
},
|
||||
promotion: function(guildCode: string, roleId: string) {
|
||||
this.pushMessageByUids(`guild${guildCode}`, 'onPromotion', roleId, {
|
||||
code: guildCode
|
||||
});
|
||||
},
|
||||
addRec: function(guildRecType: GuildRecType) {
|
||||
let { guildCode, type, params, createTime } = guildRecType;
|
||||
let channel = this.getChannel(`guild${guildCode}`);
|
||||
if(!!channel) {
|
||||
channel.pushMessage('onGuildRecAdd', resResult(STATUS.SUCCESS, {type, params, createTime}));
|
||||
}
|
||||
},
|
||||
pushMessageByUids: function (name: string, path: string, roleId: string, message: {code: string, roleId?: string}, sid?: string) {
|
||||
|
||||
let channel = this.getChannel(name);
|
||||
let uids = [];
|
||||
if(!sid) {
|
||||
sid = channel && channel.getMember(roleId)['sid'];
|
||||
}
|
||||
if(sid) {
|
||||
uids.push({roleId, sid});
|
||||
pinus.app.get('channelService').pushMessageByUids(path, resResult(STATUS.SUCCESS, message), uids);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -357,4 +357,6 @@ export const MAIL_TYPE = {
|
||||
GUILD_ACTIVE_REWARD: 5,
|
||||
GUILD_BE_SET_MANAGER: 6,
|
||||
GUILD_BE_SET_MEMBER: 7
|
||||
};
|
||||
};
|
||||
|
||||
export const CHAT_SERVER = 'chat-server-1';
|
||||
@@ -21,6 +21,15 @@ export function genCode(len) {
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
export function generateNum(len: number) {
|
||||
let code = '';
|
||||
for (let i = 0; i < len; i++) {
|
||||
code += parseInt(`${Math.random() * 10}`);
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
export function decodeStr(type, str, splitForm = '|') {
|
||||
if (str == '&' || !str) {
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user