zhibo/Log/指令/作品上热门功能实现说明.md
xiao12feng8 2c91a66234 实现作品上热门功能(后端完成)
- 数据库:添加is_hot和hot_time字段
- Service层:实现toggleHot和getHotWorks方法
- 管理端API:添加设置热门和查询热门列表接口
- 用户端API:添加获取热门作品列表接口
- 实体类:更新Works和WorksResponse添加热门字段
- 文档:创建功能实现说明文档

后续需要:
- 后台管理界面(Vue)添加热门设置按钮
- Android App添加热门Tab页
2026-01-08 16:44:12 +08:00

226 lines
5.9 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.

# 作品上热门功能实现说明
## 功能概述
实现了最简单的"作品上热门"功能,管理员可以在后台设置/取消作品的热门状态用户可以在App中查看热门作品列表。
## 实现方案
采用**最简单方案**:管理员手动设置热门
### 核心特点
- ✅ 只在后台管理端操作,不涉及用户端复杂交互
- ✅ 不需要付费系统,不需要金币/积分
- ✅ 不需要审核流程,管理员直接设置
- ✅ 不需要定时任务,手动管理即可
- ✅ 最小化数据库改动
## 已完成的工作
### 1. 数据库改动 ✅
**文件:** `Zhibo/zhibo-h/sql/add_works_hot_fields.sql`
`works` 表添加了2个字段
- `is_hot` (tinyint): 是否热门1-是 0-否
- `hot_time` (datetime): 设置热门的时间
### 2. 后端Service层 ✅
#### WorksService接口
**文件:** `Zhibo/zhibo-h/crmeb-service/src/main/java/com/zbkj/service/service/WorksService.java`
新增方法:
```java
// 设置/取消热门
Boolean toggleHot(Long worksId, Boolean isHot);
// 获取热门作品列表
CommonPage<WorksResponse> getHotWorks(Integer page, Integer pageSize, Integer userId);
```
#### WorksServiceImpl实现
**文件:** `Zhibo/zhibo-h/crmeb-service/src/main/java/com/zbkj/service/service/impl/WorksServiceImpl.java`
实现了:
- `toggleHot()`: 设置/取消热门状态
- `getHotWorks()`: 查询热门作品列表按hot_time倒序
- `convertToResponse()`: 添加了热门字段的转换
### 3. 管理端Controller ✅
**文件:** `Zhibo/zhibo-h/crmeb-admin/src/main/java/com/zbkj/admin/controller/WorksController.java`
新增接口:
- `POST /api/admin/works/toggleHot` - 设置/取消热门
- 参数id (作品ID), isHot (true/false)
- 返回:操作结果
- `GET /api/admin/works/hotList` - 获取热门作品列表
- 参数page, limit
- 返回:热门作品分页列表
### 4. 用户端Controller ✅
**文件:** `Zhibo/zhibo-h/crmeb-front/src/main/java/com/zbkj/front/controller/WorksController.java`
新增接口:
- `GET /api/works/hot` - 获取热门作品列表(用户端)
- 参数page, pageSize
- 返回:热门作品分页列表
- 不需要登录即可访问
### 5. 实体类更新 ✅
#### Works实体
**文件:** `Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/model/works/Works.java`
添加字段:
- `isHot`: 是否热门
- `hotTime`: 设置热门的时间
#### WorksResponse响应类
**文件:** `Zhibo/zhibo-h/crmeb-common/src/main/java/com/zbkj/common/response/WorksResponse.java`
添加字段:
- `isHot`: 是否热门
- `hotTime`: 设置热门的时间
## API接口说明
### 管理端接口
#### 1. 设置/取消热门
```
POST /api/admin/works/toggleHot
参数:
- id: 作品ID (Long)
- isHot: 是否热门 (Boolean, true=设置热门, false=取消热门)
返回:
{
"code": 200,
"message": "设置热门成功" / "取消热门成功"
}
```
#### 2. 获取热门作品列表(管理端)
```
GET /api/admin/works/hotList
参数:
- page: 页码 (默认1)
- limit: 每页数量 (默认20)
返回:
{
"code": 200,
"data": {
"list": [...],
"total": 100,
"page": 1,
"limit": 20
}
}
```
### 用户端接口
#### 3. 获取热门作品列表(用户端)
```
GET /api/works/hot
参数:
- page: 页码 (默认1)
- pageSize: 每页数量 (默认20)
返回:
{
"code": 200,
"data": {
"list": [...],
"total": 100,
"page": 1,
"limit": 20
}
}
```
## 后续工作
### 待实现:
#### 1. 后台管理界面 (Vue Admin)
需要在作品管理页面添加:
- 作品列表中每一行添加"设置热门"/"取消热门"按钮
- 热门作品用特殊样式标识(如红色高亮)
- 可选:添加单独的"热门作品管理"页面
**文件位置:** `Zhibo/admin/src/views/content/works/list.vue`
#### 2. Android App界面
需要实现:
- 首页添加"热门"Tab
- 调用 `GET /api/works/hot` 接口获取热门作品
- 作品卡片显示热门标签(🔥热门)
**需要修改的文件:**
- `android-app/app/src/main/java/com/example/livestreaming/MainActivity.java`
- `android-app/app/src/main/java/com/example/livestreaming/net/ApiService.java`
## 使用流程
### 管理员操作流程:
1. 登录后台管理系统
2. 进入"作品管理"页面
3. 找到想要设置为热门的作品
4. 点击"设置热门"按钮
5. 该作品立即成为热门作品
### 用户查看流程:
1. 打开App
2. 点击"热门"Tab
3. 查看热门作品列表
4. 热门作品按设置时间倒序排列(最新设置的在前面)
## 数据库执行
在部署前需要执行SQL文件
```bash
mysql -u root -p crmeb < Zhibo/zhibo-h/sql/add_works_hot_fields.sql
```
或者手动执行:
```sql
USE `crmeb`;
ALTER TABLE `works`
ADD COLUMN `is_hot` tinyint DEFAULT 0 COMMENT '是否热门1-是 0-否' AFTER `status`,
ADD COLUMN `hot_time` datetime DEFAULT NULL COMMENT '设置热门的时间' AFTER `is_hot`;
ALTER TABLE `works` ADD INDEX `idx_is_hot` (`is_hot`);
```
## 测试建议
### 后端测试:
1. 测试设置热门接口
2. 测试取消热门接口
3. 测试获取热门列表接口
4. 验证热门作品排序是否正确
### 前端测试:
1. 测试后台管理界面的热门设置功能
2. 测试App热门Tab的显示
3. 测试热门标签的显示
## 扩展建议
如果以后需要更复杂的功能,可以在此基础上扩展:
- 添加热门时长限制(加个 `hot_end_time` 字段)
- 添加自动热门算法(定时任务计算热度)
- 添加用户付费推广(加个 `works_hot` 表记录推广记录)
- 添加热门位置排序(加个 `hot_order` 字段)
## 注意事项
1. 后端代码已完成并编译通过 ✅
2. 数据库SQL文件已创建 ✅
3. 前端界面Vue Admin + Android App需要继续实现
4. 部署前记得执行数据库迁移脚本
---
**创建时间:** 2026-01-08
**状态:** 后端完成,前端待实现