zhibo/后台主播统计数据修复指南.md

173 lines
5.3 KiB
Markdown
Raw Normal View History

2026-01-03 17:01:58 +08:00
# 后台主播统计数据修复指南
## 问题描述
后台管理页面的主播列表中粉丝数、直播间数、被点赞数等统计数据显示为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
<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
```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`