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

7.2 KiB
Raw Blame History

封禁系统功能说明

功能概述

封禁系统提供用户封禁、房间封禁和黑名单管理功能,支持管理后台和移动端双端实时同步。

功能模块

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. 执行数据库脚本

    mysql -u root -p zhibo < ban_system_tables.sql
    mysql -u root -p zhibo < add_ban_menus.sql
    
  2. 部署后端

    deploy_ban_system.bat
    
  3. 部署管理后台前端

    • 重新编译部署前端
  4. 编译Android App

    • 重新编译APK