初始化

This commit is contained in:
李琦
2026-07-08 15:04:42 +08:00
commit 70264153e5
129 changed files with 13797 additions and 0 deletions

199
docs/guide/architecture.md Normal file
View File

@@ -0,0 +1,199 @@
# 系统架构
## 整体架构
```mermaid
graph TB
subgraph 客户端
U[患者小程序<br/>xk-client-wx]
D[医生小程序<br/>xk-doctor-wx]
A[管理后台<br/>xk-admin]
S[数据大屏<br/>xk-data]
end
subgraph API层
API[xk-api<br/>Laravel 12]
YII[xk-api-yii<br/>Yii2 遗留]
end
subgraph 数据层
DB1[(z_xk<br/>新库)]
DB2[(z_o_xk<br/>旧库)]
RD[(Redis)]
MQ[(RabbitMQ)]
OSS[(阿里云 OSS)]
end
subgraph 外部集成
PAY1[微信支付]
PAY2[易票联支付]
SMS[短信服务]
HY[xk-hy-forward-go<br/>Go 转发]
GOV[浙江省政务云<br/>监管平台]
MES[和利康 MES<br/>中药智造]
ERP[ERP 系统]
KUAI100[快递100]
end
U --> API
D --> API
A --> API
S --> API
API --> DB1
API --> DB2
API --> RD
API --> MQ
API --> OSS
API --> PAY1
API --> PAY2
API --> SMS
API --> HY
API --> MES
API --> ERP
API --> KUAI100
HY --> GOV
```
## 双数据库策略
系统同时连接两个 MySQL 数据库:
```mermaid
graph LR
subgraph z_xk 新库 67张表
A1[管理后台 xk_admin]
A2[财务 xk_account_*]
A3[销售 xk_salesperson_*]
A4[处方 xk_special_prescription*]
A5[监管 xk_hy_transit_*]
A6[系统配置 xk_system_config]
end
subgraph z_o_xk 旧库 约100张表
B1[药品 yii_drug]
B2[订单 yii_product_order]
B3[处方 yii_prescription]
B4[用户 yii_user]
B5[门店 yii_store]
B6[医生 yii_doctor_info]
B7[挂号 yii_register]
end
API[xk-api] -->|读写| A1
API -->|读写| A2
API -->|读写| A3
API -->|读写| B1
API -->|读写| B2
API -->|读写| B3
```
::: warning 跨库注意事项
- 新库和旧库之间**不允许 JOIN 查询**
- 跨库关联需要在应用层做两步查询
- 定时任务 `app:accrue-salesperson-commission` 需要同时查两个库
:::
## API 路由架构
xk-api 通过路由文件划分不同端的接口:
| 路由文件 | 前缀 | 用途 | 认证方式 |
|----------|------|------|----------|
| `admin.php` | `/api/admin` | 管理后台 API | JWT (AdminAuthMiddleware) |
| `mobile.php` | `/api/mobile` | 患者小程序 API | JWT (MobileAuthMiddleware) |
| `doctor.php` | `/api/doctor` | 医生端小程序 API | 多种角色中间件 |
| `hy.php` | `/api/hy` | 互联网医院监管 API | HyTransitApiMiddleware |
| `callback.php` | `/api/callback` | 支付回调 | 签名验证 |
| `open-api.php` | `/api/open` | 开放 API | 无/简单认证 |
## 中间件链
```mermaid
graph LR
REQ[请求] --> CORS[CORS]
CORS --> THROTTLE[限流]
THROTTLE --> AUTH{认证中间件}
AUTH -->|Admin| JWT[JWT验证]
AUTH -->|Mobile| MJWT[Mobile JWT]
AUTH -->|Doctor| DROLE[角色验证]
AUTH -->|Hy| HTOKEN[Hy Transit Token]
JWT --> LOG[操作日志]
MJWT --> LOG
DROLE --> LOG
HTOKEN --> LOG
LOG --> CTRL[Controller]
```
## 消息队列架构
```mermaid
graph TB
subgraph 生产者
P1[订单支付回调]
P2[挂号支付回调]
P3[退款回调]
P4[定时任务]
end
subgraph RabbitMQ
Q1[default 队列]
Q2[failed_jobs]
end
subgraph 消费者 Job
J1[ProductOrderPaidJob<br/>分账结算]
J2[RegisterPaidJob<br/>挂号分账]
J3[ProductOrderRefundJob<br/>退款处理]
J4[SalespersonCommissionRefundJob<br/>佣金冲销]
J5[AutoConfirmReceiptOrderJob<br/>自动确认收货]
J6[AutomaticallyCancelTheOrderJob<br/>自动取消订单]
J7[AutoExpirePrescriptionHandlerJob<br/>处方过期处理]
J8[SyncDrugPriceBySubscribeJob<br/>药品价格同步]
end
P1 --> Q1
P2 --> Q1
P3 --> Q1
P4 --> Q1
Q1 --> J1
Q1 --> J2
Q1 --> J3
Q1 --> J4
Q1 --> J5
Q1 --> J6
Q1 --> J7
Q1 --> J8
```
## 监管数据流转
```mermaid
sequenceDiagram
participant API as xk-api
participant GO as xk-hy-forward-go
participant GOV as 浙江省政务云
Note over API: 定时触发 / 手动拉取
API->>API: 1. 创建批次 (batch/create)
API->>API: 2. 拉取数据 (supervise/consult, /recipe, ...)
API->>API: 3. 加密打包数据
API->>GO: 4. 转发加密数据
GO->>GOV: 5. 透传至政务云
GOV-->>GO: 6. 返回处理结果
GO-->>API: 7. 回调结果
API->>API: 8. 更新批次状态
```
## 部署架构
| 服务 | 部署方式 | 说明 |
|------|----------|------|
| xk-api | 服务器 + LaravelS | PHP-FPM + LaravelS 常驻进程 |
| xk-admin | CDN / Nginx | 静态资源部署 |
| xk-client-wx | 微信小程序平台 | HBuilderX 上传 |
| xk-doctor-wx | 微信小程序平台 | HBuilderX 上传 |
| xk-data | 服务器 / CDN | 静态页面 |
| xk-hy-forward-go | 内网服务器 | Windows 部署run.bat 启动 |
| MySQL | 服务器 | 双库部署 |
| Redis | 服务器 | 缓存 / 队列 |
| RabbitMQ | 服务器 | 消息队列 |

View File

@@ -0,0 +1,67 @@
# 项目介绍
XK萧康是一套完整的互联网中医诊疗与药品供应链系统涵盖患者端问诊购药、医生端接诊开方、药师审方、门店管理、财务结算、以及浙江省互联网医院监管平台数据上报。
## 项目组成
| 项目 | 技术栈 | 说明 |
|------|--------|------|
| **xk-admin** | Vue 3 + Vben Admin Pro v5.5.1 + Ant Design Vue | 管理后台前端,支持总后台、门店端、平台端多角色 |
| **xk-api** | Laravel 12 (PHP 8.4+) + Sanctum | 新 API 服务,核心业务逻辑所在 |
| **xk-api-yii** | Yii2 Advanced | 旧 API 服务,历史业务逻辑,逐步迁移中 |
| **xk-client-wx** | uni-app (Vue 3) + uview-ui | 患者微信小程序,问诊 / 购药 / 挂号 |
| **xk-doctor-wx** | uni-app (Vue) + uview-ui | 医生 / 药师 / 门店管理员微信小程序 |
| **xk-data** | Vue 3 + ECharts | 业务数据大屏 |
| **xk-hy-forward-go** | Go 1.22 | 互联网医院监管数据内网转发至浙江省政务云 |
## 技术栈概览
```mermaid
graph TB
subgraph 前端
A[xk-admin<br/>Vue3 + Vben] --> B[xk-api<br/>Laravel 12]
C[xk-client-wx<br/>uni-app] --> B
D[xk-doctor-wx<br/>uni-app] --> B
E[xk-data<br/>Vue3 + ECharts] --> B
end
subgraph 后端
B --> F[(z_xk<br/>新库 MySQL)]
B --> G[(z_o_xk<br/>旧库 MySQL)]
B --> H[RabbitMQ]
B --> I[Redis]
B --> J[阿里云 OSS]
B --> K[易票联支付]
B --> L[微信支付]
end
subgraph 外部系统
B --> M[xk-hy-forward-go<br/>Go 转发]
M --> N[浙江省政务云<br/>监管平台]
B --> O[和利康 MES<br/>中药智造]
B --> P[ERP 系统]
end
```
## 数据库
系统使用两个 MySQL 数据库:
- **z_xk**新库67 张表,当前活跃使用,包含管理后台、财务、销售、处方流转等核心业务表
- **z_o_xk**(旧库):约 100 张表Yii2 时代遗留,部分表仍在使用(如药品、订单、处方、用户等),部分已废弃
详见 [数据库总览](/database/overview)。
## 多端角色
系统支持多种用户角色,通过不同的小程序端和后台访问:
| 角色 | 入口 | 说明 |
|------|------|------|
| 平台管理员 | xk-admin 总后台 | 全局管理、审核、财务 |
| 门店管理员 | xk-admin 门店端 / xk-doctor-wx | 门店运营、仓库、结算 |
| 医生 | xk-doctor-wx | 接诊、开方、患者管理 |
| 药师 | xk-doctor-wx (审方页) | 处方审核、处方追溯 |
| 门店推广员 | xk-doctor-wx | 门店推广、佣金管理 |
| 患者 | xk-client-wx | 问诊、购药、挂号 |
| 供应商 | xk-admin | 药品供应 |