Skip to content

表情、敏感词 ​

这篇解决什么 ​

系统表情包和个人表情落哪张表、敏感词何时拦截。读完能对上 im_face_pack / im_face_user_item / im_sensitive_word,以及私聊群聊发送前会 validateText。

默认端口 48080。先完成 IM 功能设计。发文本拦截的细节也见 敏感词。

示意图:表情是素材。敏感词在发文本时拦,不进表情包表。

从哪改 ​

名称说明仓库路径
C 端表情包@RequestMapping("/im/face-pack")ruoyi-office/yudao-module-im/.../face/ImFacePackController.java
C 端我的表情/im/face-user-itemImFaceUserItemController
运营表情包/im/manager/face-packImFacePackManagerController
运营表情项/im/manager/face-pack-itemImFacePackItemManagerController
运营敏感词/im/manager/sensitive-wordImSensitiveWordManagerController
校验ImSensitiveWordServiceImplsensitiveword/

运营页:views/im/manager/face/pack/、face/userItem/、sensitiveword/。输入框表情:views/im/home/.../face-picker.vue。

系统包:im_face_pack + im_face_pack_item(packId、图 URL、宽高、排序)。个人表情:im_face_user_item,上限 yudao.im.face.user-item-max-count,默认 200。

敏感词用 SensitiveWordBs,按租户本地缓存,CRUD 后本机立刻失效,多实例最长约 1 分钟刷新。只校验启用词。私聊 ImPrivateMessageServiceImpl、群聊 ImGroupMessageServiceImpl 发文本时调用 validateText。

字段 ​

名称说明仓库路径
name / icon / sort / status表情包元数据ImFacePackDO
packId / url / width / height包内单张ImFacePackItemDO
userId / url个人表情ImFaceUserItemDO
word / status敏感词ImSensitiveWordDO

status 用 CommonStatusEnum:0 开启,1 关闭。

不是系统词库那张表

基础设施「敏感词」和 IM 这张 im_sensitive_word 不是同一套。发 IM 文本只查本表。

频道推送不走这套校验

频道是运营单向素材。敏感词拦的是用户私聊 / 群聊文本。

按本仓库 DO 生成的 ER。

配置与操作 ​

走 表情管理(7570)下的 系统表情(7571,/im/face/pack)。填 name、icon、sort,status 0 开 / 1 关。点「管理表情」维护 im_face_pack_item(url、宽高、排序)。个人表情上限看 YAML yudao.im.face.user-item-max-count,默认 200。运营台账在 用户表情(7580,/im/face/user-item),这里只查不发。

敏感词管理(7560,/im/sensitive-word)维护 im_sensitive_word 的 word + status。只校验启用词。CRUD 后本机立刻失效缓存;多实例最长约 1 分钟刷新。私聊 / 群聊只有文本类型 101 会 validateText,命中抛 MESSAGE_SENSITIVE_WORD_BLOCKED,消息不入库。图片、语音、表情不走这层。频道推送不走这套校验。开启见 IM 功能设计。

系统表情

本系统截图:IM 即时通讯 → 表情管理 → 系统表情。包在 im_face_pack。

敏感词

本系统截图:敏感词管理。发 IM 文本只查这张 im_sensitive_word。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版