|
|
# 康策 CSM 系统 API 接口文档
|
|
|
|
|
|
> 自动生成时间:2025-07-11
|
|
|
> Swagger UI:http://localhost:5276/swagger
|
|
|
> 基地址:http://localhost:5276
|
|
|
|
|
|
---
|
|
|
|
|
|
## 📋 接口概览
|
|
|
|
|
|
| Controller | 路由前缀 | 接口数 | 是否需要认证 |
|
|
|
|---|---|---|---|
|
|
|
| AdminController | `/api/admin` | 14 | 除登录外均需 JWT |
|
|
|
| HospitalController | `/api/hospital` | 9 | 除登录外均需 JWT |
|
|
|
| UploadController | `/api/upload` | 2 | 上传需 JWT |
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🔐 认证说明
|
|
|
|
|
|
```
|
|
|
Authorization: Bearer {token}
|
|
|
```
|
|
|
|
|
|
- 调用登录接口获取 Token
|
|
|
- Token 有效期:1440 分钟(24 小时)
|
|
|
- 签发者:CSM_System
|
|
|
- 受众:CSM_Client
|
|
|
|
|
|
---
|
|
|
|
|
|
## 📐 统一响应格式
|
|
|
|
|
|
所有接口均返回 `ApiResponse` 或 `ApiResponse<T>`:
|
|
|
|
|
|
```json
|
|
|
// 成功
|
|
|
{ "code": 200, "message": "success", "data": { ... } }
|
|
|
|
|
|
// 错误
|
|
|
{ "code": 400, "message": "参数错误", "data": null }
|
|
|
{ "code": 401, "message": "未授权", "data": null }
|
|
|
{ "code": 403, "message": "无权限", "data": null }
|
|
|
{ "code": 404, "message": "资源不存在", "data": null }
|
|
|
{ "code": 500, "message": "服务器内部错误", "data": null }
|
|
|
```
|
|
|
|
|
|
分页接口返回 `ApiResponse<PagedResult<T>>`:
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"code": 200,
|
|
|
"message": "success",
|
|
|
"data": {
|
|
|
"total": 100,
|
|
|
"page": 1,
|
|
|
"pageSize": 10,
|
|
|
"list": [...]
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 一、管理端 API — `/api/admin`
|
|
|
|
|
|
### 1.1 登录
|
|
|
|
|
|
> **POST** `/api/admin/login` · 无需认证
|
|
|
|
|
|
**请求体:**
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| username | string | 是 | 用户名 |
|
|
|
| password | string | 是 | 密码 |
|
|
|
|
|
|
**请求示例:**
|
|
|
```json
|
|
|
{ "username": "admin", "password": "123456" }
|
|
|
```
|
|
|
|
|
|
**响应数据:**
|
|
|
|
|
|
| 字段 | 类型 | 说明 |
|
|
|
|---|---|---|
|
|
|
| token | string | JWT Token |
|
|
|
| userId | int | 用户 ID |
|
|
|
| userName | string | 用户名 |
|
|
|
| userType | string | 用户类型(Admin/Hospital) |
|
|
|
| hospitalId | int? | 所属医院 ID(Admin 为 null) |
|
|
|
| hospitalName | string | 所属医院名称 |
|
|
|
| role | string | 角色 |
|
|
|
| name | string | 姓名 |
|
|
|
|
|
|
> ⚠️ 仅允许 `userType == "Admin"` 的账号登录,否则返回 403
|
|
|
|
|
|
---
|
|
|
|
|
|
### 1.2 服务工单
|
|
|
|
|
|
#### 获取工单列表
|
|
|
> **GET** `/api/admin/orders` · ✅ 需认证
|
|
|
|
|
|
| 查询参数 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| page | int | 否 | 页码,默认 1 |
|
|
|
| pageSize | int | 否 | 每页条数,默认 10 |
|
|
|
| status | string | 否 | 状态筛选 |
|
|
|
| priority | string | 否 | 优先级筛选(高/中/低) |
|
|
|
| type | string | 否 | 服务类型筛选 |
|
|
|
| keyword | string | 否 | 关键词搜索 |
|
|
|
| startDate | string | 否 | 开始时间 |
|
|
|
| endDate | string | 否 | 结束时间 |
|
|
|
| hospitalId | int | 否 | 医院 ID 筛选 |
|
|
|
|
|
|
#### 获取工单详情
|
|
|
> **GET** `/api/admin/orders/{id}` · ✅ 需认证
|
|
|
|
|
|
| 路径参数 | 类型 | 说明 |
|
|
|
|---|---|---|
|
|
|
| id | int | 工单 ID |
|
|
|
|
|
|
#### 管理端提交工单
|
|
|
> **POST** `/api/admin/orders` · ✅ 需认证
|
|
|
|
|
|
**请求体:**
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| title | string | 是 | 工单标题 |
|
|
|
| priority | string | 是 | 优先级(高/中/低) |
|
|
|
| serviceType | string | 是 | 服务类型 |
|
|
|
| description | string | 是 | 详细描述(HTML) |
|
|
|
| department | string | 否 | 科室 |
|
|
|
| submitter | string | 否 | 提交人 |
|
|
|
| colorTag | string | 否 | 颜色标签 |
|
|
|
| hospitalId | int | 否 | 指定医院 ID |
|
|
|
|
|
|
#### 处理工单
|
|
|
> **PUT** `/api/admin/orders/{id}/process` · ✅ 需认证
|
|
|
|
|
|
**路径参数:** `id` — 工单 ID
|
|
|
|
|
|
**请求体:**
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| processRemark | string | 是 | 处理备注(HTML) |
|
|
|
| status | string | 是 | 目标状态(如"已完成") |
|
|
|
|
|
|
---
|
|
|
|
|
|
### 1.3 医院信息
|
|
|
|
|
|
#### 获取医院列表
|
|
|
> **GET** `/api/admin/hospitals` · ✅ 需认证
|
|
|
|
|
|
| 查询参数 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| page | int | 否 | 页码,默认 1 |
|
|
|
| pageSize | int | 否 | 每页条数,默认 10 |
|
|
|
| keyword | string | 否 | 关键词搜索 |
|
|
|
| category | string | 否 | 类别筛选 |
|
|
|
|
|
|
#### 获取医院详情
|
|
|
> **GET** `/api/admin/hospitals/{id}` · ✅ 需认证
|
|
|
|
|
|
| 路径参数 | 类型 | 说明 |
|
|
|
|---|---|---|
|
|
|
| id | int | 医院 ID |
|
|
|
|
|
|
#### 添加医院
|
|
|
> **POST** `/api/admin/hospitals` · ✅ 需认证
|
|
|
|
|
|
**请求体:**
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| name | string | 是 | 医院名称 |
|
|
|
| customerCategory | string | 是 | 客户类别(如 A) |
|
|
|
| contactDept | string | 否 | 联系部门 |
|
|
|
| contactPerson | string | 否 | 联系人 |
|
|
|
| contactPosition | string | 否 | 联系人职位 |
|
|
|
| contactPhone | string | 否 | 联系电话 |
|
|
|
| signDate | DateTime | 是 | 签约日期 |
|
|
|
| acceptDate | DateTime | 是 | 验收日期 |
|
|
|
| contractYears | int | 是 | 合同年限 |
|
|
|
| maintenanceEnd | DateTime | 是 | 维保到期日 |
|
|
|
| managerId | int | 否 | 负责人 ID |
|
|
|
| remark | string | 否 | 备注 |
|
|
|
|
|
|
#### 更新医院信息
|
|
|
> **PUT** `/api/admin/hospitals/{id}` · ✅ 需认证
|
|
|
|
|
|
请求体同「添加医院」
|
|
|
|
|
|
---
|
|
|
|
|
|
### 1.4 账号管理
|
|
|
|
|
|
#### 获取账号列表
|
|
|
> **GET** `/api/admin/accounts` · ✅ 需认证
|
|
|
|
|
|
| 查询参数 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| type | string | 否 | 用户类型(Admin/Hospital) |
|
|
|
| page | int | 否 | 页码 |
|
|
|
| pageSize | int | 否 | 每页条数 |
|
|
|
| keyword | string | 否 | 关键词搜索 |
|
|
|
|
|
|
#### 添加账号
|
|
|
> **POST** `/api/admin/accounts` · ✅ 需认证
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| username | string | 是 | 用户名 |
|
|
|
| password | string | 是 | 密码 |
|
|
|
| name | string | 是 | 姓名 |
|
|
|
| gender | string | 否 | 性别 |
|
|
|
| userType | string | 是 | 类型(Admin/Hospital) |
|
|
|
| hospitalId | int | 否 | 所属医院 ID |
|
|
|
| role | string | 否 | 角色 |
|
|
|
|
|
|
#### 编辑账号
|
|
|
> **PUT** `/api/admin/accounts/{id}` · ✅ 需认证
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| name | string | 否 | 姓名 |
|
|
|
| gender | string | 否 | 性别 |
|
|
|
| hospitalId | int | 否 | 所属医院 ID |
|
|
|
| role | string | 否 | 角色 |
|
|
|
|
|
|
#### 切换账号状态
|
|
|
> **PUT** `/api/admin/accounts/{id}/status` · ✅ 需认证
|
|
|
|
|
|
切换启用/禁用状态,无需请求体。
|
|
|
|
|
|
#### 重置密码
|
|
|
> **POST** `/api/admin/accounts/{id}/reset-password` · ✅ 需认证
|
|
|
|
|
|
重置为默认密码 `123456`,无需请求体。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 二、医院端 API — `/api/hospital`
|
|
|
|
|
|
### 2.1 登录
|
|
|
|
|
|
> **POST** `/api/hospital/login` · 无需认证
|
|
|
|
|
|
请求体同管理端登录。
|
|
|
|
|
|
> ⚠️ 仅允许 `userType == "Hospital"` 的账号登录,否则返回 403
|
|
|
|
|
|
---
|
|
|
|
|
|
### 2.2 工作台
|
|
|
|
|
|
#### 获取统计数据
|
|
|
> **GET** `/api/hospital/workbench` · ✅ 需认证
|
|
|
|
|
|
| 查询参数 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| period | string | 否 | 统计周期(month) |
|
|
|
| start | DateTime | 否 | 开始日期 |
|
|
|
| end | DateTime | 否 | 结束日期 |
|
|
|
|
|
|
**响应数据:**
|
|
|
|
|
|
| 字段 | 类型 | 说明 |
|
|
|
|---|---|---|
|
|
|
| totalOrders | int | 总工单数 |
|
|
|
| completedOrders | int | 已完成数 |
|
|
|
| pendingOrders | int | 待处理数 |
|
|
|
| highPriorityOrders | int | 高优先级数 |
|
|
|
| trendData | array | 趋势图数据 `[{ date, submitCount, completeCount }]` |
|
|
|
|
|
|
---
|
|
|
|
|
|
### 2.3 工单管理
|
|
|
|
|
|
#### 我的工单列表
|
|
|
> **GET** `/api/hospital/orders` · ✅ 需认证
|
|
|
|
|
|
查询参数同管理端工单列表(不含 `hospitalId`,自动绑定当前医院)
|
|
|
|
|
|
#### 工单详情
|
|
|
> **GET** `/api/hospital/orders/{id}` · ✅ 需认证
|
|
|
|
|
|
| 路径参数 | 类型 | 说明 |
|
|
|
|---|---|---|
|
|
|
| id | int | 工单 ID |
|
|
|
|
|
|
返回工单详情(含附件列表 + 状态流转日志)
|
|
|
|
|
|
#### 快速提交工单
|
|
|
> **POST** `/api/hospital/orders` · ✅ 需认证
|
|
|
|
|
|
请求体同管理端提交工单(不含 `hospitalId`,自动绑定当前医院)
|
|
|
|
|
|
#### 编辑工单
|
|
|
> **PUT** `/api/hospital/orders/{id}` · ✅ 需认证
|
|
|
|
|
|
#### 取消工单
|
|
|
> **DELETE** `/api/hospital/orders/{id}` · ✅ 需认证
|
|
|
|
|
|
---
|
|
|
|
|
|
### 2.4 积分
|
|
|
|
|
|
#### 积分总览
|
|
|
> **GET** `/api/hospital/points` · ✅ 需认证
|
|
|
|
|
|
**响应:**
|
|
|
```json
|
|
|
{ "totalPoints": 0, "rewardCount": 0 }
|
|
|
```
|
|
|
|
|
|
#### 积分明细
|
|
|
> **GET** `/api/hospital/points/details` · ✅ 需认证
|
|
|
|
|
|
| 查询参数 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| page | int | 否 | 页码,默认 1 |
|
|
|
| pageSize | int | 否 | 每页条数,默认 10 |
|
|
|
|
|
|
**响应:**
|
|
|
```json
|
|
|
[{ "source": "string", "orderNo": "string", "changeAmount": 0, "description": "string", "createdAt": "2025-01-01" }]
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 三、附件上传下载 — `/api/upload`
|
|
|
|
|
|
### 3.1 上传附件
|
|
|
|
|
|
> **POST** `/api/upload` · ✅ 需认证
|
|
|
|
|
|
**请求格式:** `multipart/form-data`
|
|
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|
|---|---|---|---|
|
|
|
| orderNo | string | 是 | 关联工单号 |
|
|
|
| files | file[] | 是 | 文件列表 |
|
|
|
|
|
|
- 单文件最大:50 MB
|
|
|
- 存储路径:`Uploads/Attachments/`
|
|
|
|
|
|
### 3.2 下载/预览附件
|
|
|
|
|
|
> **GET** `/api/upload/{fileName}` · 无需认证
|
|
|
|
|
|
| 路径参数 | 类型 | 说明 |
|
|
|
|---|---|---|
|
|
|
| fileName | string | 文件名 |
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🏷️ 附录:状态码说明
|
|
|
|
|
|
| 状态码 | 说明 |
|
|
|
|---|---|
|
|
|
| 200 | 请求成功 |
|
|
|
| 400 | 参数校验失败 |
|
|
|
| 401 | 未登录或 Token 过期 |
|
|
|
| 403 | 无操作权限 |
|
|
|
| 404 | 资源不存在 |
|
|
|
| 500 | 服务器内部错误 |
|