Files
zyt/MINI_PROGRAM_QRCODE_FEATURE.md
T
2026-03-06 14:27:24 +08:00

144 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 小程序二维码功能实现说明
## 功能概述
在中医诊断管理页面中,为每个患者添加了"小程序二维码"功能,点击后可生成微信小程序二维码,用于患者扫码进入小程序挂号页面。
## 实现内容
### 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个字符(已优化使用简短参数名)