# Apifox 指南 —— 数字图书馆(管理) - baseURL: `http://localhost:8080` - 环境变量建议:`base`、`token_admin` - 通用请求头:`Authorization: Bearer {{token_admin}}` ## 推荐集合结构 - 管理端 / 数字图书馆 - 列表 GET /manage/library/list - 详情 GET /manage/library/{id} - 资产 GET /manage/library/{id}/assets - 下载 GET /manage/library/{id}/download - 新增/编辑/删除 POST|PUT|DELETE /manage/library - 审批 通过/驳回 PUT /{id}/approve | /{id}/reject - 上线/下架 PUT /{id}/online | /{id}/offline - 图书管理员 列表/任命/解除 - 统计(上传趋势)GET /manage/library/stats/uploadTrend?days=30(登录即可) - 统计(下载趋势)GET /manage/library/stats/downloadTrend?days=30(登录即可) - 排行(图书下载榜)GET /manage/library/stats/topBooks?limit=5(登录即可) - 排行(用户下载榜)GET /manage/library/stats/topDownloadUsers?limit=5(登录即可) - 排行(用户上传榜)GET /manage/library/stats/topUploadUsers?limit=5(登录即可) ## 前置:登录管理员 - POST /login → 提取 `data.token` 为 `token_admin` ## 用例 1:审核与上下架(端到端) 1) 待审列表:GET /manage/library/list?status=0&pageNum=1&pageSize=10 → `code == 200` 2) 审核通过:PUT /manage/library/{{id}}/approve → `code == 200` 3) 下架:PUT /manage/library/{{id}}/offline,Body:`{ "reason":"版权问题" }` → `code == 200` 4) 上线(转待审):PUT /manage/library/{{id}}/online → `code == 200` 5) 驳回:PUT /manage/library/{{id}}/reject,Body:`{ "reason":"内容不完整" }` → `code == 200` ## 用例 2:下载与资产 - 资产列表:GET /manage/library/{{id}}/assets → `code == 200` - 下载:GET /manage/library/{{id}}/download?assetId={{aid}} → 断言 HTTP 302 ## 用例 3:新增/编辑/删除 - 新增:POST /manage/library(最小字段:title)→ 提取 `id` - 编辑:PUT /manage/library(`{ "id": {{id}}, "summary":"修订" }`)→ `code == 200` - 删除:DELETE /manage/library/{{id}} → `code == 200` ## 用例 4:图书管理员 - 列表:GET /manage/library/librarian/list → `code == 200` - 任命:POST /manage/library/librarian,Body:`{ "userId": 1001 }` → `code == 200` - 解除:DELETE /manage/library/librarian/1001 → `code == 200` 说明:从 v3 起,列表基于系统角色联动。只要在“系统管理→用户管理”为用户分配了 `librarian` 角色,即可出现在本列表中; 若需记录备注/任命时间,可通过“任命”接口为该用户补全映射信息。 ## 用例 5:统计趋势(上传/下载) 1) 上传趋势(近 7 天) - GET /manage/library/stats/uploadTrend?days=7 - 断言:`status == 200 && body.code == 200 && Array.isArray(body.data)` 2) 下载趋势(近 30 天) - GET /manage/library/stats/downloadTrend?days=30 - 断言:`status == 200 && body.code == 200 && Array.isArray(body.data)` ## 用例 6:排行榜(Top5) - 图书下载榜:GET /manage/library/stats/topBooks?limit=5 → `status==200 && Array.isArray(body.data)` - 用户下载榜:GET /manage/library/stats/topDownloadUsers?limit=5 → `status==200 && Array.isArray(body.data)` - 用户上传榜:GET /manage/library/stats/topUploadUsers?limit=5 → `status==200 && Array.isArray(body.data)` ## 统一断言脚本 - 成功:`status == 200 && body.code == 200` - 列表:`Array.isArray(body.rows) && typeof body.total === 'number'` - 详情/资产:`body.data && (body.data.assets || body.data.id)` ## 常见失败与处理 - 403 权限不足:未分配 `manage:library:*` 或 `manage:libraryLibrarian:*` - 409 流转冲突:仅待审可通过/驳回;仅已发布可下架 - 404 不存在:ID 无效或已删除 - 500 其他:参数/唯一约束/服务异常,查看 `msg` 与后端日志