sdk:添加获取服务器列表、本地屏蔽词库

This commit is contained in:
luying
2021-11-18 16:06:05 +08:00
parent 18c256ba2b
commit 624aa2b5f1
15 changed files with 59596 additions and 36 deletions
@@ -12,6 +12,7 @@ import { getAllGuildActivityStatus } from '../../../services/guildActivityServic
import { MailParam } from '../../../domain/roleField/mail';
import { RankFirstType } from '../../../db/RankFirst';
import { LotType } from '../../../db/Lot';
import { _checkFilterWords, getTire } from '../../../services/sdkService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -34,6 +35,7 @@ export class ChatRemote {
constructor(private app: Application) {
this.app = app;
this.channelService = app.get('channelService');
getTire();
}
private channelService: ChannelService;
@@ -274,4 +276,8 @@ export class ChatRemote {
channel.pushMessage('onAuctionOver', resResult(STATUS.SUCCESS, { lot }));
return true;
}
public async checkFilterWords(word: string) {
return await _checkFilterWords(word);
}
}
@@ -26,7 +26,7 @@ import { getActivities } from '../../../services/activity/activityService';
import * as dicParam from '../../../pubUtils/dicParam';
import Counter from '../../../db/Counter';
import { UserModel } from '../../../db/User';
import { reportTAEvent } from '../../../services/sdkService';
import { checkFilterWords, reportTAEvent } from '../../../services/sdkService';
export default function (app: Application) {
new HandlerService(app, {});
+2 -2
View File
@@ -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: {
+77 -9
View File
@@ -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);
}
}