13 KiB
报告厅预约审核 API 文档
文档信息
- 文档名称: 报告厅预约审核 API 文档
- 创建时间: 2025-01-09
- 维护负责人: 开发团队
- 最后更新: 2025-01-09 16:30:00
概述
报告厅预约审核模块提供专门的报告厅预约审核功能 API 接口,包括审核建议生成、时间冲突检查、批量审核等核心功能。该模块主要面向管理员用户,用于对用户提交的报告厅预约申请进行审核处理。
核心功能
- 📋 预约列表查询:查询待审核和已审核的报告厅预约申请
- 🔍 时间冲突检查:智能检测预约时间是否与已批准的预约冲突
- 💡 审核建议生成:基于时间冲突检查结果自动生成审核建议
- ✅ 批量审核处理:支持批准/拒绝单个或多个预约申请
- 📊 审核记录管理:记录审核人、审核时间、审核备注等详细信息
技术特点
- 智能冲突检测:精确的时间重叠算法,避免预约冲突
- 批量操作支持:高效处理多个预约的审核操作
- 权限控制严格:完整的权限验证机制
- 日志记录完整:详细的操作日志和审核轨迹
🔐 基础规范
请求头规范
所有需要认证的接口都必须在请求头中携带:
{
"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
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 |
响应示例
{
"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 |
响应示例
{
"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
请求体
{
"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 |
响应示例
无冲突时:
{
"code": 200,
"msg": "操作成功",
"data": {
"hasConflict": false,
"conflictList": [],
"conflictMessage": "无时间冲突"
}
}
有冲突时:
{
"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 个时间冲突的已批准预约"
}
}
时间冲突判定规则
两个时间段存在冲突的条件:
- 新预约开始时间 < 已存在预约结束时间
- 新预约结束时间 > 已存在预约开始时间
即:startTime < existingEndTime AND endTime > existingStartTime
冲突检查逻辑
- 同一报告厅:只检查相同报告厅ID的预约
- 已批准状态:只检查状态为"1"(已批准)的预约
- 排除自身:修改预约时可以通过excludeId排除自身
- 精确匹配:使用数据库时间比较,确保检查准确性
✅ 报告厅预约审核 API
批量审核报告厅预约
接口描述: 批量批准或拒绝报告厅预约申请
请求方式: PUT
请求路径: /hq/hallReservation/audit
权限要求: hq:hallReservation:audit
请求体
{
"ids": [1234567890123456789, 1234567890123456790],
"status": "1",
"auditRemark": "审核通过,请按时使用报告厅"
}
请求参数说明
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| ids | Long[] | 是 | 要审核的预约ID数组 | [1234567890123456789, 1234567890123456790] |
| status | String | 是 | 审核状态(1-批准 2-拒绝) | 1 |
| auditRemark | String | 否 | 审核备注(拒绝时建议填写原因) | 审核通过,请按时使用报告厅 |
响应示例
成功时:
{
"code": 200,
"msg": "操作成功"
}
失败时:
{
"code": 500,
"msg": "审核失败,请稍后重试"
}
审核业务逻辑
- 状态检查:只有状态为"0"(审核中)的预约可以被审核
- 权限验证:必须具有
hq:hallReservation:audit权限 - 审核信息记录:
- auditBy:当前登录用户ID
- auditName:当前登录用户姓名
- auditTime:当前系统时间
- auditRemark:审核备注
- 批量操作:支持一次审核多个预约,保证操作的原子性
审核状态说明
| 状态值 | 状态名称 | 说明 |
|---|---|---|
| 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
💡 开发建议
前端集成建议
-
审核建议显示:
- 调用时间冲突检查接口
- 根据返回结果显示审核建议
- 冲突时显示警告图标和冲突详情
-
批量操作优化:
- 支持全选/反选功能
- 批量操作前进行确认提示
- 操作结果统一反馈
-
用户体验优化:
- 实时冲突检查
- 操作loading状态
- 详细的错误提示
后端开发注意事项
-
时间处理:
- 统一使用数据库时间进行比较
- 注意时区处理
- 精确到秒级别
-
并发控制:
- 审核操作加锁机制
- 防止重复审核
- 事务一致性保证
-
日志记录:
- 详细的操作日志
- 异常情况记录
- 性能监控
🐛 常见问题
Q1: 时间冲突检查不准确怎么办?
A: 检查以下几点:
- 确认时间格式是否正确(yyyy-MM-dd HH:mm:ss)
- 检查数据库中的时间数据是否准确
- 确认冲突检查的SQL逻辑是否正确
- 检查是否正确排除了指定的预约ID
Q2: 批量审核部分失败怎么处理?
A:
- 后端使用事务确保原子性
- 如果部分失败,整个操作回滚
- 返回具体的失败原因
- 前端提示用户重新操作
Q3: 审核权限验证失败?
A:
- 检查用户是否具有
hq:hallReservation:audit权限 - 确认权限配置SQL是否正确执行
- 检查角色权限分配是否正确
- 确认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文档总览