实现了将听书添加到书架的功能,用户可以在听书详情页面点击"加入书架"按钮,将喜欢的听书添加到个人书架中,方便后续收听。
user_audiobook_bookshelf| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INT(11) | 主键ID |
| user_id | INT(11) | 用户ID(外键关联users表) |
| audiobook_id | INT(11) | 听书ID(外键关联audiobooks表) |
| last_listened_chapter_id | INT(11) | 最后收听章节ID(外键关联audiobook_chapters表) |
| last_listened_position | INT(11) | 最后收听位置(秒) |
| added_at | DATETIME | 加入书架时间 |
| updated_at | DATETIME | 更新时间 |
唯一约束:user_id + audiobook_id 组合唯一,防止重复添加
POST /api/audiobook-bookshelf/add请求参数:
{
"userId": 1,
"audiobookId": 1
}
响应:返回书架记录信息
DELETE /api/audiobook-bookshelf/remove请求参数:
{
"userId": 1,
"audiobookId": 1
}
响应:返回成功/失败信息
GET /api/audiobook-bookshelf/list?userId=1GET /api/audiobook-bookshelf/check?userId=1&audiobookId=1PUT /api/audiobook-bookshelf/progress请求参数:
{
"userId": 1,
"audiobookId": 1,
"lastListenedChapterId": 1,
"lastListenedPosition": 100
}
响应:返回更新后的书架记录
listen-detail.vue)book/src/main/resources/db/audiobook_bookshelf_table.sqlbook/src/main/java/com/yu/book/domain/UserAudiobookBookshelf.javabook/src/main/java/com/yu/book/dto/AudiobookBookshelfDTO.javabook/src/main/java/com/yu/book/vo/AudiobookBookshelfVO.javabook/src/main/java/com/yu/book/mapper/AudiobookBookshelfMapper.javabook/src/main/resources/mapper/AudiobookBookshelfMapper.xmlbook/src/main/java/com/yu/book/service/AudiobookBookshelfService.javabook/src/main/java/com/yu/book/controller/AudiobookBookshelfController.javabooks/utils/api.js(添加了5个听书书架相关API方法)books/pages/listen-detail/listen-detail.vue(实现了加入书架功能)执行SQL脚本创建表:
mysql -u root -p books_db < book/src/main/resources/db/audiobook_bookshelf_table.sql
或者使用MySQL客户端工具执行 audiobook_bookshelf_table.sql 文件。
确保后端服务正常启动,新的接口会自动注册。
可以进一步实现的功能:
checkBookshelfStatus 方法是否被调用onShow 生命周期是否正常执行