|
|
@@ -0,0 +1,429 @@
|
|
|
+# 报告厅预约审核 API 文档
|
|
|
+
|
|
|
+## 文档信息
|
|
|
+
|
|
|
+- **文档名称**: 报告厅预约审核 API 文档
|
|
|
+- **创建时间**: 2025-01-09
|
|
|
+- **维护负责人**: 开发团队
|
|
|
+- **最后更新**: 2025-01-09 16:30:00
|
|
|
+
|
|
|
+## 概述
|
|
|
+
|
|
|
+报告厅预约审核模块提供专门的报告厅预约审核功能 API 接口,包括审核建议生成、时间冲突检查、批量审核等核心功能。该模块主要面向管理员用户,用于对用户提交的报告厅预约申请进行审核处理。
|
|
|
+
|
|
|
+### 核心功能
|
|
|
+
|
|
|
+- 📋 **预约列表查询**:查询待审核和已审核的报告厅预约申请
|
|
|
+- 🔍 **时间冲突检查**:智能检测预约时间是否与已批准的预约冲突
|
|
|
+- 💡 **审核建议生成**:基于时间冲突检查结果自动生成审核建议
|
|
|
+- ✅ **批量审核处理**:支持批准/拒绝单个或多个预约申请
|
|
|
+- 📊 **审核记录管理**:记录审核人、审核时间、审核备注等详细信息
|
|
|
+
|
|
|
+### 技术特点
|
|
|
+
|
|
|
+- **智能冲突检测**:精确的时间重叠算法,避免预约冲突
|
|
|
+- **批量操作支持**:高效处理多个预约的审核操作
|
|
|
+- **权限控制严格**:完整的权限验证机制
|
|
|
+- **日志记录完整**:详细的操作日志和审核轨迹
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 🔐 基础规范
|
|
|
+
|
|
|
+### 请求头规范
|
|
|
+
|
|
|
+所有需要认证的接口都必须在请求头中携带:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "Authorization": "Bearer {access_token}",
|
|
|
+ "clientid": "e5cd7e4891bf95d1d19206ce24a7b32e",
|
|
|
+ "Content-Type": "application/json;charset=utf-8",
|
|
|
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
|
|
|
+ "referer": "http://localhost/login?redirect=%252Findex"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 响应格式规范
|
|
|
+
|
|
|
+- **分页列表**: TableDataInfo 格式 (total, rows, code, msg)
|
|
|
+- **非分页接口**: R 类型格式 (code, msg, data)
|
|
|
+- **错误响应**: 统一错误格式
|
|
|
+
|
|
|
+详细规范请参考:[API文档基础规范](./API文档基础规范.md)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 📋 报告厅预约查询 API
|
|
|
+
|
|
|
+### 1. 查询报告厅预约列表
|
|
|
+
|
|
|
+**接口描述**: 查询报告厅预约申请列表,支持多种条件筛选
|
|
|
+**请求方式**: `GET`
|
|
|
+**请求路径**: `/hq/hallReservation/list`
|
|
|
+**权限要求**: `hq:hallReservation:list`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|
|
|
+| ------------- | ------- | ---- | ---------------------------------- | ---------------- |
|
|
|
+| hallName | String | 否 | 报告厅名称(模糊查询) | 第一报告厅 |
|
|
|
+| startTime | String | 否 | 预约开始时间(查询该时间之后的) | 2025-01-10 |
|
|
|
+| endTime | String | 否 | 预约结束时间(查询该时间之前的) | 2025-01-15 |
|
|
|
+| applicantName | String | 否 | 申请人姓名(模糊查询) | 张三 |
|
|
|
+| status | String | 否 | 预约状态(0-审核中 1-已批准 2-已拒绝) | 0 |
|
|
|
+| pageNum | Integer | 否 | 页码,默认1 | 1 |
|
|
|
+| pageSize | Integer | 否 | 每页数量,默认10 | 10 |
|
|
|
+
|
|
|
+#### 响应示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "total": 5,
|
|
|
+ "rows": [
|
|
|
+ {
|
|
|
+ "id": 1234567890123456789,
|
|
|
+ "hallId": 1,
|
|
|
+ "hallName": "第一报告厅",
|
|
|
+ "applicantId": 987654321,
|
|
|
+ "applicantName": "张三",
|
|
|
+ "applicantPhone": "13800138000",
|
|
|
+ "startTime": "2025-01-15 09:00:00",
|
|
|
+ "endTime": "2025-01-15 12:00:00",
|
|
|
+ "reservationPurpose": "学术讲座 - 人工智能发展趋势",
|
|
|
+ "status": "0",
|
|
|
+ "auditBy": null,
|
|
|
+ "auditName": null,
|
|
|
+ "auditTime": null,
|
|
|
+ "auditRemark": null,
|
|
|
+ "createTime": "2025-01-09 14:30:00"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "code": 200,
|
|
|
+ "msg": "查询成功"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 获取报告厅预约详情
|
|
|
+
|
|
|
+**接口描述**: 获取指定预约申请的详细信息
|
|
|
+**请求方式**: `GET`
|
|
|
+**请求路径**: `/hq/hallReservation/{id}`
|
|
|
+**权限要求**: `hq:hallReservation:query`
|
|
|
+
|
|
|
+#### 路径参数
|
|
|
+
|
|
|
+| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|
|
|
+| ------ | ---- | ---- | ------- | ----------------- |
|
|
|
+| id | Long | 是 | 预约 ID | 1234567890123456789 |
|
|
|
+
|
|
|
+#### 响应示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 200,
|
|
|
+ "msg": "操作成功",
|
|
|
+ "data": {
|
|
|
+ "id": 1234567890123456789,
|
|
|
+ "hallId": 1,
|
|
|
+ "hallName": "第一报告厅",
|
|
|
+ "applicantId": 987654321,
|
|
|
+ "applicantName": "张三",
|
|
|
+ "applicantPhone": "13800138000",
|
|
|
+ "startTime": "2025-01-15 09:00:00",
|
|
|
+ "endTime": "2025-01-15 12:00:00",
|
|
|
+ "reservationPurpose": "学术讲座 - 人工智能发展趋势",
|
|
|
+ "status": "0",
|
|
|
+ "auditBy": null,
|
|
|
+ "auditName": null,
|
|
|
+ "auditTime": null,
|
|
|
+ "auditRemark": null,
|
|
|
+ "createTime": "2025-01-09 14:30:00"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 🔍 时间冲突检查 API
|
|
|
+
|
|
|
+### 检查报告厅预约时间冲突
|
|
|
+
|
|
|
+**接口描述**: 检查指定报告厅在指定时间段内是否存在已批准的预约冲突
|
|
|
+**请求方式**: `POST`
|
|
|
+**请求路径**: `/hq/hallReservation/checkTimeConflict`
|
|
|
+**权限要求**: `hq:hallReservation:query`
|
|
|
+
|
|
|
+#### 请求体
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "hallId": 1,
|
|
|
+ "startTime": "2025-01-15 09:00:00",
|
|
|
+ "endTime": "2025-01-15 12:00:00",
|
|
|
+ "excludeId": 1234567890123456789
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 请求参数说明
|
|
|
+
|
|
|
+| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|
|
|
+| --------- | ---- | ---- | --------------------------------------- | --------------------- |
|
|
|
+| hallId | Long | 是 | 报告厅ID | 1 |
|
|
|
+| startTime | Date | 是 | 预约开始时间(格式:yyyy-MM-dd HH:mm:ss) | 2025-01-15 09:00:00 |
|
|
|
+| endTime | Date | 是 | 预约结束时间(格式:yyyy-MM-dd HH:mm:ss) | 2025-01-15 12:00:00 |
|
|
|
+| excludeId | Long | 否 | 排除的预约ID(编辑时排除自己) | 1234567890123456789 |
|
|
|
+
|
|
|
+#### 响应示例
|
|
|
+
|
|
|
+**无冲突时:**
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 200,
|
|
|
+ "msg": "操作成功",
|
|
|
+ "data": {
|
|
|
+ "hasConflict": false,
|
|
|
+ "conflictList": [],
|
|
|
+ "conflictMessage": "无时间冲突"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**有冲突时:**
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 200,
|
|
|
+ "msg": "操作成功",
|
|
|
+ "data": {
|
|
|
+ "hasConflict": true,
|
|
|
+ "conflictList": [
|
|
|
+ {
|
|
|
+ "id": 1234567890123456790,
|
|
|
+ "hallId": 1,
|
|
|
+ "hallName": "第一报告厅",
|
|
|
+ "applicantName": "李四",
|
|
|
+ "applicantPhone": "13900139000",
|
|
|
+ "startTime": "2025-01-15 10:00:00",
|
|
|
+ "endTime": "2025-01-15 13:00:00",
|
|
|
+ "reservationPurpose": "企业宣讲会",
|
|
|
+ "status": "1",
|
|
|
+ "auditName": "管理员",
|
|
|
+ "auditTime": "2025-01-14 15:30:00"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "conflictMessage": "发现 1 个时间冲突的已批准预约"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 时间冲突判定规则
|
|
|
+
|
|
|
+两个时间段存在冲突的条件:
|
|
|
+1. 新预约开始时间 < 已存在预约结束时间
|
|
|
+2. 新预约结束时间 > 已存在预约开始时间
|
|
|
+
|
|
|
+即:`startTime < existingEndTime AND endTime > existingStartTime`
|
|
|
+
|
|
|
+#### 冲突检查逻辑
|
|
|
+
|
|
|
+1. **同一报告厅**:只检查相同报告厅ID的预约
|
|
|
+2. **已批准状态**:只检查状态为"1"(已批准)的预约
|
|
|
+3. **排除自身**:修改预约时可以通过excludeId排除自身
|
|
|
+4. **精确匹配**:使用数据库时间比较,确保检查准确性
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## ✅ 报告厅预约审核 API
|
|
|
+
|
|
|
+### 批量审核报告厅预约
|
|
|
+
|
|
|
+**接口描述**: 批量批准或拒绝报告厅预约申请
|
|
|
+**请求方式**: `PUT`
|
|
|
+**请求路径**: `/hq/hallReservation/audit`
|
|
|
+**权限要求**: `hq:hallReservation:audit`
|
|
|
+
|
|
|
+#### 请求体
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ids": [1234567890123456789, 1234567890123456790],
|
|
|
+ "status": "1",
|
|
|
+ "auditRemark": "审核通过,请按时使用报告厅"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 请求参数说明
|
|
|
+
|
|
|
+| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|
|
|
+| ----------- | ---------- | ---- | ------------------------------ | ----------------------------------------------- |
|
|
|
+| ids | Long[] | 是 | 要审核的预约ID数组 | [1234567890123456789, 1234567890123456790] |
|
|
|
+| status | String | 是 | 审核状态(1-批准 2-拒绝) | 1 |
|
|
|
+| auditRemark | String | 否 | 审核备注(拒绝时建议填写原因) | 审核通过,请按时使用报告厅 |
|
|
|
+
|
|
|
+#### 响应示例
|
|
|
+
|
|
|
+**成功时:**
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 200,
|
|
|
+ "msg": "操作成功"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**失败时:**
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 500,
|
|
|
+ "msg": "审核失败,请稍后重试"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 审核业务逻辑
|
|
|
+
|
|
|
+1. **状态检查**:只有状态为"0"(审核中)的预约可以被审核
|
|
|
+2. **权限验证**:必须具有`hq:hallReservation:audit`权限
|
|
|
+3. **审核信息记录**:
|
|
|
+ - auditBy:当前登录用户ID
|
|
|
+ - auditName:当前登录用户姓名
|
|
|
+ - auditTime:当前系统时间
|
|
|
+ - auditRemark:审核备注
|
|
|
+4. **批量操作**:支持一次审核多个预约,保证操作的原子性
|
|
|
+
|
|
|
+#### 审核状态说明
|
|
|
+
|
|
|
+| 状态值 | 状态名称 | 说明 |
|
|
|
+| ------ | -------- | ---------------------- |
|
|
|
+| 0 | 审核中 | 用户提交,等待审核 |
|
|
|
+| 1 | 已批准 | 管理员审核通过 |
|
|
|
+| 2 | 已拒绝 | 管理员审核拒绝 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 📊 数据字典
|
|
|
+
|
|
|
+### 预约状态 (hall_reserv_status)
|
|
|
+
|
|
|
+| 字典值 | 字典标签 | 说明 | 颜色标识 |
|
|
|
+| ------ | -------- | ------------ | -------- |
|
|
|
+| 0 | 审核中 | 待管理员审核 | 橙色 |
|
|
|
+| 1 | 已批准 | 审核通过 | 绿色 |
|
|
|
+| 2 | 已拒绝 | 审核拒绝 | 红色 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 🔒 权限配置
|
|
|
+
|
|
|
+### 接口权限要求
|
|
|
+
|
|
|
+| 接口 | 权限标识 | 说明 |
|
|
|
+| ----------------------------- | --------------------------- | -------------- |
|
|
|
+| 查询报告厅预约列表 | hq:hallReservation:list | 列表查询权限 |
|
|
|
+| 获取报告厅预约详情 | hq:hallReservation:query | 详情查询权限 |
|
|
|
+| 检查报告厅预约时间冲突 | hq:hallReservation:query | 详情查询权限 |
|
|
|
+| 批量审核报告厅预约 | hq:hallReservation:audit | 审核操作权限 |
|
|
|
+
|
|
|
+### 权限配置SQL
|
|
|
+
|
|
|
+参考文件:`docs/设计文档/database/hall-audit-permission.sql`
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 💡 开发建议
|
|
|
+
|
|
|
+### 前端集成建议
|
|
|
+
|
|
|
+1. **审核建议显示**:
|
|
|
+ - 调用时间冲突检查接口
|
|
|
+ - 根据返回结果显示审核建议
|
|
|
+ - 冲突时显示警告图标和冲突详情
|
|
|
+
|
|
|
+2. **批量操作优化**:
|
|
|
+ - 支持全选/反选功能
|
|
|
+ - 批量操作前进行确认提示
|
|
|
+ - 操作结果统一反馈
|
|
|
+
|
|
|
+3. **用户体验优化**:
|
|
|
+ - 实时冲突检查
|
|
|
+ - 操作loading状态
|
|
|
+ - 详细的错误提示
|
|
|
+
|
|
|
+### 后端开发注意事项
|
|
|
+
|
|
|
+1. **时间处理**:
|
|
|
+ - 统一使用数据库时间进行比较
|
|
|
+ - 注意时区处理
|
|
|
+ - 精确到秒级别
|
|
|
+
|
|
|
+2. **并发控制**:
|
|
|
+ - 审核操作加锁机制
|
|
|
+ - 防止重复审核
|
|
|
+ - 事务一致性保证
|
|
|
+
|
|
|
+3. **日志记录**:
|
|
|
+ - 详细的操作日志
|
|
|
+ - 异常情况记录
|
|
|
+ - 性能监控
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 🐛 常见问题
|
|
|
+
|
|
|
+### Q1: 时间冲突检查不准确怎么办?
|
|
|
+
|
|
|
+**A**: 检查以下几点:
|
|
|
+1. 确认时间格式是否正确(yyyy-MM-dd HH:mm:ss)
|
|
|
+2. 检查数据库中的时间数据是否准确
|
|
|
+3. 确认冲突检查的SQL逻辑是否正确
|
|
|
+4. 检查是否正确排除了指定的预约ID
|
|
|
+
|
|
|
+### Q2: 批量审核部分失败怎么处理?
|
|
|
+
|
|
|
+**A**:
|
|
|
+1. 后端使用事务确保原子性
|
|
|
+2. 如果部分失败,整个操作回滚
|
|
|
+3. 返回具体的失败原因
|
|
|
+4. 前端提示用户重新操作
|
|
|
+
|
|
|
+### Q3: 审核权限验证失败?
|
|
|
+
|
|
|
+**A**:
|
|
|
+1. 检查用户是否具有`hq:hallReservation:audit`权限
|
|
|
+2. 确认权限配置SQL是否正确执行
|
|
|
+3. 检查角色权限分配是否正确
|
|
|
+4. 确认Token是否有效
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 📝 版本记录
|
|
|
+
|
|
|
+### v1.0.0 (2025-01-09)
|
|
|
+
|
|
|
+**新增功能**:
|
|
|
+- ✨ 报告厅预约时间冲突检查接口
|
|
|
+- ✨ 智能审核建议生成功能
|
|
|
+- ✨ 批量审核处理功能
|
|
|
+- ✨ 完整的权限控制机制
|
|
|
+- ✨ 详细的审核记录管理
|
|
|
+
|
|
|
+**技术特点**:
|
|
|
+- 🔍 精确的时间重叠检测算法
|
|
|
+- 📊 批量操作支持
|
|
|
+- 🔒 严格的权限验证
|
|
|
+- 📝 完整的操作日志
|
|
|
+
|
|
|
+**API接口**:
|
|
|
+- GET `/hq/hallReservation/list` - 查询预约列表
|
|
|
+- GET `/hq/hallReservation/{id}` - 获取预约详情
|
|
|
+- POST `/hq/hallReservation/checkTimeConflict` - 检查时间冲突
|
|
|
+- PUT `/hq/hallReservation/audit` - 批量审核预约
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**📝 维护人**: 开发团队
|
|
|
+**🔄 最后更新**: 2025-01-09 16:30:00
|
|
|
+**📁 文件位置**: `docs/开发文档/API/报告厅预约审核API.md`
|
|
|
+**🎯 相关文档**: [API文档基础规范](./API文档基础规范.md) | [API文档总览](./API文档总览.md)
|