zhibo/Log/指令/作品上热门功能实现说明.md

226 lines
5.9 KiB
Markdown
Raw Normal View History

# 作品上热门功能实现说明
## 功能概述
实现了最简单的"作品上热门"功能,管理员可以在后台设置/取消作品的热门状态用户可以在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
**状态:** 后端完成,前端待实现