123 lines
3.6 KiB
Markdown
123 lines
3.6 KiB
Markdown
|
|
# 观看历史功能实现说明
|
|||
|
|
|
|||
|
|
## 功能概述
|
|||
|
|
|
|||
|
|
已成功实现观看历史记录功能,用户在观看直播时会自动记录观看历史,并可以在"我的记录"页面查看。
|
|||
|
|
|
|||
|
|
## 实现的功能
|
|||
|
|
|
|||
|
|
### 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)
|