3.8 KiB
3.8 KiB
直播间分类功能修复说明
问题描述
- App首页的分类标签(推荐、直播、视频、音乐、游戏)是硬编码的,没有从后台数据库动态获取
- 频道管理对话框中的"我的频道"和"推荐频道"也是硬编码的
数据库分类数据
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筛选
工作流程
-
App启动时:
MainActivity.loadCategoriesFromBackend()调用/api/front/category/live接口- 后端从
eb_live_room_category表获取启用的分类列表 - App缓存分类数据到
allBackendCategories - App动态创建分类标签(推荐 + 后端返回的分类)
-
打开频道管理对话框时:
- "我的频道":从 SharedPreferences 加载用户已选择的频道,如果没有则使用默认值(推荐 + 前4个后端分类)
- "推荐频道":从
allBackendCategories中过滤出未添加到"我的频道"的分类
-
获取直播间列表时:
- 调用
/api/front/live/public/rooms接口 - 后端返回直播间数据,包含
categoryId和categoryName categoryName从eb_live_room_category表获取
- 调用
-
分类筛选时:
- 用户点击分类标签
- App根据
categoryName筛选直播间 - 如果直播间没有设置分类(
categoryName为空),则只在"推荐"标签下显示
部署步骤
-
编译后端:
cd Zhibo/zhibo-h mvn clean package -DskipTests -pl crmeb-front -am -
部署后端:
- 上传
crmeb-front.jar到服务器 - 重启后端服务
- 上传
-
编译Android:
cd android-app gradlew assembleDebug -
安装测试:
- 安装新的APK
- 检查分类标签是否显示为:推荐、娱乐、游戏、音乐、户外、聊天
- 点击展开箭头,检查频道管理对话框是否显示后端分类
注意事项
- 如果直播间没有设置
category_id,该直播间只会在"推荐"标签下显示 - 创建直播间时需要选择分类,分类ID会保存到
eb_live_room.category_id字段 - 后台管理可以在"直播管理 > 直播分类"中管理分类
- 新添加的分类会自动出现在"推荐频道"列表中