# 第三方角色和审核功能说明 ## 📋 功能概述 根据新的需求,系统已实现以下功能: 1. **取消普通管理员**:只保留超级管理员(userRole=2) 2. **新增第三方角色**:userRole=3,可在小程序端上传和管理书籍 3. **书籍审核机制**:第三方上传的书籍需要超级管理员审核 4. **删除审核机制**:第三方删除书籍需要超级管理员审核 --- ## 🔐 角色说明 ### 用户角色(userRole) | 角色值 | 角色名称 | 说明 | 登录方式 | |--------|---------|------|---------| | 0 | 普通用户 | 只能浏览和阅读书籍 | 小程序端 | | 2 | 超级管理员 | 后端管理端,审核书籍,管理用户和内容 | Web端(需人脸验证) | | 3 | 第三方 | 小程序端,上传和管理自己的书籍 | 小程序端 | --- ## 📚 书籍状态说明 ### 审核状态(auditStatus) | 状态值 | 状态名称 | 说明 | |--------|---------|------| | 0 | 待审核 | 第三方刚上传,等待超级管理员审核 | | 1 | 已通过 | 审核通过,可以上架显示 | | 2 | 已驳回 | 审核被驳回,需要修改后重新提交 | ### 可见状态(isVisible) | 状态值 | 状态名称 | 说明 | |--------|---------|------| | 0 | 隐藏/下架 | 用户不可见 | | 1 | 可见/上架 | 用户可见(需同时满足:审核通过) | ### 删除状态(deleteStatus) | 状态值 | 状态名称 | 说明 | |--------|---------|------| | 0 | 正常 | 正常状态 | | 1 | 待删除审核 | 第三方申请删除,等待超级管理员审核 | | 2 | 已删除 | 已删除(软删除) | --- ## 🔄 业务流程 ### 1. 第三方上传书籍流程 ``` 第三方在小程序端上传书籍 ↓ POST /api/app/third-party/content ↓ 设置状态:auditStatus=0(待审核),isVisible=0(隐藏) ↓ 等待超级管理员审核 ↓ 超级管理员在后端审核 ↓ 通过:auditStatus=1,isVisible=1(上架) 驳回:auditStatus=2,记录rejectReason ``` ### 2. 第三方编辑书籍流程 ``` 第三方编辑自己的书籍 ↓ PUT /api/app/third-party/content/{id} ↓ 如果原书籍已通过审核,编辑后需要重新审核 ↓ 设置状态:auditStatus=0(待审核),isVisible=0(隐藏) ↓ 等待超级管理员重新审核 ``` ### 3. 第三方下架书籍流程 ``` 第三方下架自己的书籍 ↓ POST /api/app/third-party/content/{id}/offline ↓ 设置状态:isVisible=0(隐藏) ↓ 用户端不再显示该书籍 ``` ### 4. 第三方上架书籍流程 ``` 第三方上架自己的书籍(仅已通过审核的) ↓ POST /api/app/third-party/content/{id}/online ↓ 设置状态:isVisible=1(可见) ↓ 用户端可以查看该书籍 ``` ### 5. 第三方删除书籍流程 ``` 第三方申请删除书籍 ↓ POST /api/app/third-party/content/{id}/delete-request ↓ 设置状态:deleteStatus=1(待删除审核),isVisible=0(隐藏) ↓ 等待超级管理员审核 ↓ 超级管理员审核删除申请 ↓ 批准:deleteStatus=2(已删除) 拒绝:deleteStatus=0(恢复正常) ``` ### 6. 超级管理员审核流程 ``` 超级管理员查看待审核书籍 ↓ GET /api/admin/content/page?auditStatus=0 ↓ 审核通过: POST /api/admin/content/audit/approve/{id} ↓ 审核驳回: POST /api/admin/content/audit/reject/{id}?rejectReason=理由 ``` --- ## 📁 代码文件位置 ### 实体类 | 文件 | 说明 | |------|------| | `book/src/main/java/com/zhentao/pojo/User.java` | 用户实体,userRole字段已更新 | | `book/src/main/java/com/zhentao/pojo/Content.java` | 内容实体,已添加审核相关字段 | ### Controller | 文件 | 说明 | |------|------| | `book/src/main/java/com/zhentao/controller/AdminController.java` | 管理员登录(只允许超级管理员) | | `book/src/main/java/com/zhentao/controller/UserAuthController.java` | 用户登录(允许普通用户和第三方) | | `book/src/main/java/com/zhentao/controller/ContentController.java` | 超级管理员内容管理 | | `book/src/main/java/com/zhentao/controller/ContentAuditController.java` | **新增**:书籍审核功能 | | `book/src/main/java/com/zhentao/controller/app/ThirdPartyContentController.java` | **新增**:第三方内容管理 | | `book/src/main/java/com/zhentao/controller/app/AppContentController.java` | 小程序端内容查询(已过滤) | ### Service | 文件 | 说明 | |------|------| | `book/src/main/java/com/zhentao/service/ContentService.java` | 内容服务接口 | | `book/src/main/java/com/zhentao/service/impl/ContentServiceImpl.java` | 内容服务实现(已添加筛选逻辑) | ### 工具类 | 文件 | 说明 | |------|------| | `book/src/main/java/com/zhentao/common/AdminSessionUtil.java` | 管理员Session工具(已更新) | --- ## 🔌 API接口说明 ### 第三方接口(小程序端) #### 1. 上传书籍 ``` POST /api/app/third-party/content Authorization: Bearer {token} Content-Type: application/json { "title": "书名", "author": "作者", "categoryId": 1, "coverUrl": "封面URL", "description": "简介", "contentType": 1, ... } ``` #### 2. 编辑书籍 ``` PUT /api/app/third-party/content/{id} Authorization: Bearer {token} ``` #### 3. 下架书籍 ``` POST /api/app/third-party/content/{id}/offline Authorization: Bearer {token} ``` #### 4. 上架书籍 ``` POST /api/app/third-party/content/{id}/online Authorization: Bearer {token} ``` #### 5. 申请删除 ``` POST /api/app/third-party/content/{id}/delete-request Authorization: Bearer {token} ``` #### 6. 查看自己的书籍列表 ``` GET /api/app/third-party/content/page?current=1&size=10 Authorization: Bearer {token} ``` #### 7. 查看统计信息 ``` GET /api/app/third-party/content/statistics Authorization: Bearer {token} ``` ### 超级管理员接口(后端Web端) #### 1. 审核通过 ``` POST /api/admin/content/audit/approve/{id} 需要人脸验证 ``` #### 2. 审核驳回 ``` POST /api/admin/content/audit/reject/{id}?rejectReason=驳回理由 需要人脸验证 ``` #### 3. 批准删除申请 ``` POST /api/admin/content/audit/delete-approve/{id} 需要人脸验证 ``` #### 4. 拒绝删除申请 ``` POST /api/admin/content/audit/delete-reject/{id} 需要人脸验证 ``` #### 5. 查看书籍列表(支持筛选) ``` GET /api/admin/content/page?auditStatus=0&deleteStatus=1 auditStatus: 0待审核, 1已通过, 2已驳回 deleteStatus: 0正常, 1待删除审核, 2已删除 ``` --- ## 🗄️ 数据库变更 ### 执行迁移脚本 执行文件:`book/数据库迁移-添加审核字段.sql` 该脚本会: 1. 添加 `publisher_id` 字段(第三方发布者ID) 2. 添加 `audit_status` 字段(审核状态) 3. 添加 `reject_reason` 字段(驳回理由) 4. 添加 `is_visible` 字段(是否可见) 5. 添加 `delete_status` 字段(删除状态) 6. 为现有数据设置默认值 7. 创建索引提高查询性能 --- ## ✅ 功能验证清单 ### 第三方功能 - [ ] 第三方可以在小程序端登录 - [ ] 第三方可以上传书籍(状态为待审核) - [ ] 第三方可以查看自己的书籍列表 - [ ] 第三方可以编辑自己的书籍(编辑后需重新审核) - [ ] 第三方可以下架自己的书籍 - [ ] 第三方可以上架已通过审核的书籍 - [ ] 第三方可以申请删除书籍 - [ ] 第三方可以查看统计信息 ### 超级管理员功能 - [ ] 超级管理员可以登录后端管理端(需人脸验证) - [ ] 超级管理员可以查看所有书籍(支持筛选) - [ ] 超级管理员可以审核通过书籍 - [ ] 超级管理员可以驳回书籍(需填写理由) - [ ] 超级管理员可以批准删除申请 - [ ] 超级管理员可以拒绝删除申请 - [ ] 超级管理员可以直接删除书籍 ### 小程序端用户功能 - [ ] 用户只能看到已通过审核且已上架的书籍 - [ ] 用户看不到待审核、已驳回、已下架的书籍 - [ ] 用户看不到已删除的书籍 --- ## 🔒 权限说明 ### 第三方权限 - ✅ 只能操作自己上传的书籍(通过publisherId验证) - ✅ 上传的书籍默认待审核 - ✅ 编辑已通过审核的书籍后需要重新审核 - ✅ 删除需要超级管理员审核 - ❌ 不能直接删除书籍 - ❌ 不能操作其他第三方的书籍 ### 超级管理员权限 - ✅ 可以审核所有第三方上传的书籍 - ✅ 可以直接删除任何书籍 - ✅ 可以审核删除申请 - ✅ 可以查看所有书籍(包括待审核、已驳回等) - ✅ 发布的内容自动通过审核并上架 --- ## 📝 注意事项 1. **数据库迁移**:执行迁移脚本前请备份数据库 2. **现有数据**:迁移脚本会将现有数据设置为已通过审核状态 3. **人脸验证**:超级管理员的所有审核操作都需要人脸验证 4. **软删除**:删除操作是软删除,数据不会真正删除 5. **权限验证**:所有接口都有严格的权限验证 --- **文档版本:** v1.0 **最后更新:** 2024年