zhibo/用户活动记录功能说明.md
2026-01-03 15:32:31 +08:00

299 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.

# 用户活动记录功能说明
## 功能概述
在管理后台的用户详情页面添加了三个新的标签页,用于查看用户的活动记录:
1. **关注记录** - 查看用户关注了哪些人
2. **点赞记录** - 查看用户点赞了哪些内容(直播间、作品、心愿等)
3. **查看历史** - 查看用户的浏览历史记录
## 实现内容
### 1. 前端修改
**文件**: `Zhibo/admin/src/views/user/list/userDetails.vue`
**新增标签页**:
- 标签页 7关注记录
- 标签页 8点赞记录
- 标签页 9查看历史
**功能特性**:
- 支持分页显示
- 数据实时加载
- 状态标签显示(关注状态、内容类型等)
- 时间排序(最新的在前)
### 2. 后端接口
**文件**: `Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserActivityController.java`
**新增接口**:
#### 2.1 获取关注记录
```
GET /api/admin/user/follow/records
参数:
- userId: 用户ID
- page: 页码默认1
- limit: 每页数量默认10
```
返回数据:
```json
{
"code": 200,
"data": {
"list": [
{
"followedId": 41,
"followedNickname": "夏至已至",
"followStatus": "1",
"createTime": "2026-01-03 14:19:16"
}
],
"total": 1,
"page": 1,
"limit": 10
}
}
```
#### 2.2 获取点赞记录
```
GET /api/admin/user/like/records
参数:
- userId: 用户ID
- page: 页码默认1
- limit: 每页数量默认10
```
返回数据:
```json
{
"code": 200,
"data": {
"list": [
{
"targetType": "room",
"targetId": "8",
"targetTitle": "火影忍者",
"createTime": "2026-01-03 14:30:00"
}
],
"total": 1,
"page": 1,
"limit": 10
}
}
```
#### 2.3 获取查看历史
```
GET /api/admin/user/view/history
参数:
- userId: 用户ID
- page: 页码默认1
- limit: 每页数量默认10
```
返回数据:
```json
{
"code": 200,
"data": {
"list": [
{
"targetType": "room",
"targetId": "8",
"targetTitle": "火影忍者",
"viewDuration": 1200,
"createTime": "2026-01-03 14:25:00"
}
],
"total": 1,
"page": 1,
"limit": 10
}
}
```
### 3. 数据库表
**文件**: `user_activity_tables.sql`
**新增表**:
#### 3.1 直播间点赞记录表 (eb_live_room_like)
```sql
CREATE TABLE `eb_live_room_like` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '用户ID',
`room_id` varchar(50) NOT NULL COMMENT '直播间ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_room` (`user_id`, `room_id`)
);
```
#### 3.2 作品点赞记录表 (eb_work_like)
```sql
CREATE TABLE `eb_work_like` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '用户ID',
`work_id` bigint(20) NOT NULL COMMENT '作品ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_work` (`user_id`, `work_id`)
);
```
#### 3.3 心愿点赞记录表 (eb_wish_like)
```sql
CREATE TABLE `eb_wish_like` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '用户ID',
`wish_id` bigint(20) NOT NULL COMMENT '心愿ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_wish` (`user_id`, `wish_id`)
);
```
#### 3.4 查看历史记录表 (eb_view_history)
```sql
CREATE TABLE `eb_view_history` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '用户ID',
`target_type` varchar(20) NOT NULL COMMENT '目标类型',
`target_id` varchar(50) NOT NULL COMMENT '目标ID',
`target_title` varchar(255) DEFAULT NULL COMMENT '目标标题',
`view_duration` int(11) DEFAULT 0 COMMENT '观看时长(秒)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`)
);
```
## 部署步骤
### 1. 创建数据库表
```bash
mysql -u root -p zhibo < user_activity_tables.sql
```
### 2. 编译后端代码
```bash
cd Zhibo/zhibo-h
mvn clean package -DskipTests -pl crmeb-admin -am
```
### 3. 重启后端服务
```bash
cd /root/zhibo/Zhibo/zhibo-h/crmeb-admin
./restart.sh
```
### 4. 前端无需重新编译
前端代码修改后,刷新浏览器即可看到新功能。
## 使用说明
### 1. 查看用户活动记录
1. 登录管理后台
2. 进入"用户管理" -> "用户列表"
3. 点击某个用户的"详情"按钮
4. 在弹出的抽屉中,可以看到新增的三个标签页:
- 关注记录
- 点赞记录
- 查看历史
### 2. 数据说明
**关注记录**:
- 显示用户关注了哪些人
- 包含关注状态(已关注/已取消)
- 按关注时间倒序排列
**点赞记录**:
- 显示用户点赞的所有内容
- 包含类型标签(直播间/作品/心愿)
- 按点赞时间倒序排列
**查看历史**:
- 显示用户的浏览记录
- 包含观看时长
- 按查看时间倒序排列
### 3. 数据收集
这些数据需要在应用中主动记录:
**点赞记录**:
- 用户点赞直播间时,插入 `eb_live_room_like`
- 用户点赞作品时,插入 `eb_work_like`
- 用户点赞心愿时,插入 `eb_wish_like`
**查看历史**:
- 用户进入直播间时,记录到 `eb_view_history`
- 用户查看作品时,记录到 `eb_view_history`
- 用户访问他人主页时,记录到 `eb_view_history`
## 测试数据
可以使用以下 SQL 插入测试数据:
```sql
-- 插入点赞记录
INSERT INTO eb_live_room_like (user_id, room_id, create_time)
VALUES (43, '8', '2026-01-03 14:30:00');
-- 插入查看历史
INSERT INTO eb_view_history (user_id, target_type, target_id, target_title, view_duration, create_time)
VALUES (43, 'room', '8', '火影忍者', 1200, '2026-01-03 14:25:00');
```
## 注意事项
1. **性能优化**:
- 所有表都添加了索引,确保查询性能
- 使用分页查询,避免一次加载过多数据
2. **数据一致性**:
- 点赞表使用唯一索引,防止重复点赞
- 查看历史可以重复记录,用于统计观看次数
3. **扩展性**:
- 可以轻松添加更多类型的点赞记录
- 查看历史支持多种目标类型
4. **隐私保护**:
- 只有管理员可以查看用户的活动记录
- 前端用户无法查看其他用户的私密数据
## 后续优化建议
1. **数据统计**:
- 添加用户活跃度统计
- 生成用户行为分析报告
2. **数据导出**:
- 支持导出用户活动记录为 Excel
- 用于数据分析和备份
3. **实时更新**:
- 使用 WebSocket 实时推送新的活动记录
- 提升管理员的监控体验
4. **数据清理**:
- 定期清理过期的查看历史记录
- 避免数据库膨胀
## 相关文件
- 前端页面: `Zhibo/admin/src/views/user/list/userDetails.vue`
- 后端控制器: `Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/UserActivityController.java`
- 数据库脚本: `user_activity_tables.sql`
- 说明文档: `用户活动记录功能说明.md`