peixue-dev/Archive/peidu-temp-files/docs/🔍服务记录不显示-调试指南.md

4.1 KiB
Raw Blame History

🔍 服务记录不显示 - 调试指南

问题: 订单详情页面没有显示"服务记录"区域


📋 排查步骤

步骤1: 检查后端是否重新编译

后端修复了类型错误后,需要重新编译。

执行:

cd peidu/backend
mvn clean package -DskipTests

等待编译完成约2-3分钟


步骤2: 检查前端是否重新编译

前端代码已修改,需要重新编译。

执行:

cd peidu/uniapp
npm run build:mp-weixin

等待编译完成约1-2分钟


步骤3: 检查数据库中是否有打卡记录

在 Navicat 中执行以下SQL检查这个订单是否有打卡记录

-- 查看订单ID从截图看订单显示的是"小学套餐"
-- 假设订单ID是你点击的那个订单的ID

-- 方法1: 通过订单号查询
SELECT o.id, o.order_no, o.status, o.service_name
FROM `order` o
WHERE o.service_name LIKE '%小学%'
AND o.status = 4  -- 已完成
ORDER BY o.id DESC
LIMIT 10;

-- 记下订单ID然后查询打卡记录
SELECT * 
FROM check_in_record 
WHERE order_id = <你的订单ID>;

-- 如果没有记录,说明这个订单没有打卡记录
-- 需要找一个有打卡记录的订单来测试

步骤4: 查看浏览器控制台日志

在微信开发者工具中:

  1. 打开"调试器"
  2. 切换到"Console"标签
  3. 查看日志输出

查找以下日志:

=== 开始加载订单详情 ===
订单ID: xxx
尝试调用完整详情API...
完整详情API成功: {...}
提取的数据: {...}
- 签到记录: {...}  ← 看这里!
- 签退记录: {...}  ← 看这里!
- 服务时长: xxx    ← 看这里!

如果没有看到签到/签退记录的日志,说明后端没有返回数据。


步骤5: 测试后端API

在浏览器中直接访问API查看返回数据

http://localhost:8080/api/order/detail-full/<订单ID>

查看返回的JSON数据,确认是否包含:

  • checkInRecord 字段
  • checkOutRecord 字段
  • serviceDurationText 字段

示例返回数据:

{
  "code": 200,
  "data": {
    "id": 123,
    "orderNo": "PD20260119...",
    "status": 4,
    "checkInRecord": {
      "id": 29,
      "checkType": "checkin",
      "checkTime": "2026-01-16 18:45:19",
      "photoUrl": "http://...",
      "address": "某某地址",
      "latitude": 39.9,
      "longitude": 116.4
    },
    "checkOutRecord": {
      ...
    },
    "serviceDurationText": "2小时30分钟"
  }
}

🎯 可能的原因和解决方案

原因1: 后端未重新编译

解决: 重新编译后端步骤1

原因2: 前端未重新编译

解决: 重新编译前端步骤2

原因3: 订单没有打卡记录

解决:

  1. 找一个有打卡记录的订单测试
  2. 或者创建新订单并完成签到签退流程

原因4: 数据库 order_id 字段未关联

解决: 执行SQL关联数据

UPDATE check_in_record c
INNER JOIN `order` o ON c.teacher_id = o.teacher_id 
  AND DATE(c.check_time) = o.service_date
SET c.order_id = o.id
WHERE c.order_id IS NULL;

🧪 完整测试流程

方案A: 使用现有数据测试

  1. 在数据库中找一个有打卡记录的订单:
SELECT o.id, o.order_no, o.service_name, o.status,
       COUNT(c.id) as checkin_count
FROM `order` o
LEFT JOIN check_in_record c ON c.order_id = o.id
WHERE o.status = 4
GROUP BY o.id
HAVING checkin_count > 0
LIMIT 10;
  1. 在家长端查看这个订单的详情

方案B: 创建新订单测试

  1. 家长端: 创建新订单
  2. 家长端: 支付订单
  3. 管理师端: 派单给陪伴员
  4. 陪伴员端: 接单
  5. 陪伴员端: 签到(上传照片)
  6. 陪伴员端: 签退(上传照片)
  7. 家长端: 查看订单详情

预期结果: 显示服务记录


📝 调试清单

  • 后端已重新编译
  • 前端已重新编译
  • 数据库有打卡记录
  • order_id 字段已关联
  • 浏览器控制台有日志
  • 后端API返回正确数据
  • 前端正确提取数据

下一步: 按照以上步骤逐一排查,找出问题所在。