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