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

3.8 KiB
Raw Blame History

小程序二维码功能实现说明

功能概述

在中医诊断管理页面中,为每个患者添加了"小程序二维码"功能,点击后可生成微信小程序二维码,用于患者扫码进入小程序挂号页面。

实现内容

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

请求参数:

{
  "diagnosis_id": 123,      // 诊单ID
  "patient_id": 456,        // 患者ID
  "share_user_id": 789      // 分享用户ID(当前登录用户)
}

返回数据:

{
  "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. 技术实现细节

微信小程序码生成

  • 使用微信官方APIhttps://api.weixin.qq.com/wxa/getwxacodeunlimit
  • 支持无限制生成(通过scene参数传递数据)
  • 二维码宽度:280px
  • 环境版本:release(正式版)

AccessToken管理

  • 自动获取并缓存AccessToken
  • 缓存时长:7000秒(提前200秒过期)
  • 缓存Keywx_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个字符(已优化使用简短参数名)