## 公共参数说明
### 列表分页参数
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|current|int|是|当前页|
|size|int|是|每页的数量|
### 公共返回数据结构
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|code|int|是|成功:200|
|success|boolean|是|成功:true, 失败: false|
|data|int|是|接口返回的业务数据|
|msg|String|是|接口信息|
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### h5接口列表
|接口名称|路径|
|-----|-----|
|医院列表|blade-system/dept-hospital/list-hospital|
|医院文章|blade-business/article/detail-publish|
|用户黑名单验证|blade-business/blacklist/user-blacklist|
|获取已放号天, 用于预约|blade-business/apm-config/already-config-day|
|获取放号列表, 用于预约|blade-business/apm-config/detail-for-apm|
|保存预约|blade-business/apm-record/save|
|查看我的预约|blade-business/apm-record/page|
|取消预约|blade-business/apm-record/cancel|
## 1 公共接口
### 1.1 医院列表
##### URL
`GET` `blade-system/dept-hospital/list-hospital`
##### 请求参数
无
##### 返回数据
```json
{
"code": 200,
"success": true,
"data": [
{
"id": "1623571646250143746",
"fullName": "青岛市海慈医院",
"deptName": "青岛市海慈医院",
"sort": 1,
"remark": "青岛市市南区栖霞路18号",
"imgUrl": "",
"deptCategoryName": "医院"
}
],
"msg": "操作成功"
}
```
### 1.2 医院文章列表
##### URL
`GET` `blade-business/article/page`
##### 请求参数
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|createDept|Long|是|医院Id|
|startTime|String|否|查询开始时间, 格式yyyy-MM-dd|
|endTime|String|否|查询结束时间, 格式yyyy-MM-dd|
|title|String|否|标题, 模糊查询|
```json
{
"code": 200,
"success": true,
"data": {
"records": [
{
"id": "1625033089659109377",
"createDept": "1623571646250143746",
"title": "青岛市海慈医院体检预约须知",
"content": "青岛市海慈医院体检预约须知",
"publishTime": "2023-02-13 15:35:03",
"publishSta": "2"
},
{
"id": "1625035879760461825",
"createDept": "1623571646250143746",
"title": "124",
"content": "1335",
"publishTime": "",
"publishSta": "2"
}
],
"total": 3,
"size": 10,
"current": 1,
"orders": [],
"optimizeCountSql": true,
"searchCount": true,
"countId": "",
"maxLimit": -1,
"pages": 1
},
"msg": "操作成功"
}
```
### 1.3 添加医院文章
##### URL
`GET` `blade-business/article/save`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|title|String|标题|
|content|String|内容|
##### 请求示例
注: content提交前进行html转码, 否则系统会自动进行转码
```json
{
"title": "12243",
"content": "
dfdfd
",
"createDept": "1623571646250143746"
}
```
### 1.4 根据ID获取文章详细
##### URL
`GET` `blade-business/article/detail-by-id`
##### 请求参数
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|id|Long|是|医院Id|
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": {
"id": "1625033089659109377",
"createDept": "1623571646250143746",
"title": "青岛市海慈医院体检预约须知",
"content": "青岛市海慈医院体检预约须知",
"publishTime": "2023-02-13 15:35:03",
"publishSta": "2"
},
"msg": "操作成功"
}
```
### 1.5 根据医院ID获取文章详细
##### URL
`GET` `blade-business/article/detail-publish`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 1.7 发布/取消发布文章
##### URL
`GET` `blade-business/article/publish`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|id|Long|要操作的文章ID|
|publishFlag|String|发布标注, '0':取消发布, '1':发布|
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 1.8 删除文章
##### URL
`GET` `blade-business/article/remove`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|ids|String|要删除文章ID, 多个id以`,`分割|
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 1.9 获取体检项目
##### URL
`GET` `/blade-system/dict-biz/get-hc-project`
##### 请求参数
无
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": [
{
"id": "1625311164313530369",
"tenantId": "000000",
"parentId": "1625308652701380609",
"code": "hc_project",
"dictKey": "1",
"dictValue": "单眼视力",
"sort": 1,
"remark": "单眼视力",
"isSealed": -1,
"isDeleted": -1,
"parentName": "",
"hasChildren": false
}
],
"msg": "操作成功"
}
```
### 1.10 获取医院放号截至时间
##### URL
`GET` `/blade-system/dict-biz/get-apm-config-deadline`
##### 请求参数
无
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": [
{
"id": "1625311864837795842",
"tenantId": "000000",
"parentId": "1625309630708215809",
"code": "hc_apm_config_deadline",
"dictKey": "1",
"dictValue": "7",
"sort": 1,
"remark": "过期时间_唯一配置",
"isSealed": -1,
"isDeleted": -1,
"parentName": "",
"hasChildren": false
}
],
"msg": "操作成功"
}
```
### 1.11 获取系统时间
##### URL
`GET` `/blade-business/common-api/get-system-datetime`
##### 请求参数
无
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": "2023-02-14 16:17:46",
"msg": "操作成功"
}
```
## 2 放号
### 2.1 已放号天列表
##### URL
`GET` `blade-business/apm-config/already-config-day`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|startTime|String|查询开始时间, 格式yyyy-MM-dd|
|endTime|String|查询结束时间, 格式yyyy-MM-dd|
##### 返回数据
```json
{
"code": 200,
"success": true,
"data": [{
"mon": "2023-03",
"days": {
"apmDay": "2023-03-21",
"enableApm": "1"
}
}],
"msg": "操作成功"
}
```
### 2.2 保存放号记录
##### URL
`POST` `blade-business/apm-config/save`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|dayList|List|放号天列表, 时间格式yyyy-MM-dd|
|configListVOS|List|保存对象|
|- createDept|Long|医院Id|
|- project|String|项目|
|- cuAddr|String|体检地址|
|- detailList|List|放号详细|
|- - period|String|时段(上午,下午)|
|- - timeFrame|String|时间范围, 例:9:00-9:30|
|- - numberNum|int|放号数量|
```json
{
"createDept": 102,
"dayList": [
"2023-03-12",
"2023-03-14"
],
"configListVOS": [{
"createDept": 10215,
"project": "视力",
"cuAddr": "三楼眼科",
"apmDay": "2023-03-12",
"detailList": [{
"period": "上午",
"timeFrame": "9:00-9:30",
"numberNum": 5
},
{
"period": "上午",
"timeFrame": "9:30-10:00",
"numberNum": 5
}
]
}]
}
```
### 2.3 获取放号记录详细
##### URL
`GET` `blade-business/apm-config/detail`
##### 请求数据
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|project|String|项目|
|apmDay|String|放号天, 格式yyyy-MM-dd|
```json
[
{
"createDept": 10215,
"project": "视力",
"cuAddr": "三楼眼科",
"apmDay": "2023-03-12",
"period":"上午",
"timeFrame": "9:00-9:30",
"numberNum": 5
},
{
"createDept": 10215,
"project": "视力",
"cuAddr": "三楼眼科",
"apmDay": "2023-03-12",
"period":"上午",
"timeFrame": "9:00-9:30",
"numberNum": 5
}
]
```
### 2.4 放号记录列表
##### URL
`GET` `blade-business/apm-config/page`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|project|String|项目|
|startTime|String|查询开始时间, 格式yyyy-MM-dd|
|endTime|String|查询结束时间, 格式yyyy-MM-dd|
##### 返回示例
```
[
{
"createDept": 10215,
"project": "视力",
"cuAddr": "三楼眼科",
"apmDay": "2023-03-12",
"detailList": [
{
"period":"上午",
"timeFrame": "9:00-9:30",
"numberNum": 5,
"apmNum": 0 // 已预约数
},
{
"period":"上午",
"timeFrame": "9:30-10:00",
"numberNum": 5,
"apmNum": 0
}
]
}
]
```
## 3 预约及报到
### 3.1 检查用户是否可预约-医院
##### 说明
加载体检医院前, 调用接口判断用户是否今天已有预约, 若已有预约, 返回医院列表, 若已加入黑名单, 拒绝预约
备注: 废弃, 无法确定要预约哪天的体检, 故无法判断医院是否可预约
### 3.2 获取医院所有放号的列表
##### 说明
根据时间(天)获取医院的放号列表, 返回结果需携带是否可预约的标记
##### URL
`GET` `blade-business/apm-config/detail-for-apm`
##### 请求数据
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|apmDay|String|放号天, 格式yyyy-MM-dd|
|cupCardNo|String|体检人证件号|
##### 返回示例
```
[
{
"createDept": 10215,
"project": "视力",
"cuAddr": "三楼眼科",
"apmDay": "2023-03-12",
"totalNum" : 10, // 总号数
"totalApmNum": 0, // 总预约数
"detailList": [
{
"period":"上午",
"timeFrame": "9:00-9:30",
"numberNum": 5,
"apmNum": 0,
"residueNum": 0,
"enableApm: 0
},
{
"period":"上午",
"timeFrame": "9:30-10:00",
"numberNum": 5,
"apmNum": 0,
"residueNum": 0, // 剩余号数
"enableApm: 0 // 是否可预约
}
]
}
]
```
### 3.3 预约记录列表
##### URL
`GET` `blade-business/apm-record/page`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|startTime|String|查询开始时间, 格式yyyy-MM-dd|
|endTime|String|查询结束时间, 格式yyyy-MM-dd|
|cupCardNo|String|体检人证件号|
|project|String|体检人证件号|
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": {
"records": [
{
"createDept": "1623571646250143746",
"createDeptName": "青岛市海慈医院",
"apmDay": "2023-02-13 00:00:00",
"cupName": "",
"cupCardNo": "371322199005057920",
"cupPhone": "",
"details": [
{
"id": "1625057233276706818",
"project": "单眼视力",
"cuAddr": "门诊楼3楼眼科门诊",
"period": "上午",
"timeFrame": "8:00-8:30"
}
]
}
],
"total": 8,
"size": 10,
"current": 1,
"orders": [],
"optimizeCountSql": true,
"searchCount": true,
"countId": "",
"maxLimit": -1,
"pages": 1
},
"msg": "操作成功"
}
```
### 3.4 保存预约记录
##### URL
`POST` `blade-business/apm-record/save`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|createDept|Long|医院Id|
|project|String|体检项目|
|cuAddr|String|体检地址|
|period|String|时段|
|apmDay|String|体检天|
|timeFrame|String|时间范围|
|cupName|String|体检人名称|
|cupCardNo|String|体检人证件号|
|cupPhone|String|体检人手机号|
##### 请求示例
```json
[
{
"apmDay": "2023-02-13",
"createDept": "1",
"project": "单眼视力",
"cuAddr": "门诊楼3楼眼科门诊",
"period": "上午",
"timeFrame": "8:00-8:30",
"cupName": "张三",
"cupPhone": "17852326379",
"cupCardNo": "37092120000618034X"
},
{
"apmDay": "2023-02-13",
"createDept": "1",
"project": "听力",
"cuAddr": "门诊楼3楼听力门诊",
"period": "上午",
"timeFrame": "8:00-8:30",
"cupName": "张三",
"cupPhone": "17852326379",
"cupCardNo": "37092120000618034X"
}
]
```
##### 返回参数
###### 失败时msg参数说明
|信息|说明|
|-----|-----|
|"预约失败, 一次只能预约同一个人"|同一次保存请求, 参数中`cupName`不同|
|"预约失败, 一次只能预约同一天的体检项目"|同一次保存请求, 参数中`apmDay`不同|
|"预约失败, 本日已有其他医院的预约"|每天只能预约1个医院进行体检|
|"预约失败, 本日已有此项目的预约"|每天只能预约同项目1次|
##### 返回示例
###### 失败示例
```json
{
"code": 400,
"success": false,
"data": {},
"msg": "预约失败, 一次只能预约同一个人"
}
```
###### 成功示例
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 3.5 取消预约记录
##### URL
`POST` `blade-business/apm-record/cancel`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|id|Long|预约记录ID|
##### 返回数据
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 3.6 更新预约记录状态
##### 说明
用户报到后, 调用接口, 更新预约记录为`已报到`
##### URL
`POST` `blade-business/apm-record/register`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|ids|String|预约记录ID列表|
##### 返回示例
```json
// todo 返回数据结构已变更, 待更新
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 3.7 根据ID获取详细
##### URL
`GET` `blade-business/apm-record/detail-by-id`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|id|Long|预约记录ID|
##### 返回示例
```json
{
"code": 200,
"success": true,
"data": {
"id": "1625057233276706818",
"createDept": "1623571646250143746",
"project": "单眼视力",
"cuAddr": "门诊楼3楼眼科门诊",
"period": "上午",
"apmDay": "2023-02-13 00:00:00",
"timeFrame": "8:00-8:30",
"cupName": "张群",
"cupCardNo": "371322199005057920",
"cupPhone": "15589892890",
"apmTime": "2023-02-13 17:00:11",
"apmStatus": 0
},
"msg": "操作成功"
}
```
## 4 黑名单
### 4.1 列表
##### URL
`GET` `blade-business/blacklist/page`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|startTime|String|查询开始时间, 格式yyyy-MM-dd|
|endTime|String|查询结束时间, 格式yyyy-MM-dd|
|cupCardNo|String|体检人证件号|
##### 返回数据
### 4.2 根据用户证件号获取详细
##### URL
`POST` `blade-business/blacklist/detail-by-cardno`
##### 请求参数
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|cardNo|String|是|用户证件号|
##### 返回数据
### 4.3 删除
##### URL
`POST` `blade-business/blacklist/remove`
##### 请求参数
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|ids|String|是|记录Id|
##### 返回数据
```json
{
"code": 200,
"success": true,
"data": {},
"msg": "操作成功"
}
```
### 4.4 获取正在生效的黑名单
##### 说明
根据用户证件号获取正在生效的黑名单, 若无正在生效的黑名单, 返回空
##### URL
`GET` `blade-business/blacklist/user-blacklist`
##### 请求参数
|参数名|参数类型|必填|参数说明|
|-----|-----|-----|-----|
|cupCardNo|String|是|体检人证件号|
##### 返回数据
|参数名|参数类型|参数说明|
|-----|-----|-----|
|data|String|若用户未被拉黑, 返回空字符串, 否则返回错误提示|
```json
{
"code": 200,
"success": true,
"data": "",
"msg": "操作成功"
}
```
### 5 状态说明
###### 预约记录状态
|值|说明|
|-----|-----|
|1|已取消|
|2|未报到|
|3|已报到|
###### 文章状态
|值|说明|
|-----|-----|
|0|已保存|
|1|已发布|
|2|已取消|