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

5.9 KiB
Raw Blame 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

新增方法:

// 设置/取消热门
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文件

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`);

测试建议

后端测试:

  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 状态: 后端完成,前端待实现