实现了前端页面五个分类功能的后端接口和数据库支持:
使用现有的 books 表,包含以下关键字段:
id - 书籍IDtitle - 书名author - 作者cover / image - 封面图片brief / desc / introduction - 简介price - 价格is_free - 是否免费is_vip - 是否VIP专享category_id - 分类IDstatus - 状态(1=上架,0=下架)view_count - 浏览次数like_count - 点赞数read_count - 阅读次数created_at - 创建时间updated_at - 更新时间GET /api/book/allpage - 页码(默认:1)size - 每页数量(默认:10)GET /api/book/rankinglimit - 返回数量(默认:10)阅读量 * 3 + 点赞量 * 2 + 浏览量GET /api/book/popularlimit - 返回数量(默认:10)GET /api/book/newlimit - 返回数量(默认:10)GET /api/book/vippage - 页码(默认:1)size - 每页数量(默认:10)is_vip = 1 且 status = 1在 books/utils/api.js 中添加了以下方法:
// 获取全部书籍(分页)
export function getAllBooks(page = 1, size = 10)
// 获取排行榜书籍
export function getRankingBooks(limit = 10)
// 获取热门书籍
export function getPopularBooks(limit = 10)
// 获取新书榜
export function getNewBooks(limit = 10)
// 获取VIP书籍(分页)
export function getVipBooks(page = 1, size = 10)
SELECT * FROM books
WHERE status = 1
ORDER BY created_at DESC
LIMIT offset, size
SELECT * FROM books
WHERE status = 1
ORDER BY (read_count * 3 + like_count * 2 + view_count) DESC, created_at DESC
LIMIT limit
SELECT * FROM books
WHERE status = 1
ORDER BY view_count DESC, read_count DESC, created_at DESC
LIMIT limit
SELECT * FROM books
WHERE status = 1
ORDER BY created_at DESC
LIMIT limit
SELECT * FROM books
WHERE status = 1 AND is_vip = 1
ORDER BY created_at DESC
LIMIT offset, size
如果还没有创建表,请先执行 schema.sql 创建基础表结构。
执行 books_category_data.sql 插入示例书籍数据:
mysql -u root -p books_db < book/src/main/resources/db/books_category_data.sql
或者使用MySQL客户端工具执行SQL文件。
示例数据包含:
import { getAllBooks, getRankingBooks, getPopularBooks, getNewBooks, getVipBooks } from '@/utils/api.js'
// 获取全部书籍(第一页,每页10本)
getAllBooks(1, 10).then(res => {
console.log('全部书籍:', res.data)
})
// 获取排行榜(前10本)
getRankingBooks(10).then(res => {
console.log('排行榜:', res.data)
})
// 获取热门书籍(前10本)
getPopularBooks(10).then(res => {
console.log('热门书籍:', res.data)
})
// 获取新书榜(前10本)
getNewBooks(10).then(res => {
console.log('新书榜:', res.data)
})
// 获取VIP书籍(第一页,每页10本)
getVipBooks(1, 10).then(res => {
console.log('VIP书籍:', res.data)
})
{
"code": 200,
"message": "成功",
"data": {
"list": [...],
"total": 100,
"page": 1,
"size": 10
}
}
{
"code": 200,
"message": "成功",
"data": [
{
"id": 1,
"title": "书名",
"author": "作者",
"image": "封面URL",
"brief": "简介",
"viewCount": 1000,
"likeCount": 100,
"readCount": 500,
"isVip": false,
"price": 0.00
},
...
]
}
/{id} 路由之前,避免路径冲突status = 1(上架)的书籍is_vip = 1 且用户需要是VIP才能访问