224 lines
5.7 KiB
Markdown
224 lines
5.7 KiB
Markdown
# 诊单查看记录功能 - 安装指南
|
||
|
||
## 安装步骤
|
||
|
||
### 1. 创建数据库表
|
||
|
||
执行以下SQL语句创建诊单查看记录表:
|
||
|
||
```bash
|
||
# 方式1: 使用MySQL客户端执行
|
||
mysql -u root -p your_database < server/database/diagnosis_view_records.sql
|
||
|
||
# 方式2: 在phpMyAdmin或其他数据库管理工具中执行
|
||
# 打开文件: server/database/diagnosis_view_records.sql
|
||
# 复制SQL语句并执行
|
||
```
|
||
|
||
SQL文件位置: `server/database/diagnosis_view_records.sql`
|
||
|
||
### 2. 验证表创建
|
||
|
||
登录数据库,检查表是否创建成功:
|
||
|
||
```sql
|
||
SHOW TABLES LIKE 'la_diagnosis_view_records';
|
||
DESC la_diagnosis_view_records;
|
||
```
|
||
|
||
### 3. 文件清单
|
||
|
||
确认以下文件已创建:
|
||
|
||
#### 后端文件
|
||
- ✅ `server/database/diagnosis_view_records.sql` - 数据库表结构
|
||
- ✅ `server/app/common/model/DiagnosisViewRecord.php` - 模型文件
|
||
- ✅ `server/app/api/controller/TcmController.php` - 控制器(已更新)
|
||
- ✅ `server/app/adminapi/logic/tcm/DiagnosisLogic.php` - 逻辑层(已更新)
|
||
|
||
#### 前端文件
|
||
- ✅ `TUICallKit-Vue3/pages/order/monad/monad.vue` - 小程序页面(已更新)
|
||
|
||
#### 文档文件
|
||
- ✅ `DIAGNOSIS_VIEW_RECORD_FEATURE.md` - 功能说明文档
|
||
- ✅ `DIAGNOSIS_VIEW_RECORD_INSTALL.md` - 安装指南(本文件)
|
||
- ✅ `MINI_PROGRAM_SCENE_PARAMS.md` - Scene参数说明
|
||
|
||
### 4. 配置小程序用户ID获取
|
||
|
||
在小程序中添加用户ID获取逻辑:
|
||
|
||
```javascript
|
||
// TUICallKit-Vue3/pages/order/monad/monad.vue
|
||
// 在 parsePageParams 函数中添加
|
||
|
||
const parsePageParams = (options) => {
|
||
const params = {};
|
||
|
||
// ... 现有的解析逻辑 ...
|
||
|
||
// 获取当前登录用户ID
|
||
try {
|
||
// 方式1: 从本地存储获取
|
||
const userInfo = uni.getStorageSync('userInfo');
|
||
params.user_id = userInfo?.id || 0;
|
||
|
||
// 方式2: 从全局状态获取
|
||
// const app = getApp();
|
||
// params.user_id = app.globalData.userId || 0;
|
||
|
||
// 方式3: 从Vuex获取
|
||
// import { useUserStore } from '@/stores/user';
|
||
// const userStore = useUserStore();
|
||
// params.user_id = userStore.userId || 0;
|
||
} catch (error) {
|
||
console.error('获取用户ID失败:', error);
|
||
params.user_id = 0;
|
||
}
|
||
|
||
return params;
|
||
};
|
||
```
|
||
|
||
### 5. 测试功能
|
||
|
||
#### 5.1 测试查看记录
|
||
1. 在管理后台生成小程序二维码
|
||
2. 使用微信扫描二维码
|
||
3. 小程序打开诊单详情页
|
||
4. 检查数据库 `la_diagnosis_view_records` 表,应该有一条新记录
|
||
|
||
```sql
|
||
SELECT * FROM la_diagnosis_view_records ORDER BY id DESC LIMIT 1;
|
||
```
|
||
|
||
#### 5.2 测试重复查看
|
||
1. 再次扫描同一个二维码
|
||
2. 检查数据库,`view_count` 应该增加,`last_view_time` 应该更新
|
||
|
||
```sql
|
||
SELECT id, user_id, diagnosis_id, view_count,
|
||
FROM_UNIXTIME(first_view_time) as first_view,
|
||
FROM_UNIXTIME(last_view_time) as last_view
|
||
FROM la_diagnosis_view_records
|
||
WHERE diagnosis_id = 4;
|
||
```
|
||
|
||
#### 5.3 测试确认功能
|
||
1. 在小程序中点击"确认诊单"按钮
|
||
2. 检查数据库,`is_confirmed` 应该变为1,`confirmed_time` 应该有值
|
||
|
||
```sql
|
||
SELECT id, diagnosis_id, is_confirmed,
|
||
FROM_UNIXTIME(confirmed_time) as confirmed_at
|
||
FROM la_diagnosis_view_records
|
||
WHERE diagnosis_id = 4;
|
||
```
|
||
|
||
### 6. API接口测试
|
||
|
||
#### 测试 diagnosisDetail 接口
|
||
```bash
|
||
curl -X GET "http://your-domain/api/tcm/diagnosisDetail?id=4&user_id=1&share_user_id=2"
|
||
```
|
||
|
||
预期响应:
|
||
```json
|
||
{
|
||
"code": 1,
|
||
"msg": "success",
|
||
"data": {
|
||
"id": 4,
|
||
"patient_name": "张三",
|
||
// ... 其他诊单信息
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 测试 confirmDiagnosis 接口
|
||
```bash
|
||
curl -X POST "http://your-domain/api/tcm/confirmDiagnosis" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"id": 4, "user_id": 1, "share_user": 2}'
|
||
```
|
||
|
||
预期响应:
|
||
```json
|
||
{
|
||
"code": 1,
|
||
"msg": "确认成功",
|
||
"data": []
|
||
}
|
||
```
|
||
|
||
### 7. 常见问题
|
||
|
||
#### Q1: 表创建失败
|
||
**A:** 检查数据库权限,确保有CREATE TABLE权限
|
||
|
||
#### Q2: 查看记录没有创建
|
||
**A:** 检查以下几点:
|
||
- 确认表已创建
|
||
- 检查PHP错误日志
|
||
- 确认 `DiagnosisViewRecord` 模型文件存在
|
||
- 检查数据库连接配置
|
||
|
||
#### Q3: user_id 总是0
|
||
**A:** 需要在小程序中实现用户登录功能,并在 `parsePageParams` 中获取用户ID
|
||
|
||
#### Q4: 确认功能不工作
|
||
**A:** 检查:
|
||
- 确认接口已添加到 `$notNeedLogin` 数组
|
||
- 检查POST参数是否正确传递
|
||
- 查看PHP错误日志
|
||
|
||
### 8. 数据库索引优化
|
||
|
||
如果查看记录表数据量较大,建议添加以下索引:
|
||
|
||
```sql
|
||
-- 已在建表语句中包含,如果没有可手动添加
|
||
ALTER TABLE la_diagnosis_view_records
|
||
ADD INDEX idx_user_diagnosis (user_id, diagnosis_id);
|
||
|
||
ALTER TABLE la_diagnosis_view_records
|
||
ADD INDEX idx_diagnosis (diagnosis_id);
|
||
|
||
ALTER TABLE la_diagnosis_view_records
|
||
ADD INDEX idx_patient (patient_id);
|
||
|
||
ALTER TABLE la_diagnosis_view_records
|
||
ADD INDEX idx_share_user (share_user_id);
|
||
```
|
||
|
||
### 9. 数据清理
|
||
|
||
定期清理过期的查看记录(可选):
|
||
|
||
```sql
|
||
-- 删除30天前的未确认记录
|
||
DELETE FROM la_diagnosis_view_records
|
||
WHERE is_confirmed = 0
|
||
AND create_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
|
||
|
||
-- 或使用软删除
|
||
UPDATE la_diagnosis_view_records
|
||
SET delete_time = UNIX_TIMESTAMP()
|
||
WHERE is_confirmed = 0
|
||
AND create_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
|
||
```
|
||
|
||
### 10. 下一步
|
||
|
||
功能安装完成后,可以:
|
||
1. 实现查看记录的管理界面
|
||
2. 添加数据统计报表
|
||
3. 实现查看记录的导出功能
|
||
4. 添加消息通知(如:诊单被查看时通知医生)
|
||
|
||
## 相关文档
|
||
|
||
- [功能说明文档](./DIAGNOSIS_VIEW_RECORD_FEATURE.md)
|
||
- [Scene参数说明](./MINI_PROGRAM_SCENE_PARAMS.md)
|
||
- [小程序二维码功能](./QRCODE_README.md)
|