# 封禁系统功能说明 ## 功能概述 封禁系统提供用户封禁、房间封禁和黑名单管理功能,支持管理后台和移动端双端实时同步。 ## 功能模块 ### 1. 用户封禁(管理员功能) 管理员可以对违规用户进行封禁处理: - **永久封禁**:用户账号永久禁用,无法登录 - **临时封禁**:设置封禁天数,到期自动解除 - **解除封禁**:手动解除用户封禁状态 - **封禁原因**:记录封禁原因,便于追溯 **封禁影响**: - 被封禁用户无法登录 - 被封禁用户无法发送弹幕 - 被封禁用户无法赠送礼物 - 被封禁用户无法发送私信 **API接口**: - `GET /api/admin/ban/user/list` - 获取用户封禁列表 - `POST /api/admin/ban/user/add` - 封禁用户 - `POST /api/admin/ban/user/unban/{id}` - 解除封禁 - `POST /api/admin/ban/user/delete/{id}` - 删除记录 - `GET /api/admin/ban/user/check/{userId}` - 检查封禁状态 ### 2. 房间封禁(管理员功能) 管理员可以对违规直播间进行封禁处理: - **永久封禁**:直播间永久关闭 - **临时封禁**:设置封禁天数,到期自动解除 - **解除封禁**:手动解除房间封禁状态 - **封禁原因**:记录封禁原因 **封禁影响**: - 被封禁房间无法进入 - 进入时显示封禁提示 **API接口**: - `GET /api/admin/ban/room/list` - 获取房间封禁列表 - `POST /api/admin/ban/room/add` - 封禁房间 - `POST /api/admin/ban/room/unban/{id}` - 解除封禁 - `POST /api/admin/ban/room/delete/{id}` - 删除记录 - `GET /api/admin/ban/room/check/{roomId}` - 检查封禁状态 ### 3. 用户黑名单(用户功能) 用户可以将其他用户加入黑名单: - **添加黑名单**:屏蔽指定用户 - **移除黑名单**:解除屏蔽 - **黑名单列表**:查看已屏蔽的用户 - **互动限制**:被拉黑用户无法发送消息、评论等 **黑名单影响**: - 双方无法发送私信 - 双方无法创建会话 - 拉黑时自动删除好友关系 **移动端API接口**: - `GET /api/front/ban/check/me` - 检查当前用户封禁状态 - `GET /api/front/ban/check/user/{userId}` - 检查指定用户封禁状态 - `GET /api/front/ban/check/room/{roomId}` - 检查房间封禁状态 - `GET /api/front/ban/blacklist/list` - 获取我的黑名单 - `POST /api/front/ban/blacklist/add` - 添加到黑名单 - `POST /api/front/ban/blacklist/remove` - 从黑名单移除 - `GET /api/front/ban/blacklist/check/{targetUserId}` - 检查黑名单状态 ## 数据库表结构 ### eb_user_ban(用户封禁表) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | 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 | 状态:1-生效,0-已解除 | ### eb_room_ban(房间封禁表) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | room_id | int | 被封禁房间ID | | ban_type | varchar(20) | 封禁类型 | | reason | varchar(500) | 封禁原因 | | duration_days | int | 封禁天数 | | expire_time | datetime | 到期时间 | | operator_id | int | 操作人ID | | status | tinyint | 状态 | ### eb_user_blacklist(用户黑名单表) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | user_id | int | 用户ID(发起拉黑) | | blocked_user_id | int | 被拉黑用户ID | | blocker_nickname | varchar(100) | 拉黑者昵称 | | blocked_nickname | varchar(100) | 被拉黑者昵称 | | create_time | datetime | 创建时间 | ### eb_room_blacklist(房间黑名单表) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | room_id | int | 房间ID | | room_name | varchar(200) | 房间名称 | | blocked_user_id | int | 被拉黑用户ID | | blocked_user_nickname | varchar(100) | 被拉黑用户昵称 | | reason | varchar(500) | 拉黑原因 | | create_time | datetime | 创建时间 | ## 封禁检查点 ### 后端检查点 1. **登录时** - LoginServiceImpl.login() / phoneLogin() 2. **发送弹幕时** - LiveRoomController.sendMessage() 3. **赠送礼物时** - LiveRoomController.sendGift() 4. **发送私信时** - ConversationServiceImpl.sendMessage() 5. **创建会话时** - ConversationServiceImpl.getOrCreateConversation() 6. **开播时** - LiveRoomController.create() ### 移动端检查点 1. **进入直播间时** - RoomDetailActivity.checkRoomBanStatus() 2. **用户主页拉黑** - UserProfileActivity.addToBlacklist() 3. **设置页黑名单管理** - BlacklistActivity ## 双端同步机制 1. **管理后台封禁用户** → 用户状态更新 → 移动端登录时检测到封禁状态 → 显示封禁提示,阻止登录 2. **管理后台封禁房间** → 房间状态更新 → 移动端进入房间时检测到封禁状态 → 显示封禁提示,退出房间 3. **移动端添加黑名单** → 数据库更新 → 管理后台可查看黑名单记录 4. **管理后台解除封禁** → 用户/房间状态恢复 → 移动端可正常使用 ## 文件清单 ### 后端文件 - `Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/BanController.java` - 管理后台封禁控制器 - `Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/BanFrontController.java` - 移动端封禁控制器 - `Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/BlacklistController.java` - 管理后台黑名单控制器 - `Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/service/impl/LoginServiceImpl.java` - 登录服务(含封禁检查) - `Zhibo/zhibo-h/crmeb-service/src/main/java/com/zbkj/service/service/impl/ConversationServiceImpl.java` - 会话服务(含黑名单检查) - `Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java` - 直播间控制器(含封禁检查) ### 管理后台前端文件 - `Zhibo/admin/src/views/ban/userBan.vue` - 用户封禁管理页面 - `Zhibo/admin/src/views/ban/roomBan.vue` - 房间封禁管理页面 - `Zhibo/admin/src/views/blacklist/user.vue` - 用户黑名单页面 - `Zhibo/admin/src/views/blacklist/room.vue` - 房间黑名单页面 - `Zhibo/admin/src/api/ban.js` - 封禁API - `Zhibo/admin/src/api/blacklist.js` - 黑名单API ### Android文件 - `android-app/app/src/main/java/com/example/livestreaming/BlacklistActivity.java` - 黑名单管理页面 - `android-app/app/src/main/java/com/example/livestreaming/UserProfileActivity.java` - 用户主页(含拉黑功能) - `android-app/app/src/main/java/com/example/livestreaming/RoomDetailActivity.java` - 直播间详情(含房间封禁检查) - `android-app/app/src/main/java/com/example/livestreaming/net/ApiService.java` - API接口定义 ### SQL脚本 - `ban_system_tables.sql` - 创建数据库表 - `add_ban_menus.sql` - 添加菜单配置 ## 部署步骤 1. **执行数据库脚本** ```bash mysql -u root -p zhibo < ban_system_tables.sql mysql -u root -p zhibo < add_ban_menus.sql ``` 2. **部署后端** ```bash deploy_ban_system.bat ``` 3. **部署管理后台前端** - 重新编译部署前端 4. **编译Android App** - 重新编译APK