zhibo/封禁系统功能说明.md
2026-01-05 16:58:39 +08:00

189 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 封禁系统功能说明
## 功能概述
封禁系统提供用户封禁、房间封禁和黑名单管理功能,支持管理后台和移动端双端实时同步。
## 功能模块
### 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