# ✅ 家长预约支付流程修复 - 方案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` **修改前**: ```javascript uni.showModal({ title: '预约成功', content: `订单号:${order.orderNo}\n我们会尽快与您联系,请保持电话畅通`, cancelText: '查看订单', confirmText: '查看日历' }) ``` **修改后**: ```javascript 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` **查询条件**(保持不变): ```java // 待派单订单数(status=0 表示待派单,且必须已支付 payStatus=1) QueryWrapper 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` **状态文本**: ```javascript const statusMap = { 0: '待支付', // 家长预约后需要支付 1: '待派单', // 已支付,等待管理师派单 2: '已派单', // 管理师已派单 3: '待服务', // 等待服务 4: '服务中', // 服务进行中 5: '已完成', // 服务完成 '-1': '已取消', '-2': '已退款' } ``` **订单详情页面按钮**: ```vue ``` --- ## 🧪 测试流程 ### 完整测试步骤 #### 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. 支付超时处理 建议添加: ```javascript // 订单创建时设置过期时间 order.expireTime = new Date(Date.now() + 30 * 60 * 1000) // 30分钟后过期 // 定时任务检查过期订单 // 自动取消超过30分钟未支付的订单 ``` ### 3. 用户提醒 建议添加: - 支付倒计时提示 - 未支付订单推送提醒 - 订单即将过期提醒 --- ## 📝 总结 ### 问题根源 家长预约成功后,没有引导去支付,导致订单停留在"待支付"状态,管理师看不到。 ### 解决方案 优化预约成功提示,引导家长立即支付,确保订单流转到"待派单"状态。 ### 业务流程 严格遵循"先支付后派单"的流程,只有已支付的订单才会出现在管理师待派单列表。 ### 修复状态 ✅ 预约成功提示已优化 ✅ 支付引导已添加 ✅ 状态显示已修复 ✅ 按钮逻辑已修复 ✅ 可以立即测试 --- **修复完成时间**: 2026-01-25 **修复人员**: Kiro AI **测试状态**: 待测试