5.3 KiB
5.3 KiB
后台主播统计数据修复指南
问题描述
后台管理页面的主播列表中,粉丝数、直播间数、被点赞数等统计数据显示为0,但APP端能正确显示这些数据。
问题原因
- 后端代码已经修改,添加了获取统计数据的SQL查询
- 前端页面也已经修改,将"被关注数"改为"被点赞数"
- 但是后端服务可能没有重新编译部署,导致修改没有生效
修复步骤
步骤1:验证数据库中的数据
运行诊断SQL脚本,确认数据库中确实有数据:
mysql -h 1.15.149.240 -u root -p zhibo < diagnose_streamer_stats_detail.sql
这个脚本会显示:
- 所有主播的基本信息
- 每个主播的粉丝数详情
- 每个主播的直播间数量
- 每个主播的总点赞数
- 完整的统计汇总
步骤2:重新编译和部署后端服务
方法1:使用自动部署脚本(推荐)
deploy-backend-streamer-fix.bat
这个脚本会自动:
- 编译后端项目
- 停止后端服务
- 上传新的jar包
- 启动后端服务
方法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:验证修复结果
- 等待30秒让服务完全启动
- 刷新后台管理页面(Ctrl+F5 强制刷新)
- 查看主播列表,确认统计数据正确显示
代码修改说明
后端修改(StreamerAdminController.java)
在主播列表查询的SQL中添加了总点赞数的统计:
sql.append("(SELECT COALESCE(SUM(r.like_count), 0) FROM eb_live_room r WHERE r.uid = u.uid) as totalLikeCount, ");
这个查询会:
- 查找主播的所有直播间
- 对所有直播间的like_count字段求和
- 如果没有直播间或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: 检查以下几点:
- 确认后端服务已经重启:
ssh root@1.15.149.240 "docker ps | grep crmeb-admin" - 查看后端日志:
ssh root@1.15.149.240 "docker logs crmeb-admin" - 清除浏览器缓存,强制刷新页面(Ctrl+Shift+Delete)
- 运行诊断SQL确认数据库中有数据
Q2: 编译失败
A: 检查以下几点:
- 确认Maven已安装:
mvn -version - 确认Java版本正确:
java -version(需要Java 8或以上) - 清理Maven缓存:
mvn clean
Q3: 上传jar包失败
A: 检查以下几点:
- 确认SSH连接正常:
ssh root@1.15.149.240 - 确认jar包已生成:检查
Zhibo/zhibo-h/crmeb-admin/target/crmeb-admin.jar是否存在 - 手动上传:使用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