Files
rlz/docs/订单流转设计方案.md
renjianbo 17e91fcf84 refactor: redesign order flow - serve first, pay later
- Redesign order status flow: 0待接单→1已接单→2服务中→3待支付→4已完成
- Allow service start from status 1 (removed payment barrier)
- Add payment entry after service completion (status 3)
- Update Android/miniprogram UI status mappings
- Add order flow design document to docs/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-21 00:56:17 +08:00

7.1 KiB
Raw Blame History

瑞来健康 — 订单流转设计方案

一、业务流程总览

患者端(小程序)         陪护端(Android)          后台管理员
    │                      │                      │
    │ 下单                 │                      │
    ├─────────────────────────────────────────────→ 0 待接单
    │                      │                      │
    │                 [确认接单]                   │
    ├─────────────────────────────────────────────→ 1 已接单(待服务)
    │                      │                      │
    │                 [开始服务]                   │
    ├─────────────────────────────────────────────→ 2 服务中
    │                      │                      │
    │                 [完成服务]                   │
    ├─────────────────────────────────────────────→ 3 待支付
    │                      │                      │
    │ [微信支付]           │                      │
    ├─────────────────────────────────────────────→ 4 已完成(已支付)
    │                      │                      │
    │                      │                 [结算]→ 8 已结算

二、订单状态定义

status 名称 含义 触发方 触发动作
-2 已取消 订单已取消 患者/陪护员 取消订单
-1 拒绝接单 陪护员拒绝了订单 陪护员 拒绝接单
0 待接单 患者已下单,等待陪护员接单 患者 提交订单
1 已接单 陪护员已接单,等待开始服务 陪护员 确认接单
2 服务中 陪护员已到场开始执行服务 陪护员 开始服务
3 待支付 服务已完成,等待患者付款 陪护员 完成服务
4 已完成 患者已付款,订单完结 患者 微信支付
5 申请退款 患者申请退款 患者 申请退款
6 退款中 微信退款处理中 系统 退款回调
7 已退款 退款已到账 系统 退款回调
8 已结算 平台已与陪护员完成结算 管理员 确认结算

三、各阶段取消/退款规则

状态 取消规则
0 待接单 患者可自行取消;陪护员可拒绝接单
1 已接单 双方可取消(需填写原因)
2 服务中 不可自行取消,需联系平台客服介入调解
3 待支付 不可取消,患者应按约定付款;如有争议联系客服
4 已完成 患者可申请退款 → 5申请退款 → 6退款中 → 7已退款

四、关键接口

4.1 接单

POST /system/view/acceptOrderYes
参数: { orderId }
作用: status 0 → 1, 绑定陪护员ID
调用方: Android 陪护端

文件: OrderViewServiceImpl.java:100 acceptOrderYes()

4.2 开始服务

POST /system/view/startServiceWithOrder
参数: { orderId }
作用: status 1 → 2(仅status=1时可执行)
调用方: Android 陪护端/Miniprogram

文件: OrderViewServiceImpl.java:117 startServiceWithOrder()

4.3 完成服务

GET /system/order/completeOrder/{orderId}
参数: orderId (路径参数)
作用: status 2 → 3(需当前时间 > 服务结束时间)
调用方: Android 陪护端

文件: RlzOrderServiceImpl.java:276 completeOrderByOrderId()

4.4 患者付款

GET /system/order/weixinPay/{orderId}
作用: status 3 → 4(微信支付回调触发)
调用方: 微信小程序端

文件: RlzOrderController.java:191 weixinPay()

4.5 支付回调(微信异步通知)

POST /system/weixin/wxPayNotify
作用: 支付成功后 status 3 → 4

文件: RlzOrderServiceImpl.java:213 weixinPayOrderNext()

4.6 取消订单

GET /system/order/concelOrder/{orderId}
作用: status 0/1 → -2

文件: RlzOrderServiceImpl.java:179 concelOrderByOrderId()

4.7 退款申请

GET /system/order/refundOrder/{orderId}
作用: status 4 → 5 → 6 → 7

文件: RlzOrderController.java:213 refundOrder()

4.8 管理员结算

PUT /system/view/settleOrder/{orderId}
作用: status 4 → 8

文件: OrderViewController.java:289 settleOrder()

五、改动清单

5.1 后端 (Java Spring Boot)

文件 改动内容
OrderViewServiceImpl.java:120 "2" → "1":已接单即可开始服务
OrderViewServiceImpl.java:131 "3" → "2":服务中才能完成;设置 status = "3"
RlzOrderServiceImpl.java:226 支付回调设置 status = "4" 而非 "2"
RlzOrderServiceImpl.java:182 取消条件:status "2","3" 不可取消,仅 "0","1","4" 可取消
RlzOrderController.java:191-211 weixinPay 接口增加 status=3 的校验

5.2 微信小程序 (coupon)

文件 改动内容
pages/order/order.js:15-16 状态标签数组:替换"待服务"为"待支付",移除冗余项
pages/order/order.wxml:27,45 status=1 时隐藏"去付款";status=3 时显示"去付款"
pages/order/order.wxml:22-33 状态文案映射更新
pages/orderdetail/orderdetail.js 确认支付入口逻辑对应更新

5.3 Android 陪护端 (peizhen)

文件 改动内容
TobeSerFragment.java:239 查询参数从 "1,2" 改为 "1"(待服务仅=已接单)
SerFragment.java:225 查询参数从 "1,2" 改为 "2"(服务中仅=服务中)
CusListAdapter.java:38-77 status 标签映射更新:1=已接单, 2=服务中, 3=待支付, 4=已完成
CustomerDetailActivity.java:27-94 各状态的UI展示文案和样式更新

六、设计理由

6.1 为什么先服务后付款

  1. 陪诊场景天然适配:患者与陪护员在医院当面接触,服务过程透明可验证
  2. 降低患者决策门槛:无需先向陌生人付款,信任成本更低
  3. 激励服务质量:陪护员知道患者满意才会付款,有动力做好服务
  4. 风险可控:订单金额小(20-200元),且有平台客服兜底

6.2 风险控制措施

  1. 有未支付订单的患者限制再次下单
  2. 服务中状态锁定、不可取消,保护陪护员劳动
  3. 管理员退款审核机制保留(status 5-7 流程)
  4. 平台客服介入机制(status 2-3 争议时)

6.3 业务闭环

患者端(下单+付款)  ←→  陪护端(接单+服务)  ←→  管理后台(结算+纠纷处理)
      │                       │                        │
      └───────────────────────┴────────────────────────┘
                    三端数据实时同步