实现了在后台管理系统中对排行榜书籍进行自定义排序的功能,支持:
在 ranking_items 表中添加 category_id 字段,支持按分类管理:
ALTER TABLE `ranking_items`
ADD COLUMN `category_id` INT DEFAULT NULL COMMENT '分类ID,NULL表示不按分类' AFTER `group_id`,
ADD INDEX `idx_category_id` (`category_id`);
执行 ranking_custom_sort_schema.sql 脚本会自动创建默认排行榜组:
文件:book/src/main/java/com/yu/book/admin/entity/RankingItem.java
添加 categoryId 字段:
private Integer categoryId; // 分类ID,NULL表示不按分类
文件:book/src/main/java/com/yu/book/admin/mapper/RankingMapper.java
新增方法:
selectItemsByCategory() - 按分类查询排行榜项batchUpdateSort() - 批量更新排序selectItemByGroupAndBook() - 根据组和书籍查询文件:book/src/main/java/com/yu/book/admin/service/AdminRankingService.java
新增方法:
listItemsWithBooks() - 查询排行榜项(包含书籍信息)batchUpdateSort() - 批量更新排序addBookToRanking() - 添加书籍到排行榜removeBookFromRanking() - 从排行榜移除书籍文件:book/src/main/java/com/yu/book/admin/controller/AdminRankingController.java
新增接口:
GET /api/admin/ranking/items/with-books - 查询排行榜项(包含书籍信息)POST /api/admin/ranking/sort - 批量更新排序POST /api/admin/ranking/items/add - 添加书籍到排行榜DELETE /api/admin/ranking/items/{id}/remove - 从排行榜移除书籍文件:
RankingSortDTO.java - 排序DTO,用于批量更新排序RankingItemVO.java - 排行榜项VO,包含书籍详细信息文件:book/book-admin/src/main/resources/static/utils/api.js
新增API方法:
getRankingGroups() - 获取所有排行榜组getRankingItemsWithBooks() - 获取排行榜项(包含书籍信息)batchUpdateRankingSort() - 批量更新排序addBookToRanking() - 添加书籍到排行榜removeBookFromRanking() - 从排行榜移除书籍文件:book/book-admin/src/main/resources/static/pages/rankings.html
功能特性:
# 执行数据库脚本
mysql -u root -p books_db < book/src/main/resources/db/ranking_custom_sort_schema.sql
确保后端服务已启动(端口8081或8001)
使用浏览器打开 http://localhost:8081/pages/rankings.html 或 http://localhost:8001/pages/rankings.html
使用管理员账号登录(如果未登录)
GET /api/admin/ranking/items/with-books
请求参数:
groupId - 排行榜组ID(必填)categoryId - 分类ID(可选,NULL表示全部分类)status - 状态(可选,1-启用,0-禁用)响应:
{
"code": 200,
"data": [
{
"id": 1,
"groupId": 1,
"groupName": "畅销榜",
"categoryId": 6,
"categoryName": "文艺",
"bookId": 10,
"bookTitle": "思维的艺术",
"bookAuthor": "延斯·森特根",
"bookCover": "https://...",
"sort": 1,
"status": 1
}
]
}
POST /api/admin/ranking/sort
请求体:
{
"groupId": 1,
"categoryId": 6,
"items": [
{ "id": 1, "bookId": 10, "sort": 1 },
{ "id": 2, "bookId": 11, "sort": 2 },
{ "id": 3, "bookId": 12, "sort": 3 }
]
}
POST /api/admin/ranking/items/add
请求参数:
groupId - 排行榜组ID(必填)bookId - 书籍ID(必填)categoryId - 分类ID(可选)DELETE /api/admin/ranking/items/{id}/remove
更新前端排行榜页面(books/pages/ranking/ranking.vue),使用自定义排序数据:
categoryId 为 NULL 表示不按分类,显示全部分类的书籍创建时间: 2024年
最后更新: 2024年