7.0 KiB
观看历史功能 - zhibo-h后台实现说明
📌 重要说明
zhibo-h后台项目已经实现了完整的观看历史功能!
不需要在 live-streaming 项目中实现,所有功能都在 Zhibo/zhibo-h 项目中。
✅ 已实现的功能
后台实现(zhibo-h项目)
1. UserActivityRecordController
位置: Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/UserActivityRecordController.java
API路由: /api/front/activity
功能列表:
| 功能 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 记录观看历史 | POST | /activity/view/record |
记录用户观看直播间/作品 |
| 获取观看历史 | GET | /activity/view/history |
分页获取观看历史列表 |
| 删除单条历史 | DELETE | /activity/view/history/{historyId} |
删除指定的观看历史 |
| 清空观看历史 | DELETE | /activity/view/history |
清空用户的观看历史 |
| 获取点赞记录 | GET | /activity/like/records |
获取点赞记录列表 |
| 获取关注记录 | GET | /activity/follow/records |
获取关注记录列表 |
| 获取收藏记录 | GET | /activity/collect/works |
获取收藏的作品列表 |
| Token调试 | GET | /activity/debug/token |
调试Token状态 |
2. WatchHistoryController(备用)
位置: Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/WatchHistoryController.java
API路由: /api/front/watch
🔧 Android端需要调整的地方
当前问题
Android端的 RoomDetailActivity.java 中调用的API路径是:
POST /api/front/activity/record-view
但是zhibo-h后台的实际路径是:
POST /api/front/activity/view/record
解决方案
方案1:修改Android端API调用(推荐)
修改 android-app/app/src/main/java/com/example/livestreaming/net/ApiService.java:
// 当前(错误)
@POST("api/front/activity/record-view")
Call<ApiResponse<Map<String, Object>>> recordViewHistoryNew(@Body Map<String, Object> body);
// 修改为(正确)
@POST("api/front/activity/view/record")
Call<ApiResponse<Map<String, Object>>> recordViewHistoryNew(@Body Map<String, Object> body);
同时修改获取观看历史的API:
// 当前(错误)
@GET("api/front/activity/view-history")
Call<ApiResponse<PageResponse<Map<String, Object>>>> getViewHistory(
@Query("type") String type,
@Query("page") int page,
@Query("pageSize") int pageSize);
// 修改为(正确)
@GET("api/front/activity/view/history")
Call<ApiResponse<PageResponse<Map<String, Object>>>> getViewHistory(
@Query("targetType") String targetType, // 参数名改为targetType
@Query("page") int page,
@Query("pageSize") int pageSize);
方案2:在后台添加兼容路由(不推荐)
在 UserActivityRecordController 中添加兼容的路由映射,但这会增加维护成本。
📊 API接口详细说明
1. 记录观看历史
请求:
POST /api/front/activity/view/record
Content-Type: application/json
Authorization: Bearer {token}
{
"targetType": "room", // 类型:room-直播间, work-作品, profile-用户主页
"targetId": "room-123", // 目标ID
"targetTitle": "精彩直播间", // 标题
"duration": 120 // 观看时长(秒)
}
响应:
{
"code": 200,
"message": "success",
"data": {
"success": true,
"message": "记录成功"
}
}
2. 获取观看历史
请求:
GET /api/front/activity/view/history?targetType=room&page=1&pageSize=20
Authorization: Bearer {token}
响应:
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"userId": 43,
"targetType": "room",
"targetId": "8",
"targetTitle": "火影忍者",
"createTime": "2026-01-05 10:00:00",
"updateTime": "2026-01-05 10:30:00"
}
],
"total": 10,
"pageNum": 1,
"pageSize": 20
}
}
3. 清空观看历史
请求:
DELETE /api/front/activity/view/history?targetType=room
Authorization: Bearer {token}
响应:
{
"code": 200,
"message": "清空成功",
"data": null
}
🗄️ 数据库表结构
观看历史数据存储在数据库表中(不是JSON文件):
表名: eb_user_activity_record 或 eb_watch_history
字段:
id- 主键user_id- 用户IDtarget_type- 目标类型(room/work/profile)target_id- 目标IDtarget_title- 目标标题duration- 观看时长create_time- 创建时间update_time- 更新时间
✅ 优势
使用zhibo-h后台的优势:
- 统一管理: 所有用户数据都在同一个数据库中
- 完整功能: 不仅有观看历史,还有点赞、关注、收藏等记录
- 数据持久化: 使用MySQL数据库,不是JSON文件
- 已经实现: 代码已经写好,只需要调整Android端的API路径
- 日志完善: 有详细的日志记录,方便调试
🚀 快速修复步骤
步骤1:修改Android端ApiService.java
找到文件:android-app/app/src/main/java/com/example/livestreaming/net/ApiService.java
修改以下接口:
// 记录观看历史(新版)
@POST("api/front/activity/view/record") // 修改路径
Call<ApiResponse<Map<String, Object>>> recordViewHistoryNew(@Body Map<String, Object> body);
// 获取观看历史
@GET("api/front/activity/view/history") // 修改路径
Call<ApiResponse<PageResponse<Map<String, Object>>>> getViewHistory(
@Query("targetType") String targetType, // 修改参数名
@Query("page") int page,
@Query("pageSize") int pageSize);
// 清除观看历史
@DELETE("api/front/activity/view/history") // 修改路径
Call<ApiResponse<String>> clearViewHistory(@Query("targetType") String targetType);
步骤2:修改RoomDetailActivity.java
找到 recordWatchHistory() 方法,确保参数名正确:
body.put("targetType", "room"); // 确保是targetType,不是type
body.put("targetId", roomId);
body.put("targetTitle", "直播间");
body.put("duration", 0); // 确保是duration,不是viewDuration
步骤3:测试
- 重新编译Android应用
- 登录应用
- 进入直播间
- 查看日志,确认API调用成功
- 进入"我的记录" -> "观看历史"查看
📝 注意事项
- ⚠️ 不要修改live-streaming项目:所有功能都在zhibo-h中
- ⚠️ 确保后台服务运行:zhibo-h后台需要在8081端口运行
- ⚠️ Token认证:确保Android端正确传递Token
- ⚠️ 参数名称:注意参数名是
targetType和duration,不是type和viewDuration
🔍 调试方法
如果遇到问题,可以使用调试接口:
GET /api/front/activity/debug/token
Authorization: Bearer {token}
这个接口会返回:
- Token状态
- 用户ID
- 是否登录
最后更新: 2026-01-05
状态: ✅ 后台已实现,需要调整Android端API路径