- 数据库:添加is_hot和hot_time字段 - Service层:实现toggleHot和getHotWorks方法 - 管理端API:添加设置热门和查询热门列表接口 - 用户端API:添加获取热门作品列表接口 - 实体类:更新Works和WorksResponse添加热门字段 - 文档:创建功能实现说明文档 后续需要: - 后台管理界面(Vue)添加热门设置按钮 - Android App添加热门Tab页
5.9 KiB
作品上热门功能实现说明
功能概述
实现了最简单的"作品上热门"功能,管理员可以在后台设置/取消作品的热门状态,用户可以在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
新增方法:
// 设置/取消热门
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.javaandroid-app/app/src/main/java/com/example/livestreaming/net/ApiService.java
使用流程
管理员操作流程:
- 登录后台管理系统
- 进入"作品管理"页面
- 找到想要设置为热门的作品
- 点击"设置热门"按钮
- 该作品立即成为热门作品
用户查看流程:
- 打开App
- 点击"热门"Tab
- 查看热门作品列表
- 热门作品按设置时间倒序排列(最新设置的在前面)
数据库执行
在部署前需要执行SQL文件:
mysql -u root -p crmeb < Zhibo/zhibo-h/sql/add_works_hot_fields.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`);
测试建议
后端测试:
- 测试设置热门接口
- 测试取消热门接口
- 测试获取热门列表接口
- 验证热门作品排序是否正确
前端测试:
- 测试后台管理界面的热门设置功能
- 测试App热门Tab的显示
- 测试热门标签的显示
扩展建议
如果以后需要更复杂的功能,可以在此基础上扩展:
- 添加热门时长限制(加个
hot_end_time字段) - 添加自动热门算法(定时任务计算热度)
- 添加用户付费推广(加个
works_hot表记录推广记录) - 添加热门位置排序(加个
hot_order字段)
注意事项
- 后端代码已完成并编译通过 ✅
- 数据库SQL文件已创建 ✅
- 前端界面(Vue Admin + Android App)需要继续实现
- 部署前记得执行数据库迁移脚本
创建时间: 2026-01-08 状态: 后端完成,前端待实现