zhibo/后台主播统计数据修复指南.md
2026-01-03 17:01:58 +08:00

5.3 KiB
Raw Blame History

后台主播统计数据修复指南

问题描述

后台管理页面的主播列表中粉丝数、直播间数、被点赞数等统计数据显示为0但APP端能正确显示这些数据。

问题原因

  1. 后端代码已经修改添加了获取统计数据的SQL查询
  2. 前端页面也已经修改,将"被关注数"改为"被点赞数"
  3. 但是后端服务可能没有重新编译部署,导致修改没有生效

修复步骤

步骤1验证数据库中的数据

运行诊断SQL脚本确认数据库中确实有数据

mysql -h 1.15.149.240 -u root -p zhibo < diagnose_streamer_stats_detail.sql

这个脚本会显示:

  • 所有主播的基本信息
  • 每个主播的粉丝数详情
  • 每个主播的直播间数量
  • 每个主播的总点赞数
  • 完整的统计汇总

步骤2重新编译和部署后端服务

方法1使用自动部署脚本推荐

deploy-backend-streamer-fix.bat

这个脚本会自动:

  1. 编译后端项目
  2. 停止后端服务
  3. 上传新的jar包
  4. 启动后端服务

方法2手动部署

# 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中添加了总点赞数的统计

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

将"被关注数"列改为"被点赞数"列:

<el-table-column label="被点赞数" width="100" align="center">
  <template slot-scope="{row}"><span class="like-count">{{ row.totalLikeCount || 0 }}</span></template>
</el-table-column>

数据对齐说明

APP端数据来源

APP端调用的是 /api/front/streamer/stats 接口使用以下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逻辑

-- 粉丝数
(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
  • 前端APIZhibo/admin/src/api/streamer.js
  • 诊断SQLdiagnose_streamer_stats_detail.sql
  • 部署脚本:deploy-backend-streamer-fix.bat