8.0 KiB
8.0 KiB
✅ 家长预约支付流程修复 - 方案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.vuepeidu/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. ✅ 完成支付后,管理师端能看到订单
📊 修改文件清单
后端文件
peidu/backend/src/main/java/com/peidu/controller/ManagerController.java- 保持查询条件:
status=0 AND pay_status=1
- 保持查询条件:
前端文件
-
peidu/uniapp/src/pages/booking/components/ParentBooking.vue- 修改预约成功提示
- 引导用户立即支付
-
peidu/uniapp/src/order-package/pages/order/detail.vue- 修复状态文本显示
- 修复按钮逻辑
-
peidu/uniapp/src/order-package/pages/order/my-orders.vue- 修复状态文本显示
- 修复按钮逻辑
🎯 核心改进
用户体验优化
修改前:
家长预约 → 提示"我们会联系您" → 家长离开 → 没有支付
→ 管理师看不到订单 → 业务中断 ❌
修改后:
家长预约 → 提示"请立即支付" → 引导支付 → 支付成功
→ 管理师看到订单 → 正常派单 ✅
关键改进点
- 明确提示:告诉家长需要支付才能完成预约
- 引导支付:提供"立即支付"按钮,直接跳转支付页面
- 保留选择:提供"稍后支付"选项,不强制立即支付
- 状态清晰:订单状态和按钮文字准确反映当前状态
⚠️ 注意事项
1. 未支付订单处理
- 未支付订单不会出现在管理师待派单列表 ✅
- 家长可以在"我的订单"中看到未支付订单
- 家长可以随时点击"立即支付"完成支付
- 建议设置支付超时机制(如30分钟未支付自动取消)
2. 支付超时处理
建议添加:
// 订单创建时设置过期时间
order.expireTime = new Date(Date.now() + 30 * 60 * 1000) // 30分钟后过期
// 定时任务检查过期订单
// 自动取消超过30分钟未支付的订单
3. 用户提醒
建议添加:
- 支付倒计时提示
- 未支付订单推送提醒
- 订单即将过期提醒
📝 总结
问题根源
家长预约成功后,没有引导去支付,导致订单停留在"待支付"状态,管理师看不到。
解决方案
优化预约成功提示,引导家长立即支付,确保订单流转到"待派单"状态。
业务流程
严格遵循"先支付后派单"的流程,只有已支付的订单才会出现在管理师待派单列表。
修复状态
✅ 预约成功提示已优化
✅ 支付引导已添加
✅ 状态显示已修复
✅ 按钮逻辑已修复
✅ 可以立即测试
修复完成时间: 2026-01-25
修复人员: Kiro AI
测试状态: 待测试