zhibo/观看历史功能-zhibo-h后台说明.md
xiao12feng8 a619bb1750 修复:首页标签分类+我的挚友处理+历史记录
优化:缘池界面+消息搜索界面
2026-01-05 16:47:07 +08:00

7.0 KiB
Raw Blame History

观看历史功能 - 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_recordeb_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

修改以下接口:

// 记录观看历史(新版)
@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测试

  1. 重新编译Android应用
  2. 登录应用
  3. 进入直播间
  4. 查看日志确认API调用成功
  5. 进入"我的记录" -> "观看历史"查看

📝 注意事项

  1. ⚠️ 不要修改live-streaming项目所有功能都在zhibo-h中
  2. ⚠️ 确保后台服务运行zhibo-h后台需要在8081端口运行
  3. ⚠️ Token认证确保Android端正确传递Token
  4. ⚠️ 参数名称:注意参数名是 targetTypeduration,不是 typeviewDuration

🔍 调试方法

如果遇到问题,可以使用调试接口:

GET /api/front/activity/debug/token
Authorization: Bearer {token}

这个接口会返回:

  • Token状态
  • 用户ID
  • 是否登录

最后更新: 2026-01-05
状态: 后台已实现需要调整Android端API路径