4.4 KiB
4.4 KiB
快速诊断关注页面问题
问题描述
关注页面看不到已关注的主播,即使主播存在并且有直播间。
诊断步骤
步骤1:检查数据库数据
执行以下SQL查看当前数据状态:
mysql -u root -p zhibo < diagnose_current_follow_issue.sql
重点检查:
- 关注记录是否存在
- follow_status 字段的值(应该是 '1')
- 主播的 is_streamer 字段是否为 1
- 直播间是否存在
步骤2:检查Android端日志
在Android Studio的Logcat中搜索以下关键词:
fetchFollowedStreamersRooms获取到关注列表筛选后的直播间数量
查看日志输出:
获取到关注列表,数量: X
所有直播间数量: Y
筛选后的直播间数量: Z
步骤3:检查API返回数据
检查关注列表API
curl -X GET "http://your-server/api/front/follow/following?page=1&pageSize=10" \
-H "Authorization: Bearer YOUR_TOKEN"
期望返回格式:
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"uid": 41,
"nickname": "夏至已至",
"avatar": "...",
...
}
],
"total": 1
}
}
关键检查点:返回的用户对象中是否包含 uid 字段
检查直播间列表API
curl -X GET "http://your-server/api/front/live/public/rooms" \
-H "Authorization: Bearer YOUR_TOKEN"
期望返回格式:
{
"code": 200,
"message": "success",
"data": [
{
"id": 8,
"uid": 41,
"title": "火影忍者",
"isLive": 1,
...
}
]
}
关键检查点:直播间对象中是否包含 uid 字段
可能的问题原因
原因1:关注列表API返回的字段名不对
Android端代码期望:
Object uidObj = user.get("uid");
如果后端返回的是 followed_id 而不是 uid,就会匹配失败。
解决方案:修改后端FollowRecordServiceImpl,确保返回的Map中包含 uid 字段。
原因2:数据库中的关注状态值不对
如果 follow_status 不是 '1',查询会失败。
解决方案:执行修复脚本
mysql -u root -p zhibo < final_fix_follow_issue.sql
原因3:主播的is_streamer字段不对
如果用户的 is_streamer 不是 1,即使有直播间也不会被识别为主播。
解决方案:
UPDATE eb_user SET is_streamer = 1 WHERE uid = 41;
原因4:直播间的uid字段为空
如果直播间记录中的 uid 字段为空,无法匹配到主播。
解决方案:
UPDATE eb_live_room SET uid = 41 WHERE id = 8 AND uid IS NULL;
快速修复方案
方案A:修复后端返回数据(推荐)
修改 FollowRecordServiceImpl.java 中的 getFollowingList 方法,确保返回的Map包含正确的字段:
// 在构建返回Map时,确保包含uid字段
map.put("uid", followRecord.getFollowedId()); // 添加这一行
map.put("nickname", followRecord.getFollowedNickname());
map.put("avatar", user.getAvatar());
// ... 其他字段
方案B:修复Android端代码
如果后端返回的是 followed_id,修改Android端代码:
// 修改 MainActivity.java 中的代码
Object uidObj = user.get("uid"); // 原代码
// 改为
Object uidObj = user.get("followed_id"); // 或者后端实际返回的字段名
方案C:修复数据库数据
-- 1. 修复关注状态
UPDATE eb_follow_record SET follow_status = '1' WHERE follow_status = '关注';
-- 2. 确保主播标识正确
UPDATE eb_user SET is_streamer = 1 WHERE uid IN (
SELECT DISTINCT uid FROM eb_live_room
);
-- 3. 修复直播间的主播关联
UPDATE eb_live_room lr
INNER JOIN eb_user u ON lr.uid = u.uid
SET u.is_streamer = 1
WHERE lr.uid IS NOT NULL;
立即执行
-
先诊断:
mysql -u root -p zhibo < diagnose_current_follow_issue.sql -
查看Android日志:
- 打开Android Studio
- 运行应用
- 登录用户43
- 点击"关注"标签
- 查看Logcat输出
-
根据诊断结果选择修复方案
预期结果
修复后,Android端日志应该显示:
获取到关注列表,数量: 1
关注的用户ID: 41, 昵称: 夏至已至
所有直播间数量: X
直播间: 火影忍者, uid=41, isLive=true, 是否匹配=true
匹配成功!添加直播间: 火影忍者
筛选后的直播间数量: 1
关注页面应该显示用户41的直播间"火影忍者"。