# 直播平台功能交互逻辑报告 ## 概述 本报告详细描述直播平台三大核心模块的功能交互逻辑: 1. **敏感词管理** - 内容安全过滤系统 2. **消息/粉丝团/群组** - 社交通讯系统 3. **封禁系统** - 用户与房间管理 --- ## 一、敏感词管理模块 ### 1.1 功能概述 敏感词管理用于过滤平台内的违规内容,保障平台内容安全。 ### 1.2 数据表结构 **表名**: `eb_sensitive_word` | 字段 | 类型 | 说明 | |------|------|------| | id | int | 主键ID | | word | varchar(128) | 敏感词内容 | | category | varchar(32) | 分类(default/spam/illegal) | | level | tinyint | 级别(1轻度/2中度/3重度) | | action | tinyint | 处理方式(1替换/2拦截/3警告) | | replace_text | varchar(32) | 替换文本(默认***) | | status | tinyint | 状态(0禁用/1启用) | | create_time | datetime | 创建时间 | | update_time | datetime | 更新时间 | ### 1.3 管理端功能 **API路径**: `/api/admin/sensitive/word` | 接口 | 方法 | 功能 | |------|------|------| | /list | GET | 敏感词列表(支持分页、关键词搜索、时间筛选) | | /add | POST | 添加敏感词 | | /update | POST | 更新敏感词 | | /delete/{id} | POST | 删除敏感词 | | /status/{id} | POST | 切换启用/禁用状态 | ### 1.4 交互流程图 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 敏感词管理流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 管理员 │───▶│ 添加敏感词│───▶│ 存入数据库│ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 用户发送 │───▶│ 内容检测 │───▶│ 匹配敏感词│───▶│ 执行处理 │ │ │ │ 消息/弹幕│ │ │ │ │ │ (替换/拦截)│ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 1.5 应用场景 敏感词过滤应用于以下场景: - 直播间弹幕消息 - 私聊消息内容 - 粉丝团群聊消息 - 动态发布内容 - 用户昵称/签名 --- ## 二、消息/粉丝团/群组模块 ### 2.1 私聊消息系统 #### 2.1.1 数据表结构 **会话表**: `eb_conversation` | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 会话ID | | user1_id | int | 用户1 ID | | user2_id | int | 用户2 ID | | last_message | varchar(255) | 最后一条消息预览 | | last_message_time | datetime | 最后消息时间 | | user1_unread_count | int | 用户1未读数 | | user2_unread_count | int | 用户2未读数 | | user1_deleted | tinyint | 用户1是否删除 | | user2_deleted | tinyint | 用户2是否删除 | **私聊消息表**: `eb_private_message` | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 消息ID | | conversation_id | bigint | 会话ID | | sender_id | int | 发送者ID | | receiver_id | int | 接收者ID | | content | text | 消息内容 | | message_type | varchar(20) | 消息类型(text/image/voice) | | media_url | varchar(500) | 媒体URL | | status | varchar(20) | 状态(sent/read) | | is_recalled | tinyint | 是否撤回 | #### 2.1.2 移动端API **路径**: `/api/front/chat` | 接口 | 方法 | 功能 | |------|------|------| | /conversations | GET | 获取会话列表 | | /conversations/{id} | GET | 获取会话详情 | | /conversations/{id}/messages | GET | 获取消息列表 | | /conversations/{id}/messages | POST | 发送消息 | | /conversations/{id}/read | POST | 标记已读 | | /messages/{id}/recall | POST | 撤回消息(2分钟内) | #### 2.1.3 管理端API **路径**: `/api/admin/chat` | 接口 | 方法 | 功能 | |------|------|------| | /conversations | GET | 会话列表(支持搜索) | | /conversations/{id}/messages | GET | 查看会话消息 | | /conversations/{id} | DELETE | 删除会话 | | /messages/{id} | DELETE | 删除单条消息 | | /statistics | GET | 私聊统计数据 | #### 2.1.4 私聊交互流程 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 私聊消息发送流程 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 用户A │──▶│ 检查黑名单 │──▶│ 敏感词过滤 │──▶│ 保存消息 │ │ │ │ 发消息 │ │ │ │ │ │ │ │ │ └────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌────────────┐ ┌────────────┐ │ │ │ 黑名单拦截 │ │ 更新会话 │ │ │ │ 返回错误 │ │ 推送通知 │ │ │ └────────────┘ └────────────┘ │ │ │ │ │ ▼ │ │ ┌────────────┐ │ │ │ 用户B收到 │ │ │ │ 消息通知 │ │ │ └────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ ``` ### 2.2 粉丝团系统 #### 2.2.1 数据表结构 **粉丝团表**: `eb_fan_group` | 字段 | 类型 | 说明 | |------|------|------| | id | int | 粉丝团ID | | anchor_id | int | 主播ID | | anchor_name | varchar(64) | 主播昵称 | | name | varchar(64) | 粉丝团名称 | | badge | varchar(32) | 粉丝团徽章 | | badge_color | varchar(16) | 徽章颜色 | | member_count | int | 成员数量 | | level | int | 粉丝团等级 | | status | tinyint | 状态(0解散/1正常) | **粉丝团成员表**: `eb_fan_group_member` | 字段 | 类型 | 说明 | |------|------|------| | id | int | 成员记录ID | | group_id | int | 粉丝团ID | | uid | int | 用户ID | | nickname | varchar(64) | 成员昵称 | | level | int | 成员等级(1-10) | | intimacy | int | 亲密度 | | status | tinyint | 状态 | | join_time | datetime | 加入时间 | **群聊消息表**: `eb_group_message` | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 消息ID | | group_id | int | 粉丝团ID | | sender_id | int | 发送者ID | | content | text | 消息内容 | | message_type | varchar(20) | 消息类型 | | is_deleted | tinyint | 是否删除 | #### 2.2.2 管理端API **路径**: `/api/admin/fan/group` | 接口 | 方法 | 功能 | |------|------|------| | /list | GET | 粉丝团列表 | | /detail/{id} | GET | 粉丝团详情 | | /delete/{id} | POST | 删除粉丝团 | | /batch-delete | POST | 批量删除 | | /status/{id} | POST | 修改状态(解散/恢复) | | /update/{id} | POST | 修改粉丝团信息 | | /member/list | GET | 成员列表 | | /member/delete/{id} | POST | 删除成员 | | /member/update-level/{id} | POST | 修改成员等级 | | /message/list | GET | 聊天记录列表 | | /message/delete/{id} | POST | 删除聊天记录 | | /statistics | GET | 统计数据 | #### 2.2.3 粉丝团交互流程 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 粉丝团系统流程 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 【创建粉丝团】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 主播 │──▶│ 设置名称 │──▶│ 创建粉丝团 │ │ │ │ 开播 │ │ 徽章/颜色 │ │ │ │ │ └────────┘ └────────────┘ └────────────┘ │ │ │ │ 【加入粉丝团】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 用户 │──▶│ 查看粉丝团 │──▶│ 支付加入费 │──▶│ 成为成员 │ │ │ │ │ │ 信息 │ │ (可选) │ │ 等级=1 │ │ │ └────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ 【等级提升】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 成员 │──▶│ 送礼/互动 │──▶│ 增加亲密度 │──▶│ 等级提升 │ │ │ │ │ │ │ │ │ │ (1-10级) │ │ │ └────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ 【群聊功能】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 成员 │──▶│ 发送消息 │──▶│ 敏感词过滤 │──▶│ 群内广播 │ │ │ │ │ │ │ │ │ │ │ │ │ └────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` --- ## 三、封禁系统模块 ### 3.1 系统概述 封禁系统分为两大类: 1. **平台封禁** - 管理员对用户/房间的封禁(eb_user_ban / eb_room_ban) 2. **用户黑名单** - 用户间的互相拉黑(eb_user_blacklist / eb_room_blacklist) ### 3.2 数据表结构 #### 3.2.1 用户封禁表 `eb_user_ban` | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 记录ID | | user_id | int | 被封禁用户ID | | ban_type | varchar(20) | 封禁类型(permanent永久/temporary临时) | | reason | varchar(500) | 封禁原因 | | duration_days | int | 封禁天数(临时封禁) | | expire_time | datetime | 解封时间 | | operator_id | int | 操作员ID | | status | tinyint | 状态(0已解封/1封禁中) | #### 3.2.2 房间封禁表 `eb_room_ban` | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 记录ID | | room_id | int | 被封禁房间ID | | ban_type | varchar(20) | 封禁类型 | | reason | varchar(500) | 封禁原因 | | duration_days | int | 封禁天数 | | expire_time | datetime | 解封时间 | | operator_id | int | 操作员ID | | status | tinyint | 状态 | #### 3.2.3 用户黑名单表 `eb_user_blacklist` | 字段 | 类型 | 说明 | |------|------|------| | id | int | 记录ID | | user_id | int | 拉黑发起者ID | | blocked_user_id | int | 被拉黑用户ID | | blocker_nickname | varchar(64) | 发起者昵称 | | blocked_nickname | varchar(64) | 被拉黑者昵称 | | create_time | datetime | 创建时间 | #### 3.2.4 房间黑名单表 `eb_room_blacklist` | 字段 | 类型 | 说明 | |------|------|------| | id | int | 记录ID | | room_id | int | 房间ID | | room_name | varchar(128) | 房间名称 | | blocked_user_id | int | 被拉黑用户ID | | blocked_user_nickname | varchar(64) | 被拉黑用户昵称 | | operator_id | int | 操作者ID(主播) | | create_time | datetime | 创建时间 | ### 3.3 管理端API #### 3.3.1 封禁管理 `/api/admin/ban` | 接口 | 方法 | 功能 | |------|------|------| | /user/list | GET | 用户封禁列表 | | /user/add | POST | 封禁用户 | | /user/unban/{id} | POST | 解除用户封禁 | | /user/delete/{id} | POST | 删除封禁记录 | | /user/batch-delete | POST | 批量删除 | | /user/check/{userId} | GET | 检查用户封禁状态 | | /room/list | GET | 房间封禁列表 | | /room/add | POST | 封禁房间 | | /room/unban/{id} | POST | 解除房间封禁 | | /room/delete/{id} | POST | 删除封禁记录 | | /room/batch-delete | POST | 批量删除 | | /room/check/{roomId} | GET | 检查房间封禁状态 | #### 3.3.2 黑名单管理 `/api/admin/blacklist` | 接口 | 方法 | 功能 | |------|------|------| | /user/list | GET | 用户黑名单列表 | | /user/delete/{id} | POST | 删除用户黑名单记录 | | /user/batch-delete | POST | 批量删除 | | /room/list | GET | 房间黑名单列表 | | /room/delete/{id} | POST | 删除房间黑名单记录 | | /room/batch-delete | POST | 批量删除 | ### 3.4 移动端API **路径**: `/api/front/ban` | 接口 | 方法 | 功能 | |------|------|------| | /check/me | GET | 检查当前用户封禁状态 | | /check/user/{userId} | GET | 检查指定用户封禁状态 | | /check/room/{roomId} | GET | 检查房间封禁状态 | | /blacklist/list | GET | 获取我的黑名单列表 | | /blacklist/add | POST | 添加用户到黑名单 | | /blacklist/remove | POST | 从黑名单移除用户 | | /blacklist/check/{targetUserId} | GET | 检查黑名单状态 | ### 3.5 封禁检查触发点 封禁状态检查在以下场景自动触发: | 场景 | 检查内容 | 实现位置 | |------|----------|----------| | 用户登录 | 检查用户是否被封禁 | LoginServiceImpl.checkUserBanStatus() | | 发送私聊消息 | 检查双方黑名单状态 | ConversationServiceImpl.checkBlacklistStatus() | | 发送直播间弹幕 | 检查用户封禁状态 | LiveRoomController.checkUserBanStatus() | | 赠送礼物 | 检查用户封禁状态 | LiveRoomController.sendGift() | | 进入直播间 | 检查房间封禁状态 | Android RoomDetailActivity | ### 3.6 封禁系统交互流程 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ 封禁系统完整流程 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ 【管理员封禁用户】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 管理员 │──▶│ 选择用户 │──▶│ 设置封禁 │──▶│ 更新用户 │ │ │ │ │ │ 填写原因 │ │ 类型/时长 │ │ status=0 │ │ │ └────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ 【用户登录检查】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 用户 │──▶│ 提交登录 │──▶│ 检查封禁表 │──▶│ 封禁中? │ │ │ │ 登录 │ │ │ │ │ │ │ │ │ └────────┘ └────────────┘ └────────────┘ └─────┬──────┘ │ │ │ │ │ ┌──────────────────┼──────────────────┐ │ │ ▼ ▼ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ │ 是:拒绝 │ │ 否:允许 │ │ │ │ │ 返回原因 │ │ 登录成功 │ │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ 【用户拉黑用户】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 用户A │──▶│ 点击拉黑 │──▶│ 添加黑名单 │──▶│ 删除好友 │ │ │ │ │ │ 用户B │ │ 记录 │ │ 关系 │ │ │ └────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ 【私聊黑名单检查】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 用户A │──▶│ 发送消息 │──▶│ 检查黑名单 │ │ │ │ 发消息 │ │ 给用户B │ │ │ │ │ └────────┘ └────────────┘ └─────┬──────┘ │ │ │ │ │ ┌──────────────────┼──────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ A拉黑了B │ │ B拉黑了A │ │ 无黑名单 │ │ │ │ 提示:您已│ │ 提示:对方│ │ 正常发送 │ │ │ │ 拉黑对方 │ │ 已拉黑您 │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ 【房间封禁检查】 │ │ ┌────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 用户 │──▶│ 进入直播间 │──▶│ 检查房间 │──▶│ 封禁中? │ │ │ │ │ │ │ │ 封禁状态 │ │ │ │ │ └────────┘ └────────────┘ └────────────┘ └─────┬──────┘ │ │ │ │ │ ┌──────────────────┼──────────────────┐ │ │ ▼ ▼ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ │ 是:禁止 │ │ 否:允许 │ │ │ │ │ 进入房间 │ │ 进入观看 │ │ │ │ └──────────┘ └──────────┘ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 四、三大模块联动关系 ### 4.1 模块交互图 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ 三大模块联动关系 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ │ │ │ 敏感词管理 │ │ │ │ │ │ │ │ • 内容过滤规则 │ │ │ │ • 违规词库维护 │ │ │ └────────┬────────┘ │ │ │ │ │ ┌────────────┼────────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ 私聊消息 │ │ 粉丝团群聊 │ │ 直播间弹幕 │ │ │ │ │ │ │ │ │ │ │ │ • 发送前过滤敏感词 │ │ • 发送前过滤敏感词 │ │ • 发送前过滤敏感词 │ │ │ │ • 检查黑名单状态 │ │ • 检查成员状态 │ │ • 检查用户封禁 │ │ │ │ • 检查用户封禁 │ │ • 检查用户封禁 │ │ • 检查房间封禁 │ │ │ └──────────┬──────────┘ └──────────┬──────────┘ └──────────┬──────────┘ │ │ │ │ │ │ │ └────────────────────────┼────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────┐ │ │ │ 封禁系统 │ │ │ │ │ │ │ │ • 用户封禁管理 │ │ │ │ • 房间封禁管理 │ │ │ │ • 用户黑名单 │ │ │ │ • 房间黑名单 │ │ │ └─────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` ### 4.2 完整消息发送流程 ``` 用户发送消息 │ ▼ ┌────────────────┐ │ 1. 用户登录检查 │ ──── 检查 eb_user_ban 表 └───────┬────────┘ │ 通过 ▼ ┌────────────────┐ │ 2. 封禁状态检查 │ ──── 检查用户是否被平台封禁 └───────┬────────┘ │ 通过 ▼ ┌────────────────┐ │ 3. 黑名单检查 │ ──── 检查 eb_user_blacklist 表 └───────┬────────┘ (私聊场景) │ 通过 ▼ ┌────────────────┐ │ 4. 敏感词过滤 │ ──── 检查 eb_sensitive_word 表 └───────┬────────┘ │ 通过/替换 ▼ ┌────────────────┐ │ 5. 消息入库 │ ──── 保存到对应消息表 └───────┬────────┘ │ ▼ ┌────────────────┐ │ 6. 推送通知 │ ──── WebSocket/推送服务 └────────────────┘ ``` --- ## 五、代码实现位置汇总 ### 5.1 后端代码 | 模块 | 文件路径 | 说明 | |------|----------|------| | 敏感词管理 | `crmeb-admin/.../SensitiveWordController.java` | 管理端敏感词CRUD | | 私聊管理 | `crmeb-admin/.../ChatManagementController.java` | 管理端私聊管理 | | 私聊服务 | `crmeb-service/.../ConversationServiceImpl.java` | 私聊业务逻辑+黑名单检查 | | 粉丝团管理 | `crmeb-admin/.../FanGroupController.java` | 管理端粉丝团管理 | | 封禁管理 | `crmeb-admin/.../BanController.java` | 管理端封禁管理 | | 黑名单管理 | `crmeb-admin/.../BlacklistController.java` | 管理端黑名单管理 | | 移动端封禁 | `crmeb-front/.../BanFrontController.java` | 移动端封禁API | | 登录服务 | `crmeb-front/.../LoginServiceImpl.java` | 登录时封禁检查 | | 直播间控制 | `crmeb-front/.../LiveRoomController.java` | 弹幕/礼物封禁检查 | ### 5.2 前端代码 | 模块 | 文件路径 | 说明 | |------|----------|------| | 敏感词页面 | `admin/src/views/sensitiveWord/list/index.vue` | 敏感词管理页面 | | 敏感词API | `admin/src/api/sensitiveWord.js` | 敏感词API接口 | | 粉丝团页面 | `admin/src/views/fanGroup/list/index.vue` | 粉丝团管理页面 | | 粉丝团API | `admin/src/api/fanGroup.js` | 粉丝团API接口 | | 封禁页面 | `admin/src/views/ban/` | 封禁管理页面 | | 黑名单页面 | `admin/src/views/blacklist/` | 黑名单管理页面 | ### 5.3 Android代码 | 模块 | 文件路径 | 说明 | |------|----------|------| | API接口 | `ApiService.java` | 封禁/黑名单API定义 | | 直播间 | `RoomDetailActivity.java` | 进入房间封禁检查 | | 粉丝团聊天 | `GroupChatActivity.java` | 粉丝团群聊功能 | | 消息列表 | `MessagesActivity.java` | 消息列表页面 | --- ## 六、待完善功能建议 ### 6.1 敏感词模块 1. **实时过滤服务** - 目前敏感词表已建立,建议实现统一的敏感词过滤服务类 2. **分类管理** - 支持按分类(spam/illegal/abuse)管理敏感词 3. **批量导入** - 支持Excel/TXT批量导入敏感词 4. **过滤日志** - 记录敏感词触发日志,便于分析 ### 6.2 消息模块 1. **消息撤回通知** - 撤回消息时通知对方 2. **消息已读回执** - 显示消息已读状态 3. **群聊@功能** - 粉丝团群聊支持@成员 4. **消息搜索** - 支持历史消息搜索 ### 6.3 封禁模块 1. **封禁申诉** - 用户可提交封禁申诉 2. **自动解封** - 临时封禁到期自动解封定时任务 3. **封禁通知** - 封禁/解封时推送通知给用户 4. **封禁统计** - 封禁数据统计报表 --- ## 七、总结 本报告详细描述了直播平台三大核心模块的功能设计和交互逻辑: 1. **敏感词管理** - 提供内容安全过滤能力,保障平台内容合规 2. **消息/粉丝团/群组** - 构建完整的社交通讯体系,增强用户粘性 3. **封禁系统** - 提供多层次的用户管理能力,维护平台秩序 三大模块相互配合,形成完整的平台安全和社交体系。 --- *报告生成时间: 2026-01-05*