zcloud_gbs_xinyi_gate/docs/接口开发文档.md

395 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 新益门禁后端接口开发文档
## 接口总览
| 编号 | 接口 | 方法 | 路径 | 模块 |
|------|------|------|------|------|
| 1 | 获取部门审核人/审批人/确认人列表 | POST | `/deptAuditor/list` | DeptAuditor |
| 2 | 设置审核人/审批人/确认人 | POST | `/deptAuditor/save` | DeptAuditor |
| 3 | 获取来访申请列表 | POST | `/visitorApply/page` | VisitorApply |
| 4 | 新增来访申请 | POST | `/visitorApply/add` | VisitorApply |
| 5 | 删除来访申请 | POST | `/visitorApply/remove` | VisitorApply |
| 6 | 进场/出场确认 | POST | `/visitorApply/confirm` | VisitorApply |
| 7 | 新增黑名单 | POST | `/blacklist/add` | Blacklist |
| 8 | 获取黑名单列表 | POST | `/blacklist/page` | Blacklist |
| 9 | 删除黑名单 | POST | `/blacklist/remove` | Blacklist |
---
## 接口1获取部门审核人/审批人/确认人列表
### 请求
```
POST /deptAuditor/list
```
### 入参 `DeptAuditorListQry`
| 字段 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| deptId | String | 否 | 部门名称(模糊筛选) |
### 出参 `List<DeptAuditorCO>`
| 字段 | 类型 | 说明 |
|------|------|------|
| deptId | Long | 部门ID |
| deptName | String | 部门名称 |
| deptLevel | String | 部门级别 |
| leaderName | String | 主管领导 |
| headName | String | 部门负责人 |
| auditors | List<AuditorItemCO> | 审核人列表 |
| approvers | List<AuditorItemCO> | 审批人列表 |
| confirmers | List<AuditorItemCO> | 确认人列表 |
### `AuditorItemCO`
| 字段 | 类型 | 说明 |
|----------|--------|--------|
| id | Long | 主键id |
| configId | String | 配置UUID |
| userId | Long | 用户ID |
| userName | String | 用户姓名 |
### 逻辑说明
1. 查询部门列表(需调用外部部门服务获取部门名称、级别、主管领导、负责人信息)
2. 按部门ID分组查询 `gate_dept_auditor_config`,按 `config_type` 拆分为审核人/审批人/确认人
3. 组装返回,每个部门一行,三种人员作为子列表
---
## 接口2设置审核人/审批人/确认人
### 请求
```
POST /deptAuditor/save
```
### 入参 `DeptAuditorSaveCmd`
| 字段 | 类型 | 必填 | 说明 |
|------|------------|------|------|
| deptId | Long | 是 | 部门ID |
| configType | Integer | 是 | 配置类型1-审核人 2-审批人 3-确认人 |
| userList | List<Long> | 是 | 相关人员数组(可多个) |
### 逻辑说明
1. 每次只更新一种类型configType
2. 先删除该部门该类型的所有旧配置:`DELETE FROM gate_dept_auditor_config WHERE dept_id = ? AND config_type = ?`
3. 批量插入新配置,每条记录生成 `config_id` UUID
4. 事务保证原子性
---
## 接口3获取外来人员/外来车辆管理列表
### 请求
```
POST /visitorApply/page
```
### 入参 `VisitorApplyPageQry`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| pageIndex | Integer | 否 | 页码默认1 |
| pageSize | Integer | 否 | 每页条数默认10 |
| sourceUnit | String | 否 | 来源单位(模糊筛选) |
| statusList | List<Integer> | 否 | 状态列表(多选筛选) |
| applyStartTime | String | 否 | 申请时间起yyyy-MM-dd |
| applyEndTime | String | 否 | 申请时间止yyyy-MM-dd |
### 出参 `PageData<VisitorApplyCO>`
| 字段 | 类型 | 说明 |
|------|------|------|
| visitorApplyId | String | 业务主键UUID |
| applyType | Integer | 申请类型1-外来人员 2-外来车辆 |
| sourceUnit | String | 来源单位 |
| visitorCount | Integer | 入场人数 |
| applyStartTime | String | 申请开始时间 |
| applyEndTime | String | 申请结束时间 |
| licensePlate | String | 车牌号 |
| vehicleType | String | 车型 |
| purpose | String | 入场事由 |
| applySourceDesc | String | 申请来源(来源类型 + 部门名称 + 人员名称) |
| status | Integer | 状态 |
### 逻辑说明
1. 分页查询 `gate_visitor_apply`,支持来源单位模糊、状态多选、申请时间范围筛选
2. `applySourceDesc` 拼接逻辑:申请来源类型(PC端/扫码) + 申请部门名称 + 申请人姓名,需关联部门服务和用户服务
3. 状态枚举0未提交 1待审核 2待审批 3待确认 4已进场 5已出场 6已打回 7待归档 8已归档 9已过期
---
## 接口4新增外来人员/外来车辆管理
### 请求
```
POST /visitorApply/add
```
### 入参 `VisitorApplyAddCmd`
| 字段 | 类型 | 必填 | 说明 |
|----------------|------------------------|------|---------------------|
| applyType | Integer | 是 | 申请类型1-外来人员 2-外来车辆 |
| sourceUnit | String | 是 | 来源单位 |
| visitorCount | Integer | 否 | 入场人数 |
| licensePlate | String | 条件必填 | 车牌号applyType=2时必填 |
| vehicleType | String | 否 | 车型applyType=2时填写 |
| purpose | String | 是 | 入场事由 |
| applyStartTime | String | 是 | 申请开始时间 |
| applyEndTime | String | 是 | 申请结束时间 |
| auditDeptId | Long | 是 | 审批部门ID |
| personList | List<VisitorPersonCmd> | 是 | 人员列表(姓名+手机号,可多条) |
| status | Intger | 是 | 状态 |
### `VisitorPersonCmd`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| name | String | 是 | 姓名 |
| phone | String | 是 | 手机号 |
### 逻辑说明
1. 生成 `visitor_apply_id` UUID插入 `gate_visitor_apply`
2. `person_type` 自动设置applyType=1时为1(来访人员)applyType=2时为2(车内人员)
3. 批量插入 `gate_visitor_person`,每条生成 `visitor_person_id` UUID
4. 校验黑名单遍历personList中的姓名+手机号查 `gate_blacklist`(blacklist_type=1),以及车牌号查 `gate_blacklist`(blacklist_type=2),命中则提示
5. 状态初始为 0(未提交)
---
## 接口5删除外来人员/外来车辆管理
### 请求
```
POST /visitorApply/remove
```
### 入参 `VisitorApplyRemoveCmd`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| visitorApplyId | String | 是 | 业务主键UUID |
### 逻辑说明
1. 逻辑删除 `gate_visitor_apply`:设置 `delete_enum = 'true'`
2. 同时逻辑删除关联的 `gate_visitor_person`:按 `visitor_apply_id` 设置 `delete_enum = 'true'`
---
## 接口6进场/出场确认
### 请求
```
POST /visitorApply/confirm
```
### 入参 `VisitorApplyConfirmCmd`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| visitorApplyId | String | 是 | 业务主键UUID |
| confirmType | Integer | 是 | 确认类型1-进场 2-出场 |
### 逻辑说明
1. 根据 `visitorApplyId` 查询申请记录,校验存在且未删除
2. 进场确认(confirmType=1)状态必须为3(待确认)确认后改为4(已进场)
3. 出场确认(confirmType=2)状态必须为4(已进场)确认后改为5(已出场)
4. 同时插入一条 `gate_visitor_audit` 审核记录,`audit_type=3`(现场确认)`audit_result=1`(通过)
---
## 接口7新增黑名单
### 请求
```
POST /blacklist/add
```
### 入参 `BlacklistAddCmd`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| blacklistType | Integer | 是 | 黑名单类型1-人员 2-车辆 |
| name | String | 条件必填 | 姓名blacklistType=1时必填 |
| phone | String | 条件必填 | 手机号blacklistType=1时必填 |
| licensePlate | String | 条件必填 | 车牌号blacklistType=2时必填 |
| affiliatedUnit | String | 否 | 所属单位 |
### 逻辑说明
1. 生成 `blacklist_id` UUID
2. `join_time` 自动设置为当前时间
3. `added_by_id` 自动取当前登录用户ID
4. 校验重复:人员黑名单按姓名+手机号查重,车辆黑名单按车牌号查重(同一租户下)
---
## 接口8获取黑名单列表
### 请求
```
POST /blacklist/page
```
### 入参 `BlacklistPageQry`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| pageIndex | Integer | 否 | 页码默认1 |
| pageSize | Integer | 否 | 每页条数默认10 |
| blacklistType | Integer | 是 | 黑名单类型1-人员 2-车辆 |
| name | String | 否 | 姓名(模糊筛选) |
| phone | String | 否 | 手机号(模糊筛选) |
| status | Integer | 否 | 状态1-启用 0-禁用 |
| affiliatedUnit | String | 否 | 所属单位(模糊筛选) |
| licensePlate | String | 否 | 车牌号(模糊筛选) |
### 出参 `PageData<BlacklistCO>`
| 字段 | 类型 | 说明 |
|------|------|------|
| blacklistId | String | 业务主键UUID |
| blacklistType | Integer | 类型1-人员 2-车辆 |
| name | String | 姓名 |
| phone | String | 手机号 |
| licensePlate | String | 车牌号 |
| affiliatedUnit | String | 所属单位 |
| joinTime | String | 加入时间 |
| addedByName | String | 添加人 |
| status | Integer | 状态 |
### 逻辑说明
1.`blacklist_type` 必选筛选
2. 支持姓名、手机号、车牌号、所属单位模糊筛选,状态精确筛选
3. `addedByName` 通过 `added_by_id` 关联用户服务获取
---
## 接口9删除黑名单
### 请求
```
POST /blacklist/remove
```
### 入参 `BlacklistRemoveCmd`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| blacklistId | String | 是 | 业务主键UUID |
### 逻辑说明
1. 逻辑删除:设置 `delete_enum = 'true'`
---
## 文件清单
按开发指南的分层架构,以下为需要创建的所有文件:
### 模块一DeptAuditor部门审核人配置
| 层 | 文件路径 |
|----|---------|
| client | `dto/deptAuditor/DeptAuditorListQry.java` |
| client | `dto/deptAuditor/DeptAuditorSaveCmd.java` |
| client | `dto/deptAuditor/AuditorItemCmd.java` |
| client | `dto/clientobject/deptAuditor/DeptAuditorCO.java` |
| client | `dto/clientobject/deptAuditor/AuditorItemCO.java` |
| client | `api/deptAuditor/DeptAuditorServiceI.java` |
| domain | `domain/model/deptAuditor/DeptAuditorE.java` |
| domain | `domain/gateway/deptAuditor/DeptAuditorGateway.java` |
| infrastructure | `persistence/dataobject/deptAuditor/DeptAuditorConfigDO.java` |
| infrastructure | `persistence/mapper/deptAuditor/DeptAuditorConfigMapper.java` |
| infrastructure | `resources/mapper/deptAuditor/DeptAuditorConfigMapper.xml` |
| infrastructure | `gatewayimpl/deptAuditor/DeptAuditorGatewayImpl.java` |
| app | `command/deptAuditor/DeptAuditorSaveExe.java` |
| app | `command/query/deptAuditor/DeptAuditorQueryExe.java` |
| app | `service/deptAuditor/DeptAuditorServiceImpl.java` |
| adapter | `web/deptAuditor/DeptAuditorController.java` |
### 模块二VisitorApply来访申请
| 层 | 文件路径 |
|----|---------|
| client | `dto/visitorApply/VisitorApplyAddCmd.java` |
| client | `dto/visitorApply/VisitorApplyRemoveCmd.java` |
| client | `dto/visitorApply/VisitorApplyConfirmCmd.java` |
| client | `dto/visitorApply/VisitorApplyPageQry.java` |
| client | `dto/visitorApply/VisitorPersonCmd.java` |
| client | `dto/clientobject/visitorApply/VisitorApplyCO.java` |
| client | `api/visitorApply/VisitorApplyServiceI.java` |
| domain | `domain/model/visitorApply/VisitorApplyE.java` |
| domain | `domain/model/visitorApply/VisitorPersonE.java` |
| domain | `domain/gateway/visitorApply/VisitorApplyGateway.java` |
| domain | `domain/gateway/visitorApply/VisitorPersonGateway.java` |
| infrastructure | `persistence/dataobject/visitorApply/VisitorApplyDO.java` |
| infrastructure | `persistence/dataobject/visitorApply/VisitorPersonDO.java` |
| infrastructure | `persistence/mapper/visitorApply/VisitorApplyMapper.java` |
| infrastructure | `persistence/mapper/visitorApply/VisitorPersonMapper.java` |
| infrastructure | `resources/mapper/visitorApply/VisitorApplyMapper.xml` |
| infrastructure | `resources/mapper/visitorApply/VisitorPersonMapper.xml` |
| infrastructure | `gatewayimpl/visitorApply/VisitorApplyGatewayImpl.java` |
| infrastructure | `gatewayimpl/visitorApply/VisitorPersonGatewayImpl.java` |
| app | `command/visitorApply/VisitorApplyAddExe.java` |
| app | `command/visitorApply/VisitorApplyRemoveExe.java` |
| app | `command/visitorApply/VisitorApplyConfirmExe.java` |
| app | `command/query/visitorApply/VisitorApplyQueryExe.java` |
| app | `service/visitorApply/VisitorApplyServiceImpl.java` |
| adapter | `web/visitorApply/VisitorApplyController.java` |
### 模块三Blacklist黑名单
| 层 | 文件路径 |
|----|---------|
| client | `dto/blacklist/BlacklistAddCmd.java` |
| client | `dto/blacklist/BlacklistRemoveCmd.java` |
| client | `dto/blacklist/BlacklistPageQry.java` |
| client | `dto/clientobject/blacklist/BlacklistCO.java` |
| client | `api/blacklist/BlacklistServiceI.java` |
| domain | `domain/model/blacklist/BlacklistE.java` |
| domain | `domain/gateway/blacklist/BlacklistGateway.java` |
| infrastructure | `persistence/dataobject/blacklist/BlacklistDO.java` |
| infrastructure | `persistence/mapper/blacklist/BlacklistMapper.java` |
| infrastructure | `resources/mapper/blacklist/BlacklistMapper.xml` |
| infrastructure | `gatewayimpl/blacklist/BlacklistGatewayImpl.java` |
| app | `command/blacklist/BlacklistAddExe.java` |
| app | `command/blacklist/BlacklistRemoveExe.java` |
| app | `command/query/blacklist/BlacklistQueryExe.java` |
| app | `service/blacklist/BlacklistServiceImpl.java` |
| adapter | `web/blacklist/BlacklistController.java` |
---
## 状态流转图
```
0未提交 → 1待审核 → 2待审批 → 3待确认 → 4已进场 → 5已出场
↑ ↑ ↑
└──── 6已打回任一环节拒绝 ────┘
7待归档 → 8已归档
9已过期申请时间过期自动标记
```