diff --git a/game-server/app/servers/connector/filter/global.ts b/game-server/app/servers/connector/filter/global.ts index 1f7fdf685..c939fa2f7 100644 --- a/game-server/app/servers/connector/filter/global.ts +++ b/game-server/app/servers/connector/filter/global.ts @@ -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"; diff --git a/game-server/app/servers/connector/remote/connectorRemote.ts b/game-server/app/servers/connector/remote/connectorRemote.ts index 255d321d3..128a9cc48 100644 --- a/game-server/app/servers/connector/remote/connectorRemote.ts +++ b/game-server/app/servers/connector/remote/connectorRemote.ts @@ -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资源 */ diff --git a/game-server/app/servers/guild/remote/guildRemote.ts b/game-server/app/servers/guild/remote/guildRemote.ts index 5abc4401a..3dc540ed5 100644 --- a/game-server/app/servers/guild/remote/guildRemote.ts +++ b/game-server/app/servers/guild/remote/guildRemote.ts @@ -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); + } } \ 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 41fb1cf62..263bd233a 100644 --- a/game-server/app/servers/role/remote/roleRemote.ts +++ b/game-server/app/servers/role/remote/roleRemote.ts @@ -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); + } } diff --git a/game-server/app/services/chatService.ts b/game-server/app/services/chatService.ts index e4942c05e..c5ef05ac7 100644 --- a/game-server/app/services/chatService.ts +++ b/game-server/app/services/chatService.ts @@ -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() diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index 1daa8efd1..fa2e065f7 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -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); } }); } diff --git a/game-server/app/services/roleService.ts b/game-server/app/services/roleService.ts index d9e9d0043..43ceafa19 100644 --- a/game-server/app/services/roleService.ts +++ b/game-server/app/services/roleService.ts @@ -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'; diff --git a/game-server/app/services/sdkService.ts b/game-server/app/services/sdkService.ts new file mode 100644 index 000000000..3dd5e0954 --- /dev/null +++ b/game-server/app/services/sdkService.ts @@ -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: '' }); // 军团推送 + } + } +} diff --git a/shared/consts/constModules/mailConst.ts b/shared/consts/constModules/mailConst.ts index 55a62090f..2daba2dda 100644 --- a/shared/consts/constModules/mailConst.ts +++ b/shared/consts/constModules/mailConst.ts @@ -39,6 +39,8 @@ export enum MAIL_TYPE { EQUIP_OVER = 18, // 装备超数量 TOWER_TASK_REWARD = 19, // 镇念塔派遣过期奖励 MONTHLY_REWARD = 20, // 月卡奖品 + TREAT_ROLE_NAME = 21, // 月卡奖品 + TREAT_GUILD_INFO = 22, // 月卡奖品 }; export const SEND_NAME = '系统'; \ No newline at end of file diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index 1b265f24e..21f8abffe 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -232,6 +232,8 @@ export enum REDIS_KEY { SHOW_LINEUP ="showLineup", // 展示阵容 SYS_SERVER ='sysServer', // 全服connector服 PAY_CHANNEL = 'pay', // 支付订阅频道 + TREAT_ROLE_CHANNEL = 'treatRole', // 处理玩家账号名频道 + TREAT_GUILD_CHANNEL = 'treatGuild', // 处理公会账号名频道 } // 各排行榜对应hash的key diff --git a/shared/db/Guild.ts b/shared/db/Guild.ts index 6242b525a..20942b85e 100644 --- a/shared/db/Guild.ts +++ b/shared/db/Guild.ts @@ -111,6 +111,9 @@ export default class Guild extends BaseModel { @prop({ required: true, default: 0 }) openBossCnt: number; // 开启boss本次数 + @prop({ required: true }) + sdkMark: boolean; // 37sdk标记有问题 + public static async createGuild(params: { guildCode: string, name: string, icon: number, notice: string }, role: RoleType, serverId: number) { const doc = new GuildModel(); const update = Object.assign(doc.toJSON(), params, { leader: role._id, members: [role.roleId], guildCe: role.ce, serverId, lvUpdateTime: nowSeconds() }); @@ -269,6 +272,11 @@ export default class Guild extends BaseModel { } return result; } + + public static async findByCodeAndSetMark(code: string, serverId: number, select?: string, getters = false) { + const role: RoleType = await GuildModel.findOneAndUpdate({ code, serverId }, { $set: { sdkMark: true } }, { new: true }).select(select).lean({ getters, virtuals: true }); + return role; + } } export const GuildModel = getModelForClass(Guild); diff --git a/shared/db/Role.ts b/shared/db/Role.ts index 9ab948b95..79fbefa74 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -326,6 +326,9 @@ export default class Role extends BaseModel { @prop({ required: true }) renameCnt: number; // 改名次数 + @prop({ required: true }) + sdkMark: boolean; // 37sdk标记有问题 + public static async findAllByUid(uid: number, getters = false, virtuals = true) { const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt').lean({ getters, virtuals }); return role; @@ -727,6 +730,12 @@ export default class Role extends BaseModel { .sort({ updatedAt: -1 }).limit(100).lean({ getters: true, virtuals: true }); return result; } + + public static async findByUidAndSetMark(uid: number, serverId: number, select?: string, getters = false) { + const role: RoleType = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, { $set: { sdkMark: true } }, { new: true }).select(select).lean({ getters, virtuals: true }); + return role; + } + } export const RoleModel = getModelForClass(Role); diff --git a/shared/domain/sdk.ts b/shared/domain/sdk.ts index 89ac8b228..18c203a27 100644 --- a/shared/domain/sdk.ts +++ b/shared/domain/sdk.ts @@ -112,8 +112,8 @@ export class Chat37Params { to_username: number|string = ''; // 对方channelInfo.uid to_actor: string = ''; // 对方roleName to_actor_id: string = ''; // 对方roleId - to_actor_level: number; // 对方等级 - to_actor_recharge_gold: number; // 对方元宝 + to_actor_level: number|string = ''; // 对方等级 + to_actor_recharge_gold: number|string = ''; // 对方元宝 constructor(content: string, channel: number) { this.game_key = SDK_37_CONST.GAME_KEY; diff --git a/shared/pubUtils/httpUtil.ts b/shared/pubUtils/httpUtil.ts index 270ad5d3e..e099434fe 100644 --- a/shared/pubUtils/httpUtil.ts +++ b/shared/pubUtils/httpUtil.ts @@ -50,10 +50,14 @@ export async function httpRequestForm(url: string, method: string, form: any, ti headers: { 'content-type': 'application/x-www-form-urlencoded' }, - form, timeout, JSON: true } + if(method == HTTP_METHOD.GET) { + options['qs'] = form; + } else if (method == HTTP_METHOD.POST) { + options['form'] = form; + } try { let res = await request(options); diff --git a/shared/resource/jsons/dic_email_content.json b/shared/resource/jsons/dic_email_content.json index a20f79f69..5d08b632d 100644 --- a/shared/resource/jsons/dic_email_content.json +++ b/shared/resource/jsons/dic_email_content.json @@ -103,5 +103,15 @@ "id": 20, "content": "亲爱的小将军,以下是您未领取的【月卡】每日奖励,请查收", "time": 24 + }, + { + "id": 21, + "content": "修改账号名", + "time": 24 + }, + { + "id": 22, + "content": "修改公会名或公会公告", + "time": 24 } ] \ No newline at end of file diff --git a/web-server/app/controller/sdk.ts b/web-server/app/controller/sdk.ts index e577bdc31..af3904037 100644 --- a/web-server/app/controller/sdk.ts +++ b/web-server/app/controller/sdk.ts @@ -12,14 +12,14 @@ export default class SdkController extends Controller { public async treatRoleName() { const { ctx } = this; - const params = new RoleNameCallBackParam(ctx.request.body); + const params = new RoleNameCallBackParam(ctx.query); ctx.body = await ctx.service.sdk.treatRoleName(params); return; } public async treatGuildName() { const { ctx } = this; - const params = new GuildNameCallBackParam(ctx.request.body); + const params = new GuildNameCallBackParam(ctx.query); ctx.body = await ctx.service.sdk.treatGuildName(params); return; @@ -28,7 +28,7 @@ export default class SdkController extends Controller { public async getGuildByUser() { const { ctx } = this; - const params = new GetGuildInfoByUserParam(ctx.request.body); + const params = new GetGuildInfoByUserParam(ctx.query); ctx.body = await ctx.service.sdk.getGuildByUser(params); return; } diff --git a/web-server/app/service/Sdk.ts b/web-server/app/service/Sdk.ts index b4baa12c3..41c9ac294 100644 --- a/web-server/app/service/Sdk.ts +++ b/web-server/app/service/Sdk.ts @@ -66,9 +66,7 @@ export default class Sdk extends Service { let redisClient: RedisClient = app.context.redisClient; let name = getRedisSubChannel(REDIS_KEY.PAY_CHANNEL, app.config.env); - console.log('**** channelname', name) let result = await redisClient.publishAsync(name, JSON.stringify(params)); - console.log('**** result', result); if(result == 0) { return ctx.service.utils.resResult(PAY_37_CALLBACK_CODE.SERVER_IS_BUSY, ''); } @@ -90,6 +88,7 @@ export default class Sdk extends Service { if(!params.checkParams()) return SDK_37_TREAT_CODE.WRONG_PARAMS; if(params.game_key != SDK_37_CONST.GAME_KEY) { + console.error('用户名或军团名违规处理, gamekey错误', params.game_key); return SDK_37_TREAT_CODE.ERR; } @@ -101,6 +100,7 @@ export default class Sdk extends Service { } if(gameData.whiteip.indexOf(ip) == -1) { + console.error('用户名或军团名违规处理, ip限制', ip); return SDK_37_TREAT_CODE.ERR; } return SDK_37_TREAT_CODE.SUCCESS @@ -108,17 +108,63 @@ export default class Sdk extends Service { // 用户名违规处理 public async treatRoleName(params: RoleNameCallBackParam) { + const { ctx } = this; + const { app } = ctx; let check = this.treatRoleOrGuildNameValidate(params); if(check.code != SDK_37_TREAT_CODE.SUCCESS.code) return check.code; + // 1. 标记这个玩家违规 + let channelId = getChannelId('37', params.username); + console.log(channelId); + let user = await UserModel.findUserByChannel(channelId); + if(!user) { + console.error('用户名违规处理, 未找到玩家账号', channelId); + return SDK_37_TREAT_CODE.ERR.code; + } + + let role = await RoleModel.findByUidAndSetMark(user.uid, params.sid); + if(!role) { + console.error('用户名违规处理, 未找到玩家角色', user.uid, params.sid); + return SDK_37_TREAT_CODE.ERR.code; + } + + if(params.actor != role.roleName || params.actor_id != role.roleId) { + console.error('用户名违规处理, roleName或roleId对不上', params.actor, role.roleName, params.actor_id, role.roleId); + return SDK_37_TREAT_CODE.ERR.code; + } + + // 2. redis发布 + let redisClient: RedisClient = app.context.redisClient; + let name = getRedisSubChannel(REDIS_KEY.TREAT_ROLE_CHANNEL, app.config.env); + let result = await redisClient.publishAsync(name, role.roleId); + if(result == 0) { + console.error('用户名违规处理, 未发布到订阅频道'); + return SDK_37_TREAT_CODE.ERR.code; + } + return check.code } // 公会信息违规处理 public async treatGuildName(params: GuildNameCallBackParam) { + const { ctx } = this; + const { app } = ctx; let check = this.treatRoleOrGuildNameValidate(params); if(check.code != SDK_37_TREAT_CODE.SUCCESS.code) return check.code; + // 1. 标记军团违规 + let guild = await GuildModel.findByCodeAndSetMark(params.guildid, params.sid); + if(!guild) return SDK_37_TREAT_CODE.ERR.code; + + // 2. redis发布 + let redisClient: RedisClient = app.context.redisClient; + let name = getRedisSubChannel(REDIS_KEY.TREAT_GUILD_CHANNEL, app.config.env); + let content = JSON.stringify({ code: guild.code, serverId: params.sid, type: params.type }); + let result = await redisClient.publishAsync(name, content); + if(result == 0) { + return SDK_37_TREAT_CODE.ERR.code; + } + return check.code } @@ -128,7 +174,6 @@ export default class Sdk extends Service { if(check.code != SDK_37_TREAT_CODE.SUCCESS.code) return resResult(check); let channelId = getChannelId('37', params.uid); - console.log(channelId) let user = await UserModel.findUserByChannel(channelId); if(!user) return resResult(SDK_37_TREAT_CODE.USER_NOT_FOUND);