7.2 KiB
7.2 KiB
封禁系统功能说明
功能概述
封禁系统提供用户封禁、房间封禁和黑名单管理功能,支持管理后台和移动端双端实时同步。
功能模块
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 | 创建时间 |
封禁检查点
后端检查点
- 登录时 - LoginServiceImpl.login() / phoneLogin()
- 发送弹幕时 - LiveRoomController.sendMessage()
- 赠送礼物时 - LiveRoomController.sendGift()
- 发送私信时 - ConversationServiceImpl.sendMessage()
- 创建会话时 - ConversationServiceImpl.getOrCreateConversation()
- 开播时 - LiveRoomController.create()
移动端检查点
- 进入直播间时 - RoomDetailActivity.checkRoomBanStatus()
- 用户主页拉黑 - UserProfileActivity.addToBlacklist()
- 设置页黑名单管理 - BlacklistActivity
双端同步机制
- 管理后台封禁用户 → 用户状态更新 → 移动端登录时检测到封禁状态 → 显示封禁提示,阻止登录
- 管理后台封禁房间 → 房间状态更新 → 移动端进入房间时检测到封禁状态 → 显示封禁提示,退出房间
- 移动端添加黑名单 → 数据库更新 → 管理后台可查看黑名单记录
- 管理后台解除封禁 → 用户/房间状态恢复 → 移动端可正常使用
文件清单
后端文件
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- 封禁APIZhibo/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- 添加菜单配置
部署步骤
-
执行数据库脚本
mysql -u root -p zhibo < ban_system_tables.sql mysql -u root -p zhibo < add_ban_menus.sql -
部署后端
deploy_ban_system.bat -
部署管理后台前端
- 重新编译部署前端
-
编译Android App
- 重新编译APK