zhibo/观看历史功能实现说明.md

123 lines
3.6 KiB
Markdown
Raw Normal View History

# 观看历史功能实现说明
## 功能概述
已成功实现观看历史记录功能,用户在观看直播时会自动记录观看历史,并可以在"我的记录"页面查看。
## 实现的功能
### 1. 后台功能
#### 新增文件
- `live-streaming/server/store/viewHistoryStore.js` - 观看历史数据存储
- `live-streaming/server/routes/viewHistory.js` - 观看历史API路由
#### 修改文件
- `live-streaming/server/index.js` - 添加观看历史路由
#### API接口
1. **记录观看历史**
- 接口:`POST /api/front/activity/record-view`
- 功能:记录用户观看直播间、作品等内容
- 参数:
```json
{
"targetType": "room", // 类型room/work/profile
"targetId": "room-id", // 目标ID
"targetTitle": "直播间标题",
"coverImage": "封面图片URL",
"streamerName": "主播名称",
"viewDuration": 120 // 观看时长(秒)
}
```
2. **获取观看历史**
- 接口:`GET /api/front/activity/view-history`
- 功能:分页获取用户的观看历史
- 参数:`page`, `pageSize`, `type`(可选,过滤类型)
3. **清除观看历史**
- 接口:`DELETE /api/front/activity/view-history`
- 功能:清除用户的观看历史
- 参数:`type`(可选,清除指定类型)
4. **删除单条记录**
- 接口:`DELETE /api/front/activity/view-history/:id`
- 功能:删除指定的观看历史记录
### 2. Android端功能
#### 修改文件
- `android-app/app/src/main/java/com/example/livestreaming/RoomDetailActivity.java`
#### 实现功能
1. **自动记录观看历史**
- 用户进入直播间时自动记录
- 房间信息加载后更新详细信息
- 未登录用户不记录
2. **显示观看历史**
- 在"我的记录"页面的"观看历史"标签页显示
- 支持点击跳转到对应的直播间
- 显示直播间封面、标题、主播名称、观看时间等信息
## 数据存储
观看历史数据保存在:`live-streaming/data/viewHistory.json`
数据格式:
```json
[
{
"id": 1704441600000,
"userId": 1,
"targetType": "room",
"targetId": "room-123",
"targetTitle": "精彩直播间",
"coverImage": "https://example.com/cover.jpg",
"streamerName": "主播名称",
"viewDuration": 120,
"createTime": "2024-01-05T10:00:00.000Z",
"updateTime": "2024-01-05T10:02:00.000Z",
"viewCount": 3
}
]
```
## 特性说明
1. **自动去重**:同一用户观看同一内容会更新记录而不是创建新记录
2. **观看次数统计**:记录用户观看同一内容的次数
3. **时间排序**:按最后观看时间倒序排列
4. **分页支持**:支持分页加载,避免一次加载过多数据
5. **类型过滤**:支持按类型(直播间/作品/用户主页)过滤
6. **实时状态**:直播间的在线状态会实时更新
## 使用方式
### 用户端操作
1. 登录应用
2. 进入任意直播间观看
3. 系统自动记录观看历史
4. 进入"我的" -> "我的记录"
5. 切换到"观看历史"标签页查看
### 开发者测试
参考 `live-streaming/test-view-history.md` 文件中的测试步骤
## 注意事项
1. 用户必须登录才能记录观看历史
2. 观看历史仅在用户端可见,不会公开
3. 数据持久化存储在本地JSON文件中
4. 生产环境建议使用数据库存储
## 后续优化建议
1. 添加观看时长的实时更新(目前仅记录初始值)
2. 支持用户手动删除单条观看历史
3. 添加观看历史的时间筛选功能
4. 支持导出观看历史数据
5. 添加隐私设置(是否记录观看历史)
6. 迁移到数据库存储MySQL/PostgreSQL