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