初始化
This commit is contained in:
199
docs/guide/architecture.md
Normal file
199
docs/guide/architecture.md
Normal 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 | 服务器 | 消息队列 |
|
||||
67
docs/guide/introduction.md
Normal file
67
docs/guide/introduction.md
Normal 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 | 药品供应 |
|
||||
Reference in New Issue
Block a user