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
+149
View File
@@ -0,0 +1,149 @@
# 小程序二维码功能测试指南
## 前置条件
### 1. 配置小程序信息
进入后台管理系统:
- 导航到:渠道设置 -> 微信小程序设置
- 填写必填项:
- AppID(小程序AppID
- AppSecret(小程序AppSecret
- 保存配置
### 2. 确保有测试数据
- 至少有一条患者诊断记录
- 记录中包含完整的患者信息(patient_id)
## 测试步骤
### 测试1:正常生成二维码
1. 登录后台管理系统
2. 进入:中医管理 -> 诊断管理
3. 找到任意一条患者记录
4. 点击操作列的"小程序二维码"按钮
5. 预期结果:
- 弹出二维码显示弹窗
- 显示加载状态
- 成功生成并显示二维码图片
- 显示患者姓名
- 提示"请使用微信扫描二维码"
### 测试2:未配置小程序
1. 清空小程序配置(AppID或AppSecret
2. 点击"小程序二维码"按钮
3. 预期结果:
- 提示"小程序未配置,请先配置小程序信息"
- 弹窗自动关闭
### 测试3:重新生成二维码
1. 成功生成二维码后
2. 点击弹窗底部的"重新生成"按钮
3. 预期结果:
- 显示加载状态
- 重新生成新的二维码
- 二维码URL可能不同(因为时间戳变化)
### 测试4:扫码验证
1. 生成二维码后
2. 使用微信扫描二维码
3. 预期结果:
- 跳转到小程序
- 进入 pages/order/monad/monad 页面
- 页面能够获取到诊单ID和分享用户ID参数
## 接口测试
### 使用Postman测试
**接口**: POST `/adminapi/tcm.diagnosis/generateMiniProgramQrcode`
**Headers**:
```
Content-Type: application/json
token: {你的登录token}
```
**Body** (JSON):
```json
{
"diagnosis_id": 1,
"patient_id": 1,
"share_user_id": 1
}
```
**预期响应**:
```json
{
"code": 1,
"msg": "success",
"data": {
"qrcode_url": "http://yourdomain.com/uploads/qrcode/20240306/qrcode_xxx.png",
"diagnosis_id": 1,
"patient_id": 1
}
}
```
## 常见问题排查
### 问题1:提示"小程序未配置"
- 检查是否已配置AppID和AppSecret
- 确认配置已保存成功
### 问题2:生成失败
- 检查服务器是否能访问微信APIhttps://api.weixin.qq.com
- 检查AppID和AppSecret是否正确
- 查看服务器错误日志
### 问题3:二维码无法显示
- 检查uploads目录是否有写入权限
- 检查生成的图片路径是否正确
- 检查图片URL是否可访问
### 问题4:扫码后无法跳转
- 确认小程序中存在 pages/order/monad/monad 页面
- 检查小程序是否已发布
- 确认AppID是否匹配
## 数据库检查
生成的二维码图片存储在:
```
public/uploads/qrcode/{日期}/qrcode_{appId}_{md5}_{timestamp}.png
```
AccessToken缓存Key
```
wx_access_token_{appId}
```
可以通过以下方式查看缓存:
```php
// 在PHP中
$token = cache('wx_access_token_' . $appId);
var_dump($token);
```
## 性能测试
### 并发测试
- 同时生成多个二维码
- 观察AccessToken是否正确复用
- 检查是否有重复请求微信API
### 缓存测试
- 第一次生成二维码(会请求微信获取AccessToken
- 7000秒内再次生成(应使用缓存的AccessToken
- 观察响应时间差异
## 安全检查
1. 权限验证:未登录用户无法访问
2. 参数验证:必填参数缺失时返回错误
3. 数据验证:诊单ID和患者ID必须存在
4. 文件安全:生成的图片文件名包含随机因素,避免被猜测