Files
zyt/DIAGNOSIS_VIEW_RECORD_INSTALL.md
T
2026-03-06 17:30:37 +08:00

5.7 KiB
Raw Blame History

诊单查看记录功能 - 安装指南

安装步骤

1. 创建数据库表

执行以下SQL语句创建诊单查看记录表:

# 方式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. 验证表创建

登录数据库,检查表是否创建成功:

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获取逻辑:

// 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 表,应该有一条新记录
SELECT * FROM la_diagnosis_view_records ORDER BY id DESC LIMIT 1;

5.2 测试重复查看

  1. 再次扫描同一个二维码
  2. 检查数据库,view_count 应该增加,last_view_time 应该更新
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 应该变为1confirmed_time 应该有值
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 接口

curl -X GET "http://your-domain/api/tcm/diagnosisDetail?id=4&user_id=1&share_user_id=2"

预期响应:

{
    "code": 1,
    "msg": "success",
    "data": {
        "id": 4,
        "patient_name": "张三",
        // ... 其他诊单信息
    }
}

测试 confirmDiagnosis 接口

curl -X POST "http://your-domain/api/tcm/confirmDiagnosis" \
  -H "Content-Type: application/json" \
  -d '{"id": 4, "user_id": 1, "share_user": 2}'

预期响应:

{
    "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. 数据库索引优化

如果查看记录表数据量较大,建议添加以下索引:

-- 已在建表语句中包含,如果没有可手动添加
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. 数据清理

定期清理过期的查看记录(可选):

-- 删除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. 添加消息通知(如:诊单被查看时通知医生)

相关文档