实现了"全部分类"功能,用户点击首页的"全部分类"按钮后,可以跳转到分类列表页面,查看所有书籍分类,并可以点击分类查看该分类下的书籍列表。
/pages/category/category)/pages/more-books/more-books)文件:book/src/main/java/com/yu/book/vo/CategoryVO.java
包含字段:
id - 分类IDname - 分类名称icon - 图标color - 颜色bookCount - 该分类下的书籍数量cover - 分类封面(从该分类的书籍中获取)文件:book/src/main/java/com/yu/book/mapper/CategoryMapper.java
新增方法:
countBooksByCategoryId(Integer categoryId) - 统计指定分类下的书籍数量getCategoryCover(Integer categoryId) - 获取指定分类的封面文件:book/src/main/resources/mapper/CategoryMapper.xml
新增SQL查询:
-- 统计指定分类下的书籍数量
SELECT COUNT(*) FROM books
WHERE category_id = #{categoryId} AND status = 1
-- 获取指定分类的封面
SELECT COALESCE(image, cover) as cover
FROM books
WHERE category_id = #{categoryId} AND status = 1
AND (image IS NOT NULL OR cover IS NOT NULL)
ORDER BY created_at DESC
LIMIT 1
文件:book/src/main/java/com/yu/book/service/CategoryService.java
主要方法:
getAllCategories() - 获取所有启用的分类列表(包含书籍数量和封面)getCategoryById(Integer id) - 根据ID获取分类详情文件:book/src/main/java/com/yu/book/controller/CategoryController.java
接口:
GET /api/category/list - 获取所有启用的分类列表GET /api/category/{id} - 根据ID获取分类详情文件:books/utils/api.js
新增方法:
// 获取所有分类列表
export function getAllCategories()
// 根据ID获取分类详情
export function getCategoryById(id)
文件:books/pages/category/category.vue
功能:
文件:books/pages/more-books/more-books.vue
功能:
文件:books/pages/index/index.vue
点击"全部分类"(index === 0)时,跳转到分类列表页面:
if (index === 0) {
uni.navigateTo({
url: '/pages/category/category'
})
}
使用现有的 categories 表:
id - 分类IDname - 分类名称icon - 图标color - 颜色sort_order - 排序顺序status - 状态(1=启用,0=禁用)文件:book/src/main/resources/db/category_data.sql
包含以下分类:
# 插入分类数据
mysql -u root -p books_db < book/src/main/resources/db/category_data.sql
确保 books 表中的书籍有正确的 category_id,这样分类才能显示书籍数量。
可以执行以下SQL更新现有书籍的分类:
-- 示例:为现有书籍分配分类
UPDATE books SET category_id = 1 WHERE id IN (1, 2, 3); -- 文学
UPDATE books SET category_id = 2 WHERE id IN (4, 5, 6); -- 军事历史
-- 根据实际情况调整
后端服务启动后,分类接口会自动注册。
请求:GET /api/category/list
响应:
{
"code": 200,
"message": "成功",
"data": [
{
"id": 1,
"name": "文学",
"icon": "📚",
"color": "#E57373",
"sortOrder": 1,
"status": 1,
"bookCount": 10,
"cover": "https://picsum.photos/seed/book1/200/300",
"createdAt": "2024-01-01T00:00:00",
"updatedAt": "2024-01-01T00:00:00"
},
...
]
}
请求:GET /api/category/{id}
响应:
{
"code": 200,
"message": "成功",
"data": {
"id": 1,
"name": "文学",
"icon": "📚",
"color": "#E57373",
"sortOrder": 1,
"status": 1,
"bookCount": 10,
"cover": "https://picsum.photos/seed/book1/200/300",
"createdAt": "2024-01-01T00:00:00",
"updatedAt": "2024-01-01T00:00:00"
}
}
status = 1(上架)的书籍sort_order 字段升序排序