peixue-dev/Archive/peidu-temp-files/docs/[一次性]家长预约支付流程修复-方案A-2026-01-25.md

8.0 KiB
Raw Blame History

家长预约支付流程修复 - 方案A先支付后派单

修复时间: 2026-01-25
业务流程: 家长预约 → 支付 → 管理师派单 → 陪伴员服务
修复类型: 用户体验优化


📋 业务流程确认

方案A先支付后派单

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

核心逻辑

  • 只有已支付的订单才会出现在管理师的待派单列表
  • 未支付的订单不会被管理师看到
  • 家长必须先支付才能完成预约

🔍 问题分析

原问题

现象

  • 家长在家长端预约成功
  • 但管理师端看不到订单

原因

  • 家长预约后创建订单 status=0, pay_status=0(待支付)
  • 预约成功提示"我们会尽快与您联系"
  • 家长以为预约完成,没有去支付
  • 管理师查询条件:status=0 AND pay_status=1
  • 结果:管理师看不到未支付的订单

根本原因 家长预约成功后,没有引导去支付!


解决方案

修复内容

1. 优化预约成功提示

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

修改前

uni.showModal({
  title: '预约成功',
  content: `订单号:${order.orderNo}\n我们会尽快与您联系请保持电话畅通`,
  cancelText: '查看订单',
  confirmText: '查看日历'
})

修改后

uni.showModal({
  title: '预约成功',
  content: `订单号:${order.orderNo}\n请立即支付以完成预约`,
  cancelText: '稍后支付',
  confirmText: '立即支付',
  success: (modalRes) => {
    if (modalRes.confirm) {
      // 跳转到支付页面
      uni.navigateTo({
        url: `/order-package/pages/payment/index?orderId=${order.id}`
      })
    } else {
      // 跳转到订单详情
      uni.navigateTo({
        url: `/order-package/pages/order/detail?id=${order.id}`
      })
    }
  }
})

改进点

  • 明确提示"请立即支付以完成预约"
  • 提供"立即支付"按钮,直接跳转支付页面
  • 提供"稍后支付"选项,跳转订单详情(可以后续支付)

2. 确认订单状态定义

订单状态映射

status 状态名称 说明 pay_status
0 待支付 家长预约后需要支付 0
1 待派单 已支付,等待管理师派单 1
2 已派单 管理师已派单,等待陪伴员接单 1
3 待服务 陪伴员已接单,等待签到 1
4 服务中 已签到,服务进行中 1
5 已完成 已签退,服务完成 1
-1 已取消 订单已取消 -
-2 已退款 订单已退款 -

3. 保持后端查询逻辑

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

查询条件(保持不变):

// 待派单订单数status=0 表示待派单,且必须已支付 payStatus=1
QueryWrapper<com.peidu.entity.Order> pendingQuery = new QueryWrapper<>();
pendingQuery.eq("status", 0).eq("pay_status", 1).eq("deleted", 0);
long pendingOrders = orderService.count(pendingQuery);

说明

  • 只查询 status=0 AND pay_status=1 的订单
  • 这样管理师只能看到已支付的订单
  • 符合"先支付后派单"的业务逻辑

4. 修复前端状态显示

文件:

  • peidu/uniapp/src/order-package/pages/order/detail.vue
  • peidu/uniapp/src/order-package/pages/order/my-orders.vue

状态文本

const statusMap = {
  0: '待支付',  // 家长预约后需要支付
  1: '待派单',  // 已支付,等待管理师派单
  2: '已派单',  // 管理师已派单
  3: '待服务',  // 等待服务
  4: '服务中',  // 服务进行中
  5: '已完成',  // 服务完成
  '-1': '已取消',
  '-2': '已退款'
}

订单详情页面按钮

<!-- status=0: 待支付 -->
<template v-if="order.status === 0">
  <button @click="cancelOrder">取消订单</button>
  <button @click="handlePay">立即支付</button>
</template>

<!-- status=1: 待派单 -->
<template v-else-if="order.status === 1">
  <button @click="goBack">返回</button>
  <button @click="contactService">联系客服</button>
</template>

🧪 测试流程

完整测试步骤

1. 家长端预约

1. 打开家长端
2. 进入"快速预约"页面
3. 填写预约信息
4. 点击"提交预约"
5. ✅ 看到提示"预约成功,请立即支付以完成预约"
6. 点击"立即支付"
7. ✅ 跳转到支付页面
8. 完成支付
9. ✅ 支付成功,订单状态变为"待派单"

2. 管理师端查看

1. 打开管理师端
2. 查看首页"待派单"组件
3. ✅ 应该显示订单数 > 0刚才支付的订单
4. 点击"查看全部"
5. ✅ 在快速预约页面看到订单
6. 点击订单,选择陪伴员
7. 点击"派单"
8. ✅ 派单成功

3. 未支付订单测试

1. 家长端预约
2. 看到支付提示
3. 点击"稍后支付"
4. ✅ 跳转到订单详情,状态显示"待支付"
5. 管理师端查看
6. ✅ 管理师看不到这个未支付的订单(正确!)
7. 家长端订单列表
8. ✅ 看到"待支付"订单,有"立即支付"按钮
9. 点击"立即支付"
10. ✅ 完成支付后,管理师端能看到订单

📊 修改文件清单

后端文件

  1. peidu/backend/src/main/java/com/peidu/controller/ManagerController.java
    • 保持查询条件:status=0 AND pay_status=1

前端文件

  1. peidu/uniapp/src/pages/booking/components/ParentBooking.vue

    • 修改预约成功提示
    • 引导用户立即支付
  2. peidu/uniapp/src/order-package/pages/order/detail.vue

    • 修复状态文本显示
    • 修复按钮逻辑
  3. peidu/uniapp/src/order-package/pages/order/my-orders.vue

    • 修复状态文本显示
    • 修复按钮逻辑

🎯 核心改进

用户体验优化

修改前

家长预约 → 提示"我们会联系您" → 家长离开 → 没有支付
→ 管理师看不到订单 → 业务中断 ❌

修改后

家长预约 → 提示"请立即支付" → 引导支付 → 支付成功
→ 管理师看到订单 → 正常派单 ✅

关键改进点

  1. 明确提示:告诉家长需要支付才能完成预约
  2. 引导支付:提供"立即支付"按钮,直接跳转支付页面
  3. 保留选择:提供"稍后支付"选项,不强制立即支付
  4. 状态清晰:订单状态和按钮文字准确反映当前状态

⚠️ 注意事项

1. 未支付订单处理

  • 未支付订单不会出现在管理师待派单列表
  • 家长可以在"我的订单"中看到未支付订单
  • 家长可以随时点击"立即支付"完成支付
  • 建议设置支付超时机制如30分钟未支付自动取消

2. 支付超时处理

建议添加:

// 订单创建时设置过期时间
order.expireTime = new Date(Date.now() + 30 * 60 * 1000) // 30分钟后过期

// 定时任务检查过期订单
// 自动取消超过30分钟未支付的订单

3. 用户提醒

建议添加:

  • 支付倒计时提示
  • 未支付订单推送提醒
  • 订单即将过期提醒

📝 总结

问题根源

家长预约成功后,没有引导去支付,导致订单停留在"待支付"状态,管理师看不到。

解决方案

优化预约成功提示,引导家长立即支付,确保订单流转到"待派单"状态。

业务流程

严格遵循"先支付后派单"的流程,只有已支付的订单才会出现在管理师待派单列表。

修复状态

预约成功提示已优化
支付引导已添加
状态显示已修复
按钮逻辑已修复
可以立即测试


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