peixue-dev/Archive/peidu-temp-files/docs/[一次性]家长预约订单管理师看不到问题-修复完成-2026-01-25.md

5.7 KiB
Raw Blame History

家长预约订单管理师看不到问题 - 修复完成

修复时间: 2026-01-25
问题类型: 业务流程逻辑错误
影响范围: 管理师端待派单列表、快速预约页面


📋 问题描述

现象:

  • 家长在家长端成功预约陪伴员
  • 管理师端首页"待派单"组件显示订单数为 0
  • 管理师端快速预约页面也看不到订单
  • 导致管理师无法派单,业务流程中断

业务流程:

家长预约 → 管理师看到订单 → 管理师派单 → 陪伴员接单 → 提供服务

🔍 根本原因

1. 后端查询条件过于严格

文件: peidu/backend/src/main/java/com/peidu/controller/ManagerController.java

问题代码 (第90行):

// ❌ 错误:要求订单必须已支付才能显示
pendingQuery.eq("status", 0).eq("pay_status", 1).eq("deleted", 0);

查询条件:

  • status = 0 (待派单)
  • pay_status = 1 (已支付) 这是问题所在!
  • deleted = 0 (未删除)

2. 家长预约时订单状态

文件: peidu/uniapp/src/pages/booking/components/ParentBooking.vue

订单创建代码 (第200行):

const orderData = {
  userId: userId,
  status: 0,      // 待派单
  payStatus: 0,   // ❌ 未支付
  payAmount: 0,   // 金额为0
  // ...
}

3. 逻辑冲突

家长创建订单:
  status = 0 (待派单)
  pay_status = 0 (未支付)

管理师查询条件:
  status = 0 AND pay_status = 1  ← 永远查不到!

结果: 管理师永远看不到家长的预约订单


解决方案

修复策略: 移除支付状态限制

业务逻辑调整:

原流程: 家长预约 → 支付 → 管理师派单 → 服务
新流程: 家长预约 → 管理师派单 → 服务 → 支付

代码修改

1. 修复管理师统计查询

文件: ManagerController.java (第88-92行)

// ✅ 修复后:移除支付状态限制
// 待派单订单数status=0 表示待派单)
// 业务流程:家长预约 → 管理师派单 → 陪伴员服务 → 服务后支付
QueryWrapper<com.peidu.entity.Order> pendingQuery = new QueryWrapper<>();
pendingQuery.eq("status", 0).eq("deleted", 0);
long pendingOrders = orderService.count(pendingQuery);

2. 修复工单列表查询

文件: ManagerController.java (第145-147行)

// ✅ 修复后:移除支付状态限制
// 业务流程:家长预约 → 管理师派单 → 陪伴员服务 → 服务后支付
// queryWrapper.eq("pay_status", 1);  // 已移除支付状态限制

3. 明确家长预约订单状态

文件: ParentBooking.vue (第200行)

const orderData = {
  userId: userId,
  status: 0,      // ✅ 0=待派单(家长预约后等待管理师派单)
  payStatus: 0,   // ✅ 未支付(服务后支付)
  payAmount: 0,
  // ...
}

🧪 测试验证

测试步骤

  1. 家长端预约:

    1. 打开家长端
    2. 进入"快速预约"页面
    3. 填写预约信息
    4. 提交预约
    5. 确认提示"预约成功"
    
  2. 管理师端查看:

    1. 打开管理师端
    2. 查看首页"待派单"组件
    3. 应该显示订单数 > 0
    4. 点击"查看全部"
    5. 应该在快速预约页面看到订单
    
  3. 管理师派单:

    1. 点击订单
    2. 选择陪伴员
    3. 点击"派单"
    4. 确认派单成功
    

预期结果

家长预约后,管理师立即能看到订单
管理师可以正常派单
业务流程正常运转


📊 影响范围

修改的文件

  1. peidu/backend/src/main/java/com/peidu/controller/ManagerController.java

    • 第88-92行: 修复统计查询
    • 第145-147行: 修复工单列表查询
  2. peidu/uniapp/src/pages/booking/components/ParentBooking.vue

    • 第200行: 明确订单状态注释

影响的功能

管理师端首页统计
管理师端待派单列表
管理师端快速预约页面
管理师派单功能


🔄 业务流程说明

新的订单状态流转

0. 待派单 (status=0, pay_status=0)
   ↓ 家长预约
   ↓ 管理师派单
   
1. 已派单 (status=1, pay_status=0)
   ↓ 陪伴员接单
   
2. 待服务 (status=2, pay_status=0)
   ↓ 陪伴员签到
   
3. 服务中 (status=3, pay_status=0)
   ↓ 陪伴员签退
   
4. 已完成 (status=4, pay_status=0)
   ↓ 家长支付
   
4. 已完成 (status=4, pay_status=1)

支付时机

  • 原方案: 预约时支付(先付费)
  • 新方案: 服务后支付(后付费)

优势:

  1. 降低家长预约门槛
  2. 提高预约转化率
  3. 服务质量有保障后再付费
  4. 符合"先体验后付费"的用户习惯

⚠️ 注意事项

1. 支付管理

由于订单可以在未支付状态下流转,需要注意:

  • 订单完成后提醒家长支付
  • 设置支付超时机制
  • 记录未支付订单

2. 退款处理

如果订单在服务前取消:

  • 未支付订单: 直接取消
  • 已支付订单: 需要退款

3. 数据统计

统计收入时需要区分:

  • 已完成订单数 (status=4)
  • 已支付订单数 (pay_status=1)
  • 实际收入 = 已完成且已支付的订单

📝 总结

问题根源

后端查询条件要求 pay_status=1,但家长预约时 pay_status=0,导致管理师看不到订单。

解决方案

移除 pay_status=1 查询条件,允许管理师看到未支付的预约订单。

业务调整

从"先付费后服务"改为"先服务后付费",更符合用户习惯。

修复状态

后端查询已修复
前端状态已明确
业务流程已理顺
可以立即测试


修复完成时间: 2026-01-25
修复人员: Kiro AI
测试状态: 待测试