5.5 KiB
5.5 KiB
关注功能调试指南
第一步:检查数据库
1.1 连接数据库
mysql -h 1.15.149.240 -u root -p
use crmeb;
1.2 执行诊断脚本
source diagnose_follow_issue.sql;
1.3 检查关键点
eb_follow_record表是否存在?- 表结构是否正确?
- 是否有测试数据?
如果表不存在,执行:
source migrate_follow_data.sql;
第二步:查看Android日志
2.1 连接设备并查看日志
adb logcat | grep -i "RoomDetail\|follow"
2.2 关键日志
查找以下日志:
关注主播: streamerId=xxx, roomId=xxx- 确认发送的用户ID关注响应: code=xxx, message=xxx- 查看服务器响应房间信息加载成功: streamerId=xxx, isFollowing=xxx- 确认房间信息
第三步:检查后端日志
3.1 查看后端日志
ssh root@1.15.149.240
cd /root/zhibo/Zhibo/zhibo-h
tail -f crmeb-admin/logs/info.log | grep -i follow
3.2 查看错误日志
tail -f crmeb-admin/logs/error.log
第四步:手动测试API
4.1 获取token
# 登录获取token
curl -X POST http://1.15.149.240:30001/api/front/login \
-H "Content-Type: application/json" \
-d '{
"phone": "你的手机号",
"password": "你的密码"
}'
4.2 测试关注接口
# 替换 YOUR_TOKEN 和 STREAMER_ID
curl -X POST http://1.15.149.240:30001/api/front/follow/follow \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"userId": STREAMER_ID
}'
4.3 测试获取房间信息
curl -X GET http://1.15.149.240:30001/api/front/live/public/rooms/ROOM_ID \
-H "Authorization: Bearer YOUR_TOKEN"
第五步:常见问题排查
问题1:表不存在
症状: 后端日志显示 Table 'crmeb.eb_follow_record' doesn't exist
解决:
source migrate_follow_data.sql;
问题2:streamerId为null
症状: Android日志显示 streamerId is null
原因: 房间信息中没有streamerId字段
检查:
SELECT id, uid, title, streamer_name FROM eb_live_room LIMIT 5;
解决: 确保LiveRoomController的toResponse方法设置了streamerId:
resp.setStreamerId(room.getUid());
问题3:接口404
症状: Android日志显示 response code=404
原因: API路径不正确
检查:
- Android:
ApiService.followUser使用/api/front/follow/follow - 后端:
FollowController的@PostMapping("/follow")
问题4:401未授权
症状: 返回401错误
原因: Token过期或无效
解决: 重新登录获取新token
问题5:关注成功但状态不保存
症状: 点击关注提示成功,但退出重进还是未关注
检查数据库:
-- 查看是否有记录
SELECT * FROM eb_follow_record
WHERE follower_id = YOUR_USER_ID
AND followed_id = STREAMER_ID
ORDER BY create_time DESC;
-- 检查状态
SELECT
follower_id,
followed_id,
follow_status,
is_deleted,
create_time
FROM eb_follow_record
WHERE follower_id = YOUR_USER_ID
ORDER BY create_time DESC
LIMIT 10;
第六步:完整测试流程
6.1 准备测试数据
-- 查看可用的用户和主播
SELECT uid, nickname, phone, is_streamer
FROM eb_user
WHERE is_streamer = 1
LIMIT 5;
-- 查看可用的直播间
SELECT id, uid, title, streamer_name
FROM eb_live_room
LIMIT 5;
6.2 记录测试信息
- 测试用户ID: ________
- 主播用户ID: ________
- 直播间ID: ________
6.3 执行测试
- 登录应用(使用测试用户)
- 进入直播间(记录的直播间ID)
- 查看Android日志,记录:
- roomId: ________
- streamerId: ________
- 点击关注按钮
- 查看提示信息: ________
- 查看Android日志中的响应
- 查看数据库记录:
SELECT * FROM eb_follow_record
WHERE follower_id = 测试用户ID
AND followed_id = 主播用户ID;
6.4 验证结果
- 数据库中有记录
- follow_status = 1
- is_deleted = 0
- 退出重进后按钮显示"已关注"
第七步:如果还是不行
收集以下信息:
- 数据库检查结果
-- 执行并提供结果
SELECT * FROM information_schema.tables
WHERE table_schema = 'crmeb'
AND table_name IN ('eb_follow_record', 'eb_user_follow');
- Android日志
提供 adb logcat 中关于 RoomDetail 和 follow 的日志
- 后端日志
提供 /root/zhibo/Zhibo/zhibo-h/crmeb-admin/logs/info.log 中的相关日志
- API测试结果
提供 curl 测试的完整响应
- 数据库记录
-- 执行并提供结果
SELECT * FROM eb_follow_record
WHERE create_time > DATE_SUB(NOW(), INTERVAL 1 HOUR)
ORDER BY create_time DESC;
快速检查清单
- 数据库中
eb_follow_record表已创建 - 后端服务已重启
- Android应用已重新编译
- 用户已登录
- 进入的是有效的直播间
- 直播间的主播用户存在
- Android日志中能看到 streamerId
- 网络连接正常
- API接口路径正确
- Token有效
紧急修复方案
如果以上都不行,可以尝试简化方案:
方案A:使用 eb_user_follow 表
修改 FollowRecord 类的表名:
@TableName("eb_user_follow") // 改为使用现有表
并修改字段映射:
@TableField("user_id")
private Integer followerId;
@TableField("follow_user_id")
private Integer followedId;
方案B:直接使用JDBC
在 FollowRecordServiceImpl 中使用 JdbcTemplate 直接操作数据库,绕过MyBatis。