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

278 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 观看历史功能 - 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<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
```java
// 当前(错误)
@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. 记录观看历史
**请求**:
```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<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()` 方法,确保参数名正确:
```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路径