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

200 lines
4.1 KiB
Markdown
Raw Normal View History

2026-02-28 17:26:03 +08:00
# 🔍 服务记录不显示 - 调试指南
**问题**: 订单详情页面没有显示"服务记录"区域
---
## 📋 排查步骤
### 步骤1: 检查后端是否重新编译
后端修复了类型错误后,需要重新编译。
**执行**:
```bash
cd peidu/backend
mvn clean package -DskipTests
```
**等待编译完成**约2-3分钟
---
### 步骤2: 检查前端是否重新编译
前端代码已修改,需要重新编译。
**执行**:
```bash
cd peidu/uniapp
npm run build:mp-weixin
```
**等待编译完成**约1-2分钟
---
### 步骤3: 检查数据库中是否有打卡记录
在 Navicat 中执行以下SQL检查这个订单是否有打卡记录
```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` 字段
**示例返回数据**:
```json
{
"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关联数据
```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. 在数据库中找一个有打卡记录的订单:
```sql
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;
```
2. 在家长端查看这个订单的详情
---
### 方案B: 创建新订单测试
1. **家长端**: 创建新订单
2. **家长端**: 支付订单
3. **管理师端**: 派单给陪伴员
4. **陪伴员端**: 接单
5. **陪伴员端**: 签到(上传照片)
6. **陪伴员端**: 签退(上传照片)
7. **家长端**: 查看订单详情
**预期结果**: 显示服务记录
---
## 📝 调试清单
- [ ] 后端已重新编译
- [ ] 前端已重新编译
- [ ] 数据库有打卡记录
- [ ] order_id 字段已关联
- [ ] 浏览器控制台有日志
- [ ] 后端API返回正确数据
- [ ] 前端正确提取数据
---
**下一步**: 按照以上步骤逐一排查,找出问题所在。