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

173 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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