zhibo/直播间分类功能修复说明.md
2026-01-04 17:07:07 +08:00

3.8 KiB
Raw Blame History

直播间分类功能修复说明

问题描述

  1. App首页的分类标签推荐、直播、视频、音乐、游戏是硬编码的没有从后台数据库动态获取
  2. 频道管理对话框中的"我的频道"和"推荐频道"也是硬编码的

数据库分类数据

SELECT * FROM eb_live_room_category ORDER BY sort;
-- 结果:
-- id=1, name=娱乐, icon=el-icon-video-camera, sort=1
-- id=2, name=游戏, icon=el-icon-coordinate, sort=2
-- id=3, name=音乐, icon=el-icon-headset, sort=3
-- id=4, name=户外, icon=el-icon-location, sort=4
-- id=5, name=聊天, icon=el-icon-chat-dot-round, sort=5

修改内容

1. 后端 CategoryController

文件: Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/CategoryController.java

修改:

  • 注入 LiveRoomCategoryService
  • 修改 /api/front/category/live 接口,从 eb_live_room_category 表获取分类
  • 添加兼容旧接口 /api/front/category/live-room

2. 后端 LiveRoomController

文件: Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/LiveRoomController.java

修改:

  • 注入 LiveRoomCategoryService
  • 修改 toResponse 方法,从 eb_live_room_category 表获取分类名称设置到 categoryName 字段

3. Android MainActivity

文件: android-app/app/src/main/java/com/example/livestreaming/MainActivity.java

修改:

  • 添加 allBackendCategories 成员变量缓存后端分类数据
  • updateCategoryTabs 方法:缓存后端分类数据
  • loadMyChannels 方法:使用后端分类作为默认频道(推荐 + 前4个后端分类
  • loadRecommendChannels 方法:从后端分类中过滤出未添加的频道
  • applyCategoryFilterSync 方法:优先使用 categoryName 筛选

4. Android CategoryFilterManager

文件: android-app/app/src/main/java/com/example/livestreaming/CategoryFilterManager.java

修改:

  • filterRoomsSync 方法:优先使用 categoryName 筛选

工作流程

  1. App启动时:

    • MainActivity.loadCategoriesFromBackend() 调用 /api/front/category/live 接口
    • 后端从 eb_live_room_category 表获取启用的分类列表
    • App缓存分类数据到 allBackendCategories
    • App动态创建分类标签推荐 + 后端返回的分类)
  2. 打开频道管理对话框时:

    • "我的频道":从 SharedPreferences 加载用户已选择的频道,如果没有则使用默认值(推荐 + 前4个后端分类
    • "推荐频道":从 allBackendCategories 中过滤出未添加到"我的频道"的分类
  3. 获取直播间列表时:

    • 调用 /api/front/live/public/rooms 接口
    • 后端返回直播间数据,包含 categoryIdcategoryName
    • categoryNameeb_live_room_category 表获取
  4. 分类筛选时:

    • 用户点击分类标签
    • App根据 categoryName 筛选直播间
    • 如果直播间没有设置分类(categoryName 为空),则只在"推荐"标签下显示

部署步骤

  1. 编译后端:

    cd Zhibo/zhibo-h
    mvn clean package -DskipTests -pl crmeb-front -am
    
  2. 部署后端:

    • 上传 crmeb-front.jar 到服务器
    • 重启后端服务
  3. 编译Android:

    cd android-app
    gradlew assembleDebug
    
  4. 安装测试:

    • 安装新的APK
    • 检查分类标签是否显示为:推荐、娱乐、游戏、音乐、户外、聊天
    • 点击展开箭头,检查频道管理对话框是否显示后端分类

注意事项

  • 如果直播间没有设置 category_id,该直播间只会在"推荐"标签下显示
  • 创建直播间时需要选择分类分类ID会保存到 eb_live_room.category_id 字段
  • 后台管理可以在"直播管理 > 直播分类"中管理分类
  • 新添加的分类会自动出现在"推荐频道"列表中