# 后台主播统计数据修复指南 ## 问题描述 后台管理页面的主播列表中,粉丝数、直播间数、被点赞数等统计数据显示为0,但APP端能正确显示这些数据。 ## 问题原因 1. 后端代码已经修改,添加了获取统计数据的SQL查询 2. 前端页面也已经修改,将"被关注数"改为"被点赞数" 3. 但是后端服务可能没有重新编译部署,导致修改没有生效 ## 修复步骤 ### 步骤1:验证数据库中的数据 运行诊断SQL脚本,确认数据库中确实有数据: ```bash mysql -h 1.15.149.240 -u root -p zhibo < diagnose_streamer_stats_detail.sql ``` 这个脚本会显示: - 所有主播的基本信息 - 每个主播的粉丝数详情 - 每个主播的直播间数量 - 每个主播的总点赞数 - 完整的统计汇总 ### 步骤2:重新编译和部署后端服务 #### 方法1:使用自动部署脚本(推荐) ```bash deploy-backend-streamer-fix.bat ``` 这个脚本会自动: 1. 编译后端项目 2. 停止后端服务 3. 上传新的jar包 4. 启动后端服务 #### 方法2:手动部署 ```bash # 1. 编译后端 cd Zhibo/zhibo-h mvn clean package -DskipTests # 2. 停止服务 ssh root@1.15.149.240 "cd /root/zhibo && docker-compose stop crmeb-admin" # 3. 上传jar包 scp crmeb-admin/target/crmeb-admin.jar root@1.15.149.240:/root/zhibo/ # 4. 启动服务 ssh root@1.15.149.240 "cd /root/zhibo && docker-compose up -d crmeb-admin" ``` ### 步骤3:验证修复结果 1. 等待30秒让服务完全启动 2. 刷新后台管理页面(Ctrl+F5 强制刷新) 3. 查看主播列表,确认统计数据正确显示 ## 代码修改说明 ### 后端修改(StreamerAdminController.java) 在主播列表查询的SQL中添加了总点赞数的统计: ```java sql.append("(SELECT COALESCE(SUM(r.like_count), 0) FROM eb_live_room r WHERE r.uid = u.uid) as totalLikeCount, "); ``` 这个查询会: 1. 查找主播的所有直播间 2. 对所有直播间的like_count字段求和 3. 如果没有直播间或like_count为NULL,返回0 ### 前端修改(streamer/list/index.vue) 将"被关注数"列改为"被点赞数"列: ```vue ``` ## 数据对齐说明 ### APP端数据来源 APP端调用的是 `/api/front/streamer/stats` 接口,使用以下SQL: ```sql -- 粉丝数 SELECT COUNT(*) FROM eb_follow_record WHERE followed_id = ? AND follow_status IN ('1', '关注') AND is_deleted = 0 -- 点赞数 SELECT COALESCE(SUM(like_count), 0) FROM eb_live_room WHERE uid = ? ``` ### 后台管理端数据来源 后台管理端调用的是 `/api/admin/streamer/list` 接口,使用相同的SQL逻辑: ```sql -- 粉丝数 (SELECT COUNT(*) FROM eb_follow_record f WHERE f.followed_id = u.uid AND f.follow_status IN ('1', '关注') AND f.is_deleted = 0) as fansCount -- 点赞数 (SELECT COALESCE(SUM(r.like_count), 0) FROM eb_live_room r WHERE r.uid = u.uid) as totalLikeCount ``` 两端使用完全相同的SQL逻辑,确保数据一致性。 ## 显示字段说明 后台管理页面显示的字段: | 字段名 | 说明 | 数据来源 | |--------|------|----------| | 主播信息 | 头像、昵称、ID | eb_user表 | | 主播等级 | 1-初级, 2-中级, 3-高级, 4-金牌 | eb_user.streamer_level | | 粉丝数 | 有多少人关注了这个主播 | eb_follow_record表统计 | | 直播间数 | 主播创建的直播间总数 | eb_live_room表统计 | | 被点赞数 | 主播所有直播间的点赞数总和 | eb_live_room.like_count求和 | | 本月直播 | 本月创建的直播间数量 | eb_live_room表按月统计 | | 认证时间 | 成为主播的时间 | eb_user.streamer_certified_time | | 状态 | 正常/封禁 | eb_streamer_ban表判断 | ## 常见问题 ### Q1: 部署后数据还是显示0 **A:** 检查以下几点: 1. 确认后端服务已经重启:`ssh root@1.15.149.240 "docker ps | grep crmeb-admin"` 2. 查看后端日志:`ssh root@1.15.149.240 "docker logs crmeb-admin"` 3. 清除浏览器缓存,强制刷新页面(Ctrl+Shift+Delete) 4. 运行诊断SQL确认数据库中有数据 ### Q2: 编译失败 **A:** 检查以下几点: 1. 确认Maven已安装:`mvn -version` 2. 确认Java版本正确:`java -version`(需要Java 8或以上) 3. 清理Maven缓存:`mvn clean` ### Q3: 上传jar包失败 **A:** 检查以下几点: 1. 确认SSH连接正常:`ssh root@1.15.149.240` 2. 确认jar包已生成:检查 `Zhibo/zhibo-h/crmeb-admin/target/crmeb-admin.jar` 是否存在 3. 手动上传:使用FTP工具上传jar包到服务器 ## 验证清单 部署完成后,请验证以下内容: - [ ] 后台管理页面能正常访问 - [ ] 主播列表能正常加载 - [ ] 粉丝数显示正确(与APP端一致) - [ ] 直播间数显示正确 - [ ] 被点赞数显示正确(与APP端一致) - [ ] 本月直播次数显示正确 - [ ] 其他功能正常(搜索、分页、封禁等) ## 相关文件 - 后端控制器:`Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/StreamerAdminController.java` - 前端页面:`Zhibo/admin/src/views/streamer/list/index.vue` - 前端API:`Zhibo/admin/src/api/streamer.js` - 诊断SQL:`diagnose_streamer_stats_detail.sql` - 部署脚本:`deploy-backend-streamer-fix.bat`