commit 5a041ecaf5637b0ef7b87dd77694a1001660c61e
Author: dzc <2388224167@qq.com>
Date: Tue Nov 25 11:50:02 2025 +0800
init
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..09144bf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+/.idea/
+/box-im.iml
+/im-server/im-server.iml
+/im-platform/im-platform.iml
+/im-client/im-client.iml
+/im-common/im-common.iml
+/im-server/target/
+/im-platform/target/
+/im-client/target/
+/im-common/target/
+/im-web/node_modules/
+/im-web/dist/
+/im-uniapp/node_modules/
+/im-uniapp/package-lock.json
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..edc4cb5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 blue
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..96a5f4c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,145 @@
+
+### **盒子IM**
+
+[](https://gitee.com/bluexsx/box-im)
+[](https://github.com/bluexsx/box-im)
+
+
+1. 盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。
+1. 支持私聊、群聊、离线消息、发送语音、图片、文件、已读未读、群@等功能
+1. 支持音视频通话(基于原生webrtc实现,需要ssl证书)
+1. uniapp端兼容app、h5、微信小程序,可与web端同时在线,并保持消息同步
+1. 后端采用springboot+netty实现,网页端使用vue,移动端使用uniapp
+1. 服务器支持集群化部署,具有良好的横向扩展能力
+
+
+详细文档:https://www.yuque.com/u1475064/mufu2a
+官方论坛: https://bbs.boxim.online
+
+#### 近期更新
+发布3.0版本:
+
+- 后台管理端上线,后台管理代码仓库地址:https://gitee.com/bluexsx/box-im-admin
+- 框架和组件版本全面升级: jdk17、springboot3.3、node18等
+- 部分界面,功能、性能优化
+
+
+#### 在线体验
+
+网页端:https://www.boxim.online
+
+移动安卓端:已上架至各大主流手机应用市场以及腾讯应用宝,搜索"盒子IM",下载安装即可
+
+移动ios端: 已上架至app store,搜索"盒子IM",下载安装即可
+
+小程序段: 已上架至微信小程序,搜索“盒子IM”进入即可
+
+移动H5端: https://www.boxim.online/h5/ ,或扫码:
+
+
+
+测试账号:张三/Aa123123 李四/Aa123123,也可以自行注册
+
+说明:
+1.**请勿利用测试账号辱骂他人、发布低俗内容,否则将直接对您的IP进行封禁**
+2.由于部分厂商上架审核要求实名制,app端隐藏了"用户名注册"注册通道,可通过长按注册页面蓝色文字标题解除限制
+3.由于微信小程序每次发布审核过于严苛和繁琐,暂时不再提供体验环境,但uniapp端依然会继续兼容小程序
+4.体验环境部署的是商业版本,与开源版本功能存在一定差异,具体请参考:
+https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29#SbvXq
+
+
+#### 付费服务
+商业版源码: https://www.yuque.com/u1475064/imk5n2/qtezcg32q1d0dr29
+远程协助: https://www.yuque.com/u1475064/imk5n2/fettd57rvzc29s5r
+环境搭建: https://www.yuque.com/u1475064/imk5n2/qgq5cvgmavallqnl
+
+
+#### 项目结构
+| 模块 | 功能 |
+|-------------|----------------------------------|
+| im-platform | 业务平台服务,负责处理来自用户的业务请求(http) |
+| im-server | 消息推送服务,不依赖业务,负责将消息推送给用户(ws) |
+| im-client | 消息推送sdk, 其他服务可集成此sdk与im-server通信 |
+| im-common | 公共包,后端服务均依赖此包 |
+| im-web | web页面 |
+| im-uniapp | uniapp页面,可打包成app、h5、微信小程序 |
+
+#### 消息推送方案
+当消息的发送者和接收者连的不是同一个server时,消息是无法直接推送的,所以我们设计出了能够支持跨节点推送的方案:
+
+
+- 利用了redis的list数据实现消息推送,其中key为im:unread:${serverid},每个key的数据可以看做一个queue,每个im-server根据自身的id只消费属于自己的queue
+- redis记录了每个用户的websocket连接的是哪个im-server,当用户发送消息时,im-platform将根据所连接的im-server的id,决定将消息推向哪个queue
+
+
+#### 本地启动
+1.安装运行环境
+- 安装node:v18.19.0
+- 安装jdk:17
+- 安装maven:3.9.6
+- 安装mysql:8.0,账号密码分别为root/root,创建名为im_platform的数据库,运行db/im_platfrom.sql脚本
+- 安装redis:6.2
+- 安装minio:RELEASE.2024-xx,使用默认账号、密码、端口
+
+2.启动后端服务
+```
+mvn clean package
+java -jar ./im-platform/target/im-platform.jar
+java -jar ./im-server/target/im-server.jar
+```
+
+3.启动前端web
+```
+cd im-web
+npm install
+npm run serve
+```
+访问 http://localhost:8080
+
+4.启动uniapp-h5
+将im-uniapp目录导入HBuilderX,点击菜单"运行"->"开发环境-h5"
+访问 http://localhost:5173
+
+
+#### 界面截图
+私聊:
+
+
+群聊:
+
+
+群通话(商业版):
+
+
+好友列表:
+
+
+群列表:
+
+
+移动端APP:
+
+
+
+
+
+#### 加入交流群
+群1: 741174521(已满)
+群2: 937470451(已满)
+群3: 1012017031(已满)
+群4: 765849133
+
+欢迎进群与小伙们一起交流, **申请加群前请务必先star哦**
+
+
+#### 点下star吧
+如果项目对您有帮助,请点亮右上方的star,支持一下作者吧!
+
+
+#### 说明几点
+
+1. 本系统允许用于商业用途,且不收费,**但切记不要用于任何非法用途** ,本软件作者不会为此承担任何责任
+1. 基于本系统二次开发后再次开源的项目,请注明引用出处,以避免引发不必要的误会
+1. 为方便管理,要pr的同学请将代码提交到v_3.0.0分支,作者会在功能上线时合并到master分支
+1. 允许商用不代表可以随意倒卖开源代码,尤其是代码、名字、截图一点都不改就拿去卖钱的,我劝你们善良一点!
+
diff --git a/db/im-platform.sql b/db/im-platform.sql
new file mode 100644
index 0000000..20d1c71
--- /dev/null
+++ b/db/im-platform.sql
@@ -0,0 +1,112 @@
+create table `im_user`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `user_name` varchar(255) not null comment '用户名',
+ `nick_name` varchar(255) not null comment '用户昵称',
+ `head_image` varchar(255) default '' comment '用户头像',
+ `head_image_thumb` varchar(255) default '' comment '用户头像缩略图',
+ `password` varchar(255) not null comment '密码',
+ `sex` tinyint(1) default 0 comment '性别 0:男 1:女',
+ `is_banned` tinyint(1) default 0 comment '是否被封禁 0:否 1:是',
+ `reason` varchar(255) default '' comment '被封禁原因',
+ `type` smallint default 1 comment '用户类型 1:普通用户 2:审核账户',
+ `signature` varchar(1024) default '' comment '个性签名',
+ `last_login_time` datetime DEFAULT null comment '最后登录时间',
+ `created_time` datetime DEFAULT CURRENT_TIMESTAMP comment '创建时间',
+ unique key `idx_user_name`(user_name),
+ key `idx_nick_name`(nick_name)
+) ENGINE=InnoDB CHARSET=utf8mb4 comment '用户';
+
+create table `im_friend`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `user_id` bigint not null comment '用户id',
+ `friend_id` bigint not null comment '好友id',
+ `friend_nick_name` varchar(255) not null comment '好友昵称',
+ `friend_head_image` varchar(255) default '' comment '好友头像',
+ `is_dnd` tinyint comment '免打扰标识(Do Not Disturb) 0:关闭 1:开启',
+ `deleted` tinyint comment '删除标识 0:正常 1:已删除',
+ `created_time` datetime DEFAULT CURRENT_TIMESTAMP comment '创建时间',
+ key `idx_user_id` (`user_id`),
+ key `idx_friend_id` (`friend_id`)
+) ENGINE=InnoDB CHARSET=utf8mb4 comment '好友';
+
+create table `im_private_message`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `tmp_id` varchar(32) comment '临时id,由前端生成',
+ `send_id` bigint not null comment '发送用户id',
+ `recv_id` bigint not null comment '接收用户id',
+ `content` text comment '发送内容',
+ `type` tinyint(1) NOT NULL comment '消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 21:提示',
+ `status` tinyint(1) NOT NULL comment '状态 0:未读 1:已读 2:撤回 3:已读',
+ `send_time` datetime DEFAULT CURRENT_TIMESTAMP comment '发送时间',
+ key `idx_send_id` (`send_id`),
+ key `idx_recv_id` (`recv_id`)
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '私聊消息';
+
+
+create table `im_group`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `name` varchar(255) not null comment '群名字',
+ `owner_id` bigint not null comment '群主id',
+ `head_image` varchar(255) default '' comment '群头像',
+ `head_image_thumb` varchar(255) default '' comment '群头像缩略图',
+ `notice` varchar(1024) default '' comment '群公告',
+ `is_banned` tinyint(1) default 0 comment '是否被封禁 0:否 1:是',
+ `reason` varchar(255) default '' comment '被封禁原因',
+ `dissolve` tinyint(1) default 0 comment '是否已解散',
+ `created_time` datetime default CURRENT_TIMESTAMP comment '创建时间'
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '群';
+
+create table `im_group_member`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `group_id` bigint not null comment '群id',
+ `user_id` bigint not null comment '用户id',
+ `user_nick_name` varchar(255) DEFAULT '' comment '用户昵称',
+ `remark_nick_name` varchar(255) DEFAULT '' comment '显示昵称备注',
+ `head_image` varchar(255) DEFAULT '' comment '用户头像',
+ `remark_group_name` varchar(255) DEFAULT '' comment '显示群名备注',
+ `is_dnd` tinyint comment '免打扰标识(Do Not Disturb) 0:关闭 1:开启',
+ `quit` tinyint(1) DEFAULT 0 comment '是否已退出',
+ `quit_time` datetime DEFAULT NULL comment '退出时间',
+ `created_time` datetime DEFAULT CURRENT_TIMESTAMP comment '创建时间',
+ key `idx_group_id`(`group_id`),
+ key `idx_user_id`(`user_id`)
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '群成员';
+
+create table `im_group_message`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `tmp_id` varchar(32) comment '临时id,由前端生成',
+ `group_id` bigint not null comment '群id',
+ `send_id` bigint not null comment '发送用户id',
+ `send_nick_name` varchar(255) DEFAULT '' comment '发送用户昵称',
+ `recv_ids` varchar(1024) DEFAULT '' comment '接收用户id,逗号分隔,为空表示发给所有成员',
+ `content` text comment '发送内容',
+ `at_user_ids` varchar(1024) comment '被@的用户id列表,逗号分隔',
+ `receipt` tinyint DEFAULT 0 comment '是否回执消息',
+ `receipt_ok` tinyint DEFAULT 0 comment '回执消息是否完成',
+ `type` tinyint(1) NOT NULL comment '消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 21:提示' ,
+ `status` tinyint(1) DEFAULT 0 comment '状态 0:未发出 2:撤回 ',
+ `send_time` datetime DEFAULT CURRENT_TIMESTAMP comment '发送时间',
+ key `idx_group_id` (group_id)
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '群消息';
+
+create table `im_sensitive_word`(
+ `id` bigint not null auto_increment primary key comment 'id',
+ `content` varchar(64) not null comment '敏感词内容',
+ `enabled` tinyint DEFAULT 0 COMMENT '是否启用 0:未启用 1:启用',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
+)ENGINE=InnoDB CHARSET=utf8mb4 comment '敏感词';
+
+CREATE TABLE `im_file_info` (
+ `id` BIGINT NOT NULL auto_increment PRIMARY key comment 'id',
+ `file_name` VARCHAR(255) NOT NULL comment '文件名',
+ `file_path` VARCHAR(255) NOT NULL comment '文件地址',
+ `file_size` INTEGER NOT NULL comment '文件大小',
+ `file_type` tinyint NOT NULL comment '0:普通文件 1:图片 2:视频',
+ `compressed_path` VARCHAR(255) DEFAULT NULL comment '压缩文件路径',
+ `cover_path` VARCHAR(255) DEFAULT NULL comment '封面文件路径,仅视频文件有效',
+ `upload_time` datetime DEFAULT CURRENT_TIMESTAMP comment '上传时间',
+ `is_permanent` tinyint DEFAULT 0 comment '是否永久文件',
+ `md5` VARCHAR(64) NOT NULL comment '文件md5',
+ KEY `idx_md5` (md5)
+) ENGINE = InnoDB CHARSET = utf8mb4 comment '文件';
\ No newline at end of file
diff --git a/db/敏感词库初始化.sql b/db/敏感词库初始化.sql
new file mode 100644
index 0000000..f6e46aa
--- /dev/null
+++ b/db/敏感词库初始化.sql
@@ -0,0 +1,470 @@
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爱液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('按摩棒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('拔出来', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爆草', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('包二奶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爆乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('暴淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屄', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('被操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('被插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('被干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('逼奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('仓井空', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插暴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操黑', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操烂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肏你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肏死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操我', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('厕奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插进', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插我', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('插阴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('潮吹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('潮喷', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人论坛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人小说', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人卡通', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人聊', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人视', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人图', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人小', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人论坛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人色情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人网站', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人小说', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('艳情小说', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人游戏', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('吃精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('赤裸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('抽插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('扌由插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('抽一插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('春药', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('大波', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('大力抽送', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('大乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('荡妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('荡女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('盗撮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('多人轮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('发浪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('放尿', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肥逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('粉穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('封面女郎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('风月大陆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干死你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肛交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肛门', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('龟头', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裹本', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('好嫩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('豪乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('黑逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('后庭', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('后穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('虎骑', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('花花公子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('换妻俱乐部', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('黄片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('几吧', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('鸡吧', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('鸡巴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('鸡奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('寂寞男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('寂寞女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('妓女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('激情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('集体淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('奸情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('叫床', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('脚交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('精液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('就去日', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('巨屌', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('菊花洞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('菊门', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('巨奶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('巨乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('菊穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('开苞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口爆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口活', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口射', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('口淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裤袜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狂操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狂插', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪叫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浪女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狼友', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('聊性', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('流淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('铃木麻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('凌辱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('漏乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('轮暴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('轮操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('轮奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸陪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('买春', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美少妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美腿', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美幼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('秘唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('迷奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('密穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('蜜穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('蜜液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('摸奶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('摸胸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('母奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('奈美', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('奶子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('男奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('内射', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('嫩逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('嫩女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('嫩穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('捏弄', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('女优', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('炮友', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('砲友', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('喷精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屁眼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('品香堂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('前凸后翘', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('强暴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('强奸处女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('情趣用品', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('情色', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('拳交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全裸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('群交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('惹火身材', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人妻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人兽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('日逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('日烂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉棒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉洞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉缝', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉棍', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉茎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉具', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('揉乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('肉欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳爆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳房', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳沟', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乳头', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('三级片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚水', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('骚穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色界', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色猫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色盟', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色情网站', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色区', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色诱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('色欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('射爽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('射颜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('食精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('释欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('手淫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('熟妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('熟母', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('熟女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爽片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爽死我了', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('双臀', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('死逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('丝袜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('丝诱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('松岛枫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('酥痒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('汤加丽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('套弄', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('体奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('体位', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('舔脚', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('舔阴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('调教', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('偷欢', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('偷拍', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('推油', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('脱内裤', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('文做', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我就色', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('无码', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('舞女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('无修正', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('吸精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('夏川纯', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('相奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('小逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('校鸡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('小穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('写真', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性感妖娆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性感诱惑', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性虎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性饥渴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性技巧', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性虐', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性息', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性欲', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('胸推', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('穴口', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('学生妹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('穴图', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('亚情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('颜射', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阳具', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('杨思敏', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('要射了', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('夜勤病栋', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一本道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一夜欢', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一夜情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴部', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫虫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴阜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫河', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴核', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴户', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫贱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫叫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫教师', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫浪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫媚', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫糜', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫魔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫母', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫虐', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫妻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫色', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫声浪语', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫兽学园', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫书', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫术炼金士', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫水', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫娃', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫威', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫亵', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫样', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫液', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫照', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('应召', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('幼交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('幼男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('幼女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欲火', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欲女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉女心经', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉蒲团', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉乳', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欲仙欲死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('玉穴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('援交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('原味内衣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('援助交际', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('张筱雨', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('招鸡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('招妓', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('中年美妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('抓胸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('自拍', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('自慰', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('作爱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('贱人', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('傻逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('煞逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('煞笔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('刹笔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('傻比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('沙比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('欠干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('婊子养的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我日你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我草', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('卧艹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('卧槽', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('爆你菊', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('艹你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('你他妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('真他妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('别他吗', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('草你吗', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('草你丫', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('擦你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你娘', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操他妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('日你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干你妈', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干你娘', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('娘西皮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗操', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗草', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗杂种', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗日的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你祖宗', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你全家', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('操你大爷', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('妈逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('你麻痹', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('麻痹的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('妈了个逼', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('马勒', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('狗娘养', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('贱比', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('下贱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('死全家', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全家死光', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全家不得好死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('全家死绝', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('白痴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('无耻', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('你妈的', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('婊子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('贱货', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('人渣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('混蛋', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('媚外', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('和弦', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兼职', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('限量', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('铃声', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性伴侣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('男公关', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('火辣', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('精子', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('射精', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('诱奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('强奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('做爱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性爱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('发生关系', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('按摩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('快感', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('处男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('猛男', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('少妇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屌', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('屁股', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('下体', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('内裤', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('浑圆', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('咪咪', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('发情', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('刺激', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('白嫩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('粉嫩', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('兽性', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('风骚', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('呻吟', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阉割', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('高潮', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸露', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('不穿', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('一丝不挂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('脱光', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干你', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('干死', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('我干', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裙中性运动', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱奸', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦类', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('乱伦小', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理大', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理电影', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理毛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('伦理片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸聊', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸聊网', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸体写真', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸舞视', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('裸照', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('美女裸体', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交视频', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性交图片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性奴', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性奴集中营', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('性虐', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴蒂', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴户', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴间来电', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎增大', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴茎助勃', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('阴毛', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('陰唇', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('陰道', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('陰戶', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡美女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡视频', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫荡照片', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫乱', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫靡', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫魔', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫魔舞', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫情女', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫肉', 1, 10000);
+INSERT INTO `im_sensitive_word` (`content`, `enabled`, `creator`) VALUES ('淫騷妹', 1, 10000);
+
+
diff --git a/im-client/pom.xml b/im-client/pom.xml
new file mode 100644
index 0000000..dbe3d30
--- /dev/null
+++ b/im-client/pom.xml
@@ -0,0 +1,21 @@
+
+
+
+ box-im
+ com.bx
+ 3.0.0
+
+ 4.0.0
+
+ im-client
+
+
+
+ com.bx
+ im-common
+ 3.0.0
+
+
+
\ No newline at end of file
diff --git a/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java
new file mode 100644
index 0000000..c172099
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java
@@ -0,0 +1,13 @@
+package com.bx.imclient;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+
+@Slf4j
+@Configuration
+@ComponentScan(basePackages = {"com.bx.imclient", "com.bx.imcommon"})
+public class IMAutoConfiguration {
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/IMClient.java b/im-client/src/main/java/com/bx/imclient/IMClient.java
new file mode 100644
index 0000000..1630d64
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/IMClient.java
@@ -0,0 +1,92 @@
+package com.bx.imclient;
+
+import com.bx.imclient.sender.IMSender;
+import com.bx.imcommon.enums.IMTerminalType;
+import com.bx.imcommon.model.IMGroupMessage;
+import com.bx.imcommon.model.IMPrivateMessage;
+import com.bx.imcommon.model.IMSystemMessage;
+import lombok.AllArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+import java.util.Map;
+
+@Configuration
+@AllArgsConstructor
+public class IMClient {
+
+ private final IMSender imSender;
+
+ /**
+ * 判断用户是否在线
+ *
+ * @param userId 用户id
+ */
+ public Boolean isOnline(Long userId){
+ return imSender.isOnline(userId);
+ }
+
+ /**
+ * 判断用户是否在线
+ *
+ * @param userId 用户id
+ * @param terminal 终端可惜
+ */
+ public Boolean isOnline(Long userId,IMTerminalType terminal){
+ return imSender.isOnline(userId,terminal);
+ }
+
+
+ /**
+ * 判断多个用户是否在线
+ *
+ * @param userIds 用户id列表
+ * @return 在线的用户列表
+ */
+ public List getOnlineUser(List userIds){
+ return imSender.getOnlineUser(userIds);
+ }
+
+
+ /**
+ * 判断多个用户是否在线
+ *
+ * @param userIds 用户id列表
+ * @return 在线的用户终端
+ */
+ public Map> getOnlineTerminal(List userIds){
+ return imSender.getOnlineTerminal(userIds);
+ }
+
+ /**
+ * 发送系统消息(发送结果通过MessageListener接收)
+ *
+ * @param message 私有消息
+ */
+ public void sendSystemMessage(IMSystemMessage message){
+ imSender.sendSystemMessage(message);
+ }
+
+
+ /**
+ * 发送私聊消息(发送结果通过MessageListener接收)
+ *
+ * @param message 私有消息
+ */
+ public void sendPrivateMessage(IMPrivateMessage message){
+ imSender.sendPrivateMessage(message);
+ }
+
+ /**
+ * 发送群聊消息(发送结果通过MessageListener接收)
+ *
+ * @param message 群聊消息
+ */
+ public void sendGroupMessage(IMGroupMessage message){
+ imSender.sendGroupMessage(message);
+ }
+
+
+
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/annotation/IMListener.java b/im-client/src/main/java/com/bx/imclient/annotation/IMListener.java
new file mode 100644
index 0000000..4f54bf9
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/annotation/IMListener.java
@@ -0,0 +1,18 @@
+package com.bx.imclient.annotation;
+
+import com.bx.imcommon.enums.IMListenerType;
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE,ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface IMListener {
+
+ IMListenerType type();
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/listener/MessageListener.java b/im-client/src/main/java/com/bx/imclient/listener/MessageListener.java
new file mode 100644
index 0000000..0ee2af3
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/listener/MessageListener.java
@@ -0,0 +1,12 @@
+package com.bx.imclient.listener;
+
+
+import com.bx.imcommon.model.IMSendResult;
+
+import java.util.List;
+
+public interface MessageListener {
+
+ void process(List> result);
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java b/im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
new file mode 100644
index 0000000..bd95284
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
@@ -0,0 +1,46 @@
+package com.bx.imclient.listener;
+
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.bx.imclient.annotation.IMListener;
+import com.bx.imcommon.enums.IMListenerType;
+import com.bx.imcommon.model.IMSendResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.List;
+
+@Component
+public class MessageListenerMulticaster {
+
+ @Autowired(required = false)
+ private List messageListeners = Collections.emptyList();
+
+ public void multicast(IMListenerType listenerType, List results){
+ if(CollUtil.isEmpty(results)){
+ return;
+ }
+ for(MessageListener listener:messageListeners){
+ IMListener annotation = listener.getClass().getAnnotation(IMListener.class);
+ if(annotation!=null && (annotation.type().equals(IMListenerType.ALL) || annotation.type().equals(listenerType))){
+ results.forEach(result->{
+ // 将data转回对象类型
+ if(result.getData() instanceof JSONObject){
+ Type superClass = listener.getClass().getGenericInterfaces()[0];
+ Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
+ JSONObject data = (JSONObject)result.getData();
+ result.setData(data.toJavaObject(type));
+ }
+ });
+ // 回调到调用方处理
+ listener.process(results);
+ }
+ }
+ }
+
+
+}
diff --git a/im-client/src/main/java/com/bx/imclient/sender/IMSender.java b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java
new file mode 100644
index 0000000..1ced811
--- /dev/null
+++ b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java
@@ -0,0 +1,262 @@
+package com.bx.imclient.sender;
+
+import cn.hutool.core.collection.CollUtil;
+import com.bx.imclient.listener.MessageListenerMulticaster;
+import com.bx.imcommon.contant.IMRedisKey;
+import com.bx.imcommon.enums.IMCmdType;
+import com.bx.imcommon.enums.IMListenerType;
+import com.bx.imcommon.enums.IMSendCode;
+import com.bx.imcommon.enums.IMTerminalType;
+import com.bx.imcommon.model.*;
+import com.bx.imcommon.mq.RedisMQTemplate;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@RequiredArgsConstructor
+public class IMSender {
+
+ @Autowired
+ private RedisMQTemplate redisMQTemplate;
+
+ @Value("${spring.application.name}")
+ private String appName;
+
+ private final MessageListenerMulticaster listenerMulticaster;
+
+
+ public void sendSystemMessage(IMSystemMessage message){
+ // 根据群聊每个成员所连的IM-server,进行分组
+ Map sendMap = new HashMap<>();
+ for (Integer terminal : message.getRecvTerminals()) {
+ message.getRecvIds().forEach(id -> {
+ String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, id.toString(), terminal.toString());
+ sendMap.put(key,new IMUserInfo(id, terminal));
+ });
+ }
+ // 批量拉取
+ List