# 康策 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`: ```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>`: ```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 | 服务器内部错误 |