屏蔽:处理玩家和军团信息接口

This commit is contained in:
luying
2021-11-11 15:51:25 +08:00
parent bbb2903f12
commit 89e3dd519b
17 changed files with 261 additions and 81 deletions
@@ -1,7 +1,7 @@
import {Application, RouteRecord, FrontendOrBackendSession, HandlerCallback, pinus} from "pinus";
// import { checkEvent } from '../../../services/eventSercive';
import { refresh } from '../../../services/refreshService';
import { checkPrivateChat, checkGuildChat, checkOtherChat, getWorldChannelSid, checkRoleName, checkGuildName } from "../../../services/chatService";
import { checkPrivateChat, checkGuildChat, checkOtherChat, checkRoleName, checkGuildName } from "../../../services/sdkService";
import { resResult, checkWhiteListWithUid, genCode } from "../../../pubUtils/util";
import { CHANNEL_PREFIX, STATUS } from "../../../consts";
import { UserModel } from "../../../db/User";
@@ -37,6 +37,18 @@ export class ConnectorRemote {
}
}
public async setOtherUserRoleNameSession(params: { roleId: string, roleName: string}[]) {
let sessionService = this.app.get('sessionService');
for(let {roleId, roleName} of params) {
let sessions = sessionService.getByUid(roleId);
if(!!sessions) {
sessions.forEach(session => {
sessionService.aimportAll(session.id, { roleName });
});
}
}
}
/**
* 重载json资源
*/
@@ -1,5 +1,6 @@
import { Application, ChannelService, HandlerService, } from 'pinus';
import { reloadResources } from '../../../pubUtils/data';
import { treatGuildName } from '../../../services/sdkService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -21,4 +22,8 @@ export class GuildRemote {
public async reloadResources() {
reloadResources();
}
public async treatGuildName(content: string) {
await treatGuildName(content);
}
}
@@ -10,6 +10,7 @@ import { DEFAULT_HEROES } from '../../../consts';
import { Figure } from '../../../domain/dbGeneral';
import { getDefaultRoleInfo } from '../../../services/roleService';
import { PVPConfigType } from '../../../db/SystemConfig';
import { treatRoleName } from '../../../services/sdkService';
export default function (app: Application) {
new HandlerService(app, {});
return new RoleRemote(app);
@@ -116,4 +117,8 @@ export class RoleRemote {
this.app.set('pvpSeasonEndTime', pvpConfig.seasonEndTime);
}
}
public async treatRoleName(roleId: string) {
await treatRoleName(roleId);
}
}
+2 -65
View File
@@ -1,6 +1,6 @@
import { CHAT_SYSTEM } from './../pubUtils/dicParam';
import { PrivateChatRec } from './../db/ChatInfo';
import { RoleModel, RoleType } from './../db/Role';
import { RoleModel } from './../db/Role';
import { GroupMessageModel } from './../db/GroupMessage';
import { CounterModel } from './../db/Counter';
import { STATUS } from './../consts/statusCode';
@@ -8,16 +8,12 @@ import { PrivateMessageModel, PrivateMessageParam, PrivateMessageType } from './
import { GroupMessageParam, GroupMessageType } from '../db/GroupMessage';
import { genCode, resResult } from '../pubUtils/util';
import { pinus } from 'pinus';
import { CHANNEL_PREFIX, MSG_CODE_LEN, MSG_STATUS, ON_PRIVATE_MSG_ROUTE, MSG_TYPE, MSG_SOURCE, getSdkChannelId, SDK_37_CONST, SDK_37_ADDR } from '../consts';
import { CHANNEL_PREFIX, MSG_CODE_LEN, MSG_STATUS, ON_PRIVATE_MSG_ROUTE, MSG_TYPE, MSG_SOURCE } from '../consts';
import { getAllServers, getRoleOnlineInfo } from './redisService';
import { ChatInfoModel } from '../db/ChatInfo';
import { channelServer } from './chatChannelService';
import { AccuseRecModel, AccueseParam } from '../db/AccuseRec';
import { getSimpleRoleInfo, getSimpleRoleInfos } from './roleService';
import * as FCClient from '@alicloud/fc2';
import { Chat37Params, CheckGuild37Params, CheckName37Params } from '../domain/sdk';
import { UserModel } from '../db/User';
import { request37CheckChat, request37Post } from '../pubUtils/httpUtil';
export * from './chatChannelService';
export * from './sysChatService';
@@ -405,65 +401,6 @@ export async function checkFilterWords(word: string) {
}
*/
export async function checkPrivateChat(roleId: string, targetRoleId: string, message: string) {
let body = new Chat37Params(message, getSdkChannelId('private'));
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
if(myUser.channelType == '37') {
body.setByMyRole(myRole, myUser);
let targetRole = await RoleModel.findByRoleId(targetRoleId);
let targetUser = await UserModel.findUserByUid(targetRole.userInfo.uid);
body.setByTargetRole(targetRole, targetUser);
return await request37CheckChat(SDK_37_ADDR.CHECK_CHAT, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkGuildChat(roleId: string, guildCode: string, message: string) {
let body = new Chat37Params(message, getSdkChannelId(CHANNEL_PREFIX.GUILD));
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
if(myUser.channelType == '37') {
body.setByMyRole(myRole, myUser);
body.setByGuild(guildCode);
return await request37CheckChat(SDK_37_ADDR.CHECK_CHAT, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkOtherChat(roleId: string, channelPrefix: string, message: string) {
let body = new Chat37Params(message, getSdkChannelId(channelPrefix));
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
if(myUser.channelType == '37') {
body.setByMyRole(myRole, myUser);
return await request37CheckChat(SDK_37_ADDR.CHECK_CHAT, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkRoleName(roleId: string, roleName: string) {
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
let body = new CheckName37Params(myRole, roleName, myUser);
if(myUser.channelType == '37') {
return await request37Post(SDK_37_ADDR.CHECK_NAME, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkGuildName(guildCode: string, serverId: number, name: string, notice: string) {
let nameResult = true, noticeResult = true;
if(name) {
let body = new CheckGuild37Params(guildCode, serverId, 1, name);
nameResult = await request37Post(SDK_37_ADDR.CHECK_UNION, body, SDK_37_CONST.CHAT_KEY);
}
if(notice) {
let body = new CheckGuild37Params(guildCode, serverId, 2, notice);
noticeResult = await request37Post(SDK_37_ADDR.CHECK_UNION, body, SDK_37_CONST.CHAT_KEY);
}
return nameResult && noticeResult
}
export async function pushCurrentTime(time: number) {
let serverlists = await getAllServers()
+13 -4
View File
@@ -485,13 +485,22 @@ export async function redisSubScribe() {
let env = pinus.app.get('env');
if(env == 'development') env = 'local'; // 本地处理
let payChannel = getRedisSubChannel(REDIS_KEY.PAY_CHANNEL, env);
console.log('*****', payChannel)
await redisClientPub().subscribeAsync(payChannel);
let treatRoleChannel = getRedisSubChannel(REDIS_KEY.TREAT_ROLE_CHANNEL, env);
let treatGuildChannel = getRedisSubChannel(REDIS_KEY.TREAT_GUILD_CHANNEL, env);
await redisClientPub().subscribeAsync(payChannel, treatRoleChannel, treatGuildChannel);
redisClientPub().on('message', (channel, message) => {
if(channel == payChannel) {
let orders = pinus.app.getServersByType('order');
let server = getRandSingleEelm(orders);
let servers = pinus.app.getServersByType('order');
let server = getRandSingleEelm(servers);
pinus.app.rpc.order.orderRemote.settleOrderFromRedisPub.toServer(server.id, message);
} else if (channel == treatRoleChannel) {
let servers = pinus.app.getServersByType('role');
let server = getRandSingleEelm(servers);
pinus.app.rpc.role.roleRemote.treatRoleName.toServer(server.id, message);
} else if (channel == treatGuildChannel) {
let servers = pinus.app.getServersByType('guild');
let server = getRandSingleEelm(servers);
pinus.app.rpc.guild.guildRemote.treatGuildName.toServer(server.id, message);
}
});
}
+1 -2
View File
@@ -1,10 +1,9 @@
import { ChannelUser } from './../domain/ChannelUser';
import { Channel, pinus } from 'pinus';
import { getRandValueByMinMax, getRandEelm, decodeIdCntArrayStr } from '../pubUtils/util';
import { DEFAULT_HEROES, TERAPH_RANDOM } from "../consts";
import { DEFAULT_HEROES, ROLE_SELECT, TERAPH_RANDOM } from "../consts";
import { DicTeraph } from '../pubUtils/dictionary/DicTeraph';
import { Teraph, RoleModel, RoleType, RoleUpdate } from '../db/Role';
import { ROLE_SELECT } from '../consts';
import { SCHOOL } from '../pubUtils/dicParam';
import { gameData } from '../pubUtils/data';
import { SchoolModel } from '../db/School';
+133
View File
@@ -0,0 +1,133 @@
/********** 37sdk **********/
import { RoleModel, RoleType } from "../db/Role";
import { Chat37Params, CheckGuild37Params, CheckName37Params } from "../domain/sdk";
import { sendMailByContent, sendMailToGuildByContent } from './mailService';
import { getGoldObject } from '../pubUtils/itemUtils';
import { NAMEPLATE } from '../pubUtils/dicParam';
import { CHANNEL_PREFIX, getSdkChannelId, MAIL_TYPE, REDIS_KEY, SDK_37_ADDR, SDK_37_CONST } from "../consts";
import { UserModel } from "../db/User";
import { request37CheckChat, request37Post } from "../pubUtils/httpUtil";
import { GuildModel } from "../db/Guild";
import { getRoleOnlineInfo, updateUserInfo } from "./redisService";
import { pinus } from "pinus";
import { getGuildChannelSid } from "./chatService";
// 检查私聊是否合法
export async function checkPrivateChat(roleId: string, targetRoleId: string, message: string) {
let body = new Chat37Params(message, getSdkChannelId('private'));
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
if(myUser.channelType == '37') {
body.setByMyRole(myRole, myUser);
let targetRole = await RoleModel.findByRoleId(targetRoleId);
let targetUser = await UserModel.findUserByUid(targetRole.userInfo.uid);
body.setByTargetRole(targetRole, targetUser);
return await request37CheckChat(SDK_37_ADDR.CHECK_CHAT, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkGuildChat(roleId: string, guildCode: string, message: string) {
let body = new Chat37Params(message, getSdkChannelId(CHANNEL_PREFIX.GUILD));
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
if(myUser.channelType == '37') {
body.setByMyRole(myRole, myUser);
body.setByGuild(guildCode);
return await request37CheckChat(SDK_37_ADDR.CHECK_CHAT, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkOtherChat(roleId: string, channelPrefix: string, message: string) {
let body = new Chat37Params(message, getSdkChannelId(channelPrefix));
let myRole = await RoleModel.findByRoleId(roleId);
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
if(myUser.channelType == '37') {
body.setByMyRole(myRole, myUser);
return await request37CheckChat(SDK_37_ADDR.CHECK_CHAT, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkRoleName(roleId: string, roleName: string, myRole?: RoleType) {
if(!myRole) {
myRole = await RoleModel.findByRoleId(roleId);
}
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
let body = new CheckName37Params(myRole, roleName, myUser);
if(myUser.channelType == '37') {
return await request37Post(SDK_37_ADDR.CHECK_NAME, body, SDK_37_CONST.CHAT_KEY);
}
return true;
}
export async function checkGuildName(guildCode: string, serverId: number, name: string, notice: string) {
let nameResult = true, noticeResult = true;
if(name != undefined) {
let body = new CheckGuild37Params(guildCode, serverId, 1, name);
nameResult = await request37Post(SDK_37_ADDR.CHECK_UNION, body, SDK_37_CONST.CHAT_KEY);
}
if(notice != undefined) {
let body = new CheckGuild37Params(guildCode, serverId, 2, notice);
noticeResult = await request37Post(SDK_37_ADDR.CHECK_UNION, body, SDK_37_CONST.CHAT_KEY);
}
return nameResult && noticeResult
}
// 根据37sdk处理违规玩家名
export async function treatRoleName(roleId: string) {
let role = await RoleModel.findByRoleId(roleId);
if(role && role.sdkMark) { // 有设置标记的情况下
let newName = roleId;
// 新名字上传
await checkRoleName(roleId, newName, role);
// 改名字
await RoleModel.updateRoleInfo(roleId, { roleName: newName, sdkMark: false });
// 通知处理
await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'roleName', value: newName }]); // redis缓存
const { sid } = await getRoleOnlineInfo(roleId);
if(!!sid) {
await pinus.app.rpc.connector.connectorRemote.setOtherUserRoleNameSession.toServer(sid,[{ roleId, roleName: newName }]); // 改session
}
// 补偿
let gold = getGoldObject(NAMEPLATE.NAMEPLATE_FEECOST)
await sendMailByContent(MAIL_TYPE.TREAT_ROLE_NAME, role.roleId, { goods: [gold] });
}
}
// 根据37sdk处理违规军团数据
export async function treatGuildName(content: string) {
let params: { code: string, serverId: number, type: number };
try {
params = JSON.parse(content);
} catch(e) {
return false;
}
let guild = await GuildModel.findByCode(params.code, params.serverId);
if(guild && guild.sdkMark) { // 有设置标记的情况下
if(params.type == 1) { // 公会名
let newName = guild.code;
// 新名字上传
await checkGuildName(params.code, params.serverId, newName, undefined);
await GuildModel.updateInfo(params.code, { name: newName, sdkMark: false });
// 通知处理
await sendMailToGuildByContent(MAIL_TYPE.TREAT_GUILD_INFO, params.code, {}); // 邮件
let chatSid = await getGuildChannelSid(params.code);
pinus.app.rpc.chat.guildRemote.updateInfo.toServer(chatSid, params.code, { name: newName }); // 军团推送
await updateUserInfo(REDIS_KEY.GUILD_INFO, params.code, [{ field: 'name', value: newName }]); // redis缓存信息
} else if (params.type == 2) { // 公会公告
await checkGuildName(params.code, params.serverId, undefined, '');
await GuildModel.updateInfo(params.code, { notice: '', sdkMark: false });
// 通知处理
await sendMailToGuildByContent(MAIL_TYPE.TREAT_GUILD_INFO, params.code, {}); // 邮件
let chatSid = await getGuildChannelSid(params.code);
pinus.app.rpc.chat.guildRemote.updateInfo.toServer(chatSid, params.code, { notice: '' }); // 军团推送
}
}
}