听书相关的数据表已在 book/src/main/resources/db/audiobook_schema.sql 中定义,主要包括:
audiobooks:听书专辑表,存储书名、作者、主播、封面、简介、分类、上下架状态、VIP/免费标记等字段。audiobook_chapters:听书章节表,关联 audiobooks,包含章节标题、音频地址、时长、是否免费等信息。user_listening_history:用户听书历史表,用于记录最近播放记录。user_listening_progress:用户听书进度表,记录播放位置与完成状态。示例数据可参见:
book/src/main/resources/db/audiobook_sample_data.sqlbook/src/main/resources/db/audiobook_complete_setup.sql新增了后台管理端的听书接口,路径前缀为 /api/admin/audiobook。
| 接口 | 方法 | 说明 |
|---|---|---|
/api/admin/audiobook/list |
GET | 分页查询听书(支持关键词、分类、状态、VIP/免费筛选) |
/api/admin/audiobook/{id} |
GET | 根据 ID 查询听书详情 |
/api/admin/audiobook |
POST | 新建听书专辑 |
/api/admin/audiobook/{id} |
PUT | 更新听书专辑 |
/api/admin/audiobook/{id} |
DELETE | 删除听书专辑 |
/api/admin/audiobook/batch |
DELETE | 批量删除听书专辑 |
/api/admin/audiobook/{id}/publish |
PUT | 上架听书 |
/api/admin/audiobook/{id}/unpublish |
PUT | 下架听书 |
/api/admin/audiobook/batch/publish |
PUT | 批量上架听书 |
/api/admin/audiobook/batch/unpublish |
PUT | 批量下架听书 |
后台服务类:com.yu.book.admin.service.AdminAudiobookService
在 book/book-admin 前端中新增了“听书管理”页面:
src/main/resources/static/pages/audiobooks.htmlbook/book-admin/src/main/resources/static/utils/api.js。以下页面已改为使用后台真实数据:
books/pages/listen/listen.vue:首页听书推荐、最近上新、猜你喜欢。books/pages/more-listen-books/more-listen-books.vue:按类型(上新、推荐、热门、畅听榜)加载更多听书内容。books/pages/audio-novel/audio-novel.vue:使用推荐接口展示有声小说列表。books/pages/portable-listen/portable-listen.vue:使用热门接口展示随身听列表。所有播放入口统一跳转到 listen-detail 页面,由用户选择章节后进入 player 页面,确保章节 ID 与音频地址准确。
初始化数据库
audiobook_schema.sql 创建所需表结构。audiobook_sample_data.sql 导入示例数据。编译 & 启动后端
cd book
mvn spring-boot:run
启动后台前端
cd book/book-admin
npm install
npm run dev
使用管理员账号登录(默认 admin / admin123)。
联调验证
后端业务:
com/yu/book/admin/dto/AudiobookManageDTO.javacom/yu/book/admin/vo/AdminAudiobookVO.javacom/yu/book/admin/service/AdminAudiobookService.javacom/yu/book/admin/controller/AdminAudiobookController.javacom/yu/book/mapper/AudiobookMapper.java & mapper/AudiobookMapper.xml后台前端:
static/pages/audiobooks.htmlstatic/utils/api.js小程序页面:
books/pages/listen/listen.vuebooks/pages/more-listen-books/more-listen-books.vuebooks/pages/audio-novel/audio-novel.vuebooks/pages/portable-listen/portable-listen.vue如需扩展章节管理,可在后台中继续添加 audiobook_chapters 的管理界面,复用现有 Mapper。