This commit is contained in:
Your Name
2026-03-06 14:27:24 +08:00
parent 9a1b67ca18
commit 52bb80e2f1
134 changed files with 5337 additions and 401 deletions
+143
View File
@@ -0,0 +1,143 @@
# 小程序二维码功能实现说明
## 功能概述
在中医诊断管理页面中,为每个患者添加了"小程序二维码"功能,点击后可生成微信小程序二维码,用于患者扫码进入小程序挂号页面。
## 实现内容
### 1. 后端实现(已完成)
#### 控制器
**文件**: `server/app/adminapi/controller/tcm/DiagnosisController.php`
方法:`generateMiniProgramQrcode()`
- 接收参数验证
- 调用Logic层生成二维码
#### 逻辑层
**文件**: `server/app/adminapi/logic/tcm/DiagnosisLogic.php`
核心方法:
- `generateMiniProgramQrcode()` - 生成小程序码主方法
- `getMiniProgramConfig()` - 获取小程序配置(AppID、AppSecret
- `generateWxQrcode()` - 调用微信API生成小程序码
- `getWxAccessToken()` - 获取微信AccessToken(带缓存)
- `httpGet()` / `httpPost()` - HTTP请求工具方法
#### 验证器
**文件**: `server/app/adminapi/validate/tcm/DiagnosisValidate.php`
验证场景:`sceneGenerateQrcode()`
- 必填字段:diagnosis_id、patient_id、share_user_id
### 2. 前端实现
#### API接口
**文件**: `admin/src/api/tcm.ts`
接口:`generateMiniProgramQrcode(params)`
- 调用后端接口:`/tcm.diagnosis/generateMiniProgramQrcode`
#### 页面功能
**文件**: `admin/src/views/tcm/diagnosis/index.vue`
新增功能:
- 点击"小程序二维码"按钮,弹出二维码显示弹窗
- 自动获取小程序配置验证是否已配置
- 调用后端接口生成二维码
- 显示二维码图片供扫描
- 支持重新生成二维码
- 加载状态提示
### 3. 接口详情
**接口地址**: `/adminapi/tcm.diagnosis/generateMiniProgramQrcode`
**请求方式**: POST
**请求参数**:
```json
{
"diagnosis_id": 123, // 诊单ID
"patient_id": 456, // 患者ID
"share_user_id": 789 // 分享用户ID(当前登录用户)
}
```
**返回数据**:
```json
{
"code": 1,
"msg": "success",
"data": {
"qrcode_url": "https://example.com/uploads/qrcode/20240306/qrcode_xxx.png",
"diagnosis_id": 123,
"patient_id": 456
}
}
```
### 4. 小程序路径
生成的小程序码跳转路径:
```
pages/order/monad/monad
```
Scene参数(通过scene传递):
```
id={诊单ID}&share_user={分享用户ID}
```
### 5. 技术实现细节
#### 微信小程序码生成
- 使用微信官方API`https://api.weixin.qq.com/wxa/getwxacodeunlimit`
- 支持无限制生成(通过scene参数传递数据)
- 二维码宽度:280px
- 环境版本:release(正式版)
#### AccessToken管理
- 自动获取并缓存AccessToken
- 缓存时长:7000秒(提前200秒过期)
- 缓存Key`wx_access_token_{appId}`
#### 图片存储
- 存储路径:`public/uploads/qrcode/{日期}/`
- 文件命名:`qrcode_{appId}_{scene的MD5}_{时间戳}.png`
- 自动创建目录
### 6. 使用流程
1. 在诊断列表中找到目标患者
2. 点击操作列的"小程序二维码"按钮
3. 系统验证小程序配置是否完整
4. 调用后端接口生成二维码
5. 显示二维码图片在弹窗中
6. 患者使用微信扫描二维码即可进入小程序
7. 如生成失败,可点击"重新生成"按钮
### 7. 权限控制
使用权限标识:`tcm.diagnosis/guahao`
### 8. 配置要求
需要在系统中配置小程序信息:
- 小程序名称
- 原始ID
- AppID(必填)
- AppSecret(必填)
- 小程序二维码
配置路径:渠道设置 -> 微信小程序设置
## 注意事项
1. 必须先配置小程序AppID和AppSecret
2. 服务器需要能够访问微信APIhttps://api.weixin.qq.com
3. 需要有uploads目录的写入权限
4. AccessToken会自动缓存,避免频繁请求微信服务器
5. 生成的二维码图片会保存在服务器本地
6. 小程序页面路径需要在小程序中实际存在
7. Scene参数最大长度为32个字符(已优化使用简短参数名)