6.5 KiB
6.5 KiB
书籍章节 admin 接口
基本信息
- 模块:book
- 资源:书籍章节
- 端:admin
- 鉴权:
PrivateGroup,需要JWT + Casbin - 审计:创建、更新、单删、批量删除启用
OperationRecord - 前缀:
/book - 实体模型:
book.BookChapter - 搜索入参:
bookReq.BookChapterSearch - 详情响应:
bookRes.BookChapterResponse - 列表项:
book.BookChapter - 返回:写操作
response.Response{msg};详情response.Response{data};列表response.PageResult - 删除策略:硬删
CRUD
创建书籍章节
- Method:
POST - Path:
/book/createBookChapter - Handler:
BookChapterApi.CreateBookChapter - Service:
BookChapterService.CreateBookChapter - 审计:是
Request Body book.BookChapter
| 字段 | 类型 | 必填 | 规则 | 说明 |
|---|---|---|---|---|
| bookId | uint | 是 | > 0 |
所属书籍 ID |
| title | string | 是 | 非空,最长 255 |
章节标题 |
| chapterNo | int | 是 | > 0;同一 bookId 下唯一 |
同书内章节顺序编号 |
| isReadable | bool | 否 | 默认 false;为 true 时 totalLines > 0 |
是否对 app 端开放阅读 |
| contentFileUrl | string | 是 | 非空,最长 500 |
章节内容文件 URL |
| totalLines | int | 否 | 默认 0,>= 0 |
章节正文总行数 |
| isEnabled | bool | 否 | 默认 true |
章节是否启用 |
Response
response.Response{msg}
规则
- 创建请求禁止传服务端生成字段:
id/createdAt/updatedAt。 bookId + chapterNo唯一。isReadable=true时,totalLines必须大于0。
删除书籍章节
- Method:
DELETE - Path:
/book/deleteBookChapter - Handler:
BookChapterApi.DeleteBookChapter - Service:
BookChapterService.DeleteBookChapter - 审计:是
Request Query
| 参数 | 类型 | 必填 | 规则 | 说明 |
|---|---|---|---|---|
| id | int | 是 | > 0 |
章节 ID |
Response
response.Response{msg}
批量删除书籍章节
- Method:
DELETE - Path:
/book/deleteBookChapterByIds - Handler:
BookChapterApi.DeleteBookChapterByIds - Service:
BookChapterService.DeleteBookChapterByIds - 审计:是
Request Query
| 参数 | 类型 | 必填 | 规则 | 说明 |
|---|---|---|---|---|
| ids | int[] | 二选一 | 非空,元素均 > 0 |
章节 ID 数组 |
| ids[] | int[] | 二选一 | 非空,元素均 > 0 |
章节 ID 数组,兼容数组写法 |
Response
response.Response{msg}
规则
ids与ids[]二选一。
更新书籍章节
- Method:
PUT - Path:
/book/updateBookChapter - Handler:
BookChapterApi.UpdateBookChapter - Service:
BookChapterService.UpdateBookChapter - 审计:是
Request Body book.BookChapter
| 字段 | 类型 | 必填 | 规则 | 说明 |
|---|---|---|---|---|
| id | uint | 是 | > 0 |
章节 ID |
| bookId | uint | 是 | > 0 |
所属书籍 ID |
| title | string | 是 | 非空,最长 255 |
章节标题 |
| chapterNo | int | 是 | > 0;同一 bookId 下唯一 |
同书内章节顺序编号 |
| isReadable | bool | 否 | 为 true 时 totalLines > 0 |
是否对 app 端开放阅读 |
| contentFileUrl | string | 是 | 非空,最长 500 |
章节内容文件 URL |
| totalLines | int | 否 | >= 0 |
章节正文总行数 |
| isEnabled | bool | 否 | 布尔值 | 章节是否启用 |
Response
response.Response{msg}
规则
- 更新请求禁止传服务端维护字段:
createdAt/updatedAt。 - 更新为实体全量保存,前端应传完整可编辑实体,避免字段被零值覆盖。
bookId + chapterNo唯一。isReadable=true时,totalLines必须大于0。
查询书籍章节详情
- Method:
GET - Path:
/book/findBookChapter - Handler:
BookChapterApi.FindBookChapter - Service:
BookChapterService.GetBookChapter - 审计:否
Request Query
| 参数 | 类型 | 必填 | 规则 | 说明 |
|---|---|---|---|---|
| id | int | 是 | > 0 |
章节 ID |
Response bookRes.BookChapterResponse
| 字段 | 类型 | 说明 |
|---|---|---|
| bookChapter | object | 章节实体 |
| bookChapter.id | uint | 章节 ID |
| bookChapter.createdAt | string | 创建时间 |
| bookChapter.updatedAt | string | 更新时间 |
| bookChapter.bookId | uint | 所属书籍 ID |
| bookChapter.title | string | 章节标题 |
| bookChapter.chapterNo | int | 同书内章节顺序编号 |
| bookChapter.isReadable | bool | 是否对 app 端开放阅读 |
| bookChapter.contentFileUrl | string | 章节内容文件 URL |
| bookChapter.totalLines | int | 章节正文总行数 |
| bookChapter.isEnabled | bool | 章节是否启用 |
分页查询书籍章节列表
- Method:
GET - Path:
/book/getBookChapterList - Handler:
BookChapterApi.GetBookChapterList - Service:
BookChapterService.GetBookChapterInfoList - 审计:否
Request Query bookReq.BookChapterSearch
| 参数 | 类型 | 必填 | 规则 | 说明 |
|---|---|---|---|---|
| page | int | 否 | 默认 1,最小 1 |
页码 |
| pageSize | int | 否 | 默认 10,最大 100 |
每页数量 |
| keyword | string | 否 | 章节标题模糊查询 | 关键字 |
| bookId | uint | 否 | > 0 |
所属书籍 ID |
| isReadable | bool | 否 | 布尔值 | 是否对 app 端开放阅读 |
| isEnabled | bool | 否 | 布尔值 | 章节是否启用 |
Response response.PageResult
| 字段 | 类型 | 说明 |
|---|---|---|
| list | array | book.BookChapter 列表 |
| list[].id | uint | 章节 ID |
| list[].createdAt | string | 创建时间 |
| list[].updatedAt | string | 更新时间 |
| list[].bookId | uint | 所属书籍 ID |
| list[].title | string | 章节标题 |
| list[].chapterNo | int | 同书内章节顺序编号 |
| list[].isReadable | bool | 是否对 app 端开放阅读 |
| list[].contentFileUrl | string | 章节内容文件 URL |
| list[].totalLines | int | 章节正文总行数 |
| list[].isEnabled | bool | 章节是否启用 |
| total | int64 | 总数 |
| page | int | 当前页 |
| pageSize | int | 每页数量 |
规则
- 列表默认排序:
book_id asc, chapter_no asc。
规则
- 章节使用硬删;删除后数据库不保留软删标记。
bookId + chapterNo是章节唯一约束;新增或更新时不能与同书已有章节冲突。chapterNo必须大于0。totalLines不能小于0;isReadable=true时totalLines必须大于0。- 创建、更新复用实体
book.BookChapter;列表查询复用bookReq.BookChapterSearch;详情返回bookRes.BookChapterResponse。