sdk:添加获取服务器列表、本地屏蔽词库
This commit is contained in:
@@ -5,7 +5,7 @@ import { LoginValidateData37 } from "../../domain/sdk";
|
||||
import { DicRMB } from "../../pubUtils/dictionary/DicRMB";
|
||||
import { nowSeconds } from "../../pubUtils/timeUtil";
|
||||
import { resResult } from "../../pubUtils/util";
|
||||
import { get37Md5Sign } from "../../pubUtils/sdkUtil";
|
||||
import { get37Md5SignA } from "../../pubUtils/sdkUtil";
|
||||
import { pinus } from "pinus";
|
||||
|
||||
/**
|
||||
@@ -39,7 +39,7 @@ export async function applyOrder37(localOrderID: string, roleId: string, product
|
||||
ext
|
||||
}
|
||||
|
||||
let sign = get37Md5Sign(body, SDK_37_CONST.PAY_KEY);
|
||||
let sign = get37Md5SignA(body, SDK_37_CONST.PAY_KEY);
|
||||
|
||||
|
||||
return { code: 0, data: {
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/********** 37sdk **********/
|
||||
|
||||
import { RoleModel, RoleType } from "../db/Role";
|
||||
import { Chat37Params, CheckGuild37Params, CheckName37Params } from "../domain/sdk";
|
||||
import { Chat37Params, CheckGuild37Params, CheckName37Params, GetWordParam } 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, SDK_TA_CONST, THINKING_DATA_MODE, THINKING_DATA_MODE_LIST } from "../consts";
|
||||
import { CHANNEL_PREFIX, FILENAME, getSdkChannelId, MAIL_TYPE, REDIS_KEY, SDK_37_ADDR, SDK_37_CONST, SDK_TA_CONST, STATUS, THINKING_DATA_MODE, THINKING_DATA_MODE_LIST } from "../consts";
|
||||
import { UserModel } from "../db/User";
|
||||
import { request37CheckChat, request37Post } from "../pubUtils/httpUtil";
|
||||
import { request37CheckChat, request37GetWord, request37Post } from "../pubUtils/httpUtil";
|
||||
import { GuildModel } from "../db/Guild";
|
||||
import { getRoleOnlineInfo, updateUserInfo } from "./redisService";
|
||||
import { Application, pinus } from "pinus";
|
||||
import { getGuildChannelSid } from "./chatService";
|
||||
import { getRandSingleEelm, readWordTxt, writeWordTxt } from "../pubUtils/util";
|
||||
const ThinkingAnalytics = require("thinkingdata-node");
|
||||
import Trie from '../pubUtils/trie';
|
||||
import _ = require("underscore");
|
||||
|
||||
// 检查私聊是否合法
|
||||
|
||||
@@ -60,7 +63,12 @@ export async function checkRoleName(roleId: string, roleName: string, myRole?: R
|
||||
let myUser = await UserModel.findUserByUid(myRole.userInfo.uid);
|
||||
if(myUser.channelType == '37') {
|
||||
let body = new CheckName37Params(myRole, roleName, myUser);
|
||||
return await request37Post(SDK_37_ADDR.CHECK_NAME, body, SDK_37_CONST.CHAT_KEY);
|
||||
let result = await request37Post(SDK_37_ADDR.CHECK_NAME, body, SDK_37_CONST.CHAT_KEY);
|
||||
if(result == STATUS.REQUEST_TIME_OUT.code) { // 超时
|
||||
return await checkFilterWords(roleName);
|
||||
} else if (result == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -69,11 +77,21 @@ export async function checkGuildName(guildCode: string, serverId: number, name:
|
||||
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);
|
||||
let result = await request37Post(SDK_37_ADDR.CHECK_UNION, body, SDK_37_CONST.CHAT_KEY);
|
||||
if(result == STATUS.REQUEST_TIME_OUT.code) { // 超时
|
||||
nameResult = await checkFilterWords(name);
|
||||
} else if (result == 0) {
|
||||
nameResult = false;
|
||||
}
|
||||
}
|
||||
if(notice) {
|
||||
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);
|
||||
let result = await request37Post(SDK_37_ADDR.CHECK_UNION, body, SDK_37_CONST.CHAT_KEY);
|
||||
if(result == STATUS.REQUEST_TIME_OUT.code) { // 超时
|
||||
noticeResult = await checkFilterWords(name);
|
||||
} else if (result == 0) {
|
||||
noticeResult = false;
|
||||
}
|
||||
}
|
||||
return nameResult && noticeResult
|
||||
}
|
||||
@@ -124,8 +142,8 @@ export async function treatGuildName(content: string) {
|
||||
await RoleModel.updateGuildName(params.code, newName);
|
||||
|
||||
} else if (params.type == 2) { // 公会公告
|
||||
await checkGuildName(params.code, params.serverId, undefined, '');
|
||||
await GuildModel.updateInfo(params.code, { notice: '', sdkMark: false });
|
||||
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);
|
||||
@@ -179,4 +197,54 @@ export function reportTAEvent(userCode: string, serverId: number, eventName: st
|
||||
|
||||
};
|
||||
ta.track(event);
|
||||
}
|
||||
|
||||
export async function fetch37Words() {
|
||||
let params = new GetWordParam();
|
||||
let result = await request37GetWord(SDK_37_ADDR.GET_WORD, params, SDK_37_CONST.CHAT_KEY);
|
||||
|
||||
writeWordTxt(FILENAME.FILTER_WORDS, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
export async function getTire() {
|
||||
let trie = pinus.app.get('tire');
|
||||
if(!trie) {
|
||||
let blockWords = readWordTxt(FILENAME.FILTER_WORDS);
|
||||
if(!blockWords) {
|
||||
blockWords = await fetch37Words();
|
||||
}
|
||||
trie = new Trie();
|
||||
let blockWordsArr = blockWords.split('\n');
|
||||
blockWordsArr.forEach(word => {
|
||||
let arr = word.split('||');
|
||||
trie.insertData(arr[0]);
|
||||
});
|
||||
pinus.app.set('tire', trie);
|
||||
}
|
||||
|
||||
return trie
|
||||
}
|
||||
|
||||
export async function _checkFilterWords(word: string) {
|
||||
let trie = await getTire();
|
||||
if (word.length > 30) return false;
|
||||
|
||||
let cleanStr = word.trim().replace(/ /gi, '').replace('\n','').replace(/&/gi, '');
|
||||
let hitStr = trie.getHitStr(cleanStr);
|
||||
if (hitStr) {
|
||||
console.log(`命中屏蔽词: ${hitStr}`);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
export async function checkFilterWords(word: string) {
|
||||
if(pinus.app.getServerType() == 'chat') {
|
||||
return await _checkFilterWords(word);
|
||||
} else {
|
||||
let servers = pinus.app.getServersByType('chat');
|
||||
let server = getRandSingleEelm(servers);
|
||||
return await pinus.app.rpc.chat.chatRemote.checkFilterWords.toServer(server.id, word);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user