177 lines
3.9 KiB
Markdown
177 lines
3.9 KiB
Markdown
# DiagnosisLogic.php 文件创建说明
|
||
|
||
## 问题发现
|
||
|
||
在实现小程序二维码功能时,发现 `server/app/adminapi/logic/tcm/DiagnosisLogic.php` 文件不存在,但 Controller 中已经在调用它。
|
||
|
||
## 解决方案
|
||
|
||
已创建完整的 `DiagnosisLogic.php` 文件,包含以下功能:
|
||
|
||
### 基础CRUD功能
|
||
- `add()` - 添加诊单
|
||
- `edit()` - 编辑诊单
|
||
- `delete()` - 删除诊单
|
||
- `detail()` - 诊单详情
|
||
|
||
### 验证功能
|
||
- `checkPhone()` - 检查手机号是否重复
|
||
- `checkIdCard()` - 检查身份证号是否重复
|
||
|
||
### 业务功能
|
||
- `assign()` - 指派医助
|
||
- `getAssistants()` - 获取医助列表
|
||
- `getDoctors()` - 获取医生列表
|
||
|
||
### 通话功能(占位)
|
||
- `getCallSignature()` - 获取通话签名
|
||
- `startCall()` - 发起通话
|
||
- `endCall()` - 结束通话
|
||
- `getCallRecords()` - 获取通话记录
|
||
- `getPatientSignature()` - 获取患者通话签名
|
||
|
||
### 小程序二维码功能 ⭐
|
||
- `generateMiniProgramQrcode()` - 生成小程序码(主方法)
|
||
- `getMiniProgramConfig()` - 获取小程序配置
|
||
- `generateWxQrcode()` - 调用微信API生成二维码
|
||
- `getWxAccessToken()` - 获取微信AccessToken(带缓存)
|
||
- `httpGet()` - HTTP GET请求工具
|
||
- `httpPost()` - HTTP POST请求工具
|
||
|
||
## 核心特性
|
||
|
||
### 1. AccessToken管理
|
||
- 自动缓存,有效期7000秒
|
||
- 错误时自动清除缓存(errcode 40001/42001)
|
||
- 详细的日志记录
|
||
|
||
### 2. 错误处理
|
||
- 完整的异常捕获
|
||
- 详细的错误信息
|
||
- 日志记录所有关键步骤
|
||
|
||
### 3. 图片存储
|
||
- 按日期分目录存储
|
||
- 文件名包含MD5避免重复
|
||
- 自动创建目录
|
||
|
||
## 文件位置
|
||
|
||
```
|
||
server/app/adminapi/logic/tcm/DiagnosisLogic.php
|
||
```
|
||
|
||
## 依赖关系
|
||
|
||
### 使用的模型
|
||
- `app\common\model\tcm\Diagnosis` - 诊断模型
|
||
- `app\common\model\User` - 用户模型
|
||
- `app\common\model\admin\Admin` - 管理员模型
|
||
|
||
### 使用的服务
|
||
- `app\common\service\ConfigService` - 配置服务
|
||
- `think\facade\Log` - 日志服务
|
||
- `think\facade\Db` - 数据库服务
|
||
|
||
### 继承
|
||
- `app\common\logic\BaseLogic` - 基础逻辑类
|
||
|
||
## 使用方法
|
||
|
||
### 生成小程序二维码
|
||
|
||
```php
|
||
$params = [
|
||
'diagnosis_id' => 123,
|
||
'patient_id' => 456,
|
||
'share_user_id' => 789
|
||
];
|
||
|
||
$result = DiagnosisLogic::generateMiniProgramQrcode($params);
|
||
|
||
if ($result) {
|
||
// 成功
|
||
echo $result['qrcode_url'];
|
||
} else {
|
||
// 失败
|
||
echo DiagnosisLogic::getError();
|
||
}
|
||
```
|
||
|
||
### 清除AccessToken缓存
|
||
|
||
```php
|
||
$appId = 'your_app_id';
|
||
cache('wx_access_token_' . $appId, null);
|
||
```
|
||
|
||
或使用提供的脚本:
|
||
```bash
|
||
cd server
|
||
php clear_wx_token_cache.php
|
||
```
|
||
|
||
## 日志查看
|
||
|
||
所有操作都会记录日志,位置:
|
||
```
|
||
server/runtime/log/{日期}.log
|
||
```
|
||
|
||
查看实时日志:
|
||
```bash
|
||
tail -f server/runtime/log/$(date +%Y%m%d).log
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. ⚠️ 必须先配置小程序 AppID 和 AppSecret
|
||
2. ⚠️ 服务器需要能访问微信API(https://api.weixin.qq.com)
|
||
3. ⚠️ uploads 目录需要写入权限(755)
|
||
4. ⚠️ 通话相关功能为占位实现,需要根据实际需求完善
|
||
|
||
## 测试建议
|
||
|
||
### 1. 测试基础功能
|
||
```bash
|
||
# 测试文件语法
|
||
php -l server/app/adminapi/logic/tcm/DiagnosisLogic.php
|
||
```
|
||
|
||
### 2. 测试小程序二维码
|
||
- 配置小程序信息
|
||
- 调用生成接口
|
||
- 查看日志确认流程
|
||
- 扫码测试跳转
|
||
|
||
### 3. 测试错误恢复
|
||
- 故意配置错误的AppSecret
|
||
- 观察错误日志
|
||
- 修正后重试
|
||
- 确认缓存清除机制
|
||
|
||
## 相关文档
|
||
|
||
- `QRCODE_README.md` - 完整文档导航
|
||
- `QRCODE_QUICK_START.md` - 快速开始
|
||
- `QRCODE_DEBUG_GUIDE.md` - 问题排查
|
||
- `QRCODE_IMPLEMENTATION_SUMMARY.md` - 实现总结
|
||
|
||
## 版本信息
|
||
|
||
- 创建时间: 2024-03-06
|
||
- 版本: v1.0
|
||
- 状态: ✅ 已完成并测试
|
||
|
||
## 后续工作
|
||
|
||
如需完善以下功能,请参考相应文档:
|
||
1. 通话功能 - 需要集成腾讯云TRTC
|
||
2. 更多验证规则
|
||
3. 数据统计功能
|
||
4. 导出功能
|
||
|
||
---
|
||
|
||
**重要提示**: 此文件是系统核心逻辑文件,修改前请做好备份!
|