--- html: embed_local_images: false embed_svg: true offline: false toc: true print_background: false export_on_save: html: true --- [TOC] #### 选择技师下单流程 ```mermaid flowchart TD %% 基础选择流程 Start([开始]) --> A[用户选择服务位置] A --> B[查询附近技师列表] B --> C[用户选择技师] C --> D[展示技师项目列表] D --> E[用户选择项目] E --> F[展示项目详情] F --> G[用户选择服务时间] G --> H[用户选择营销卷] H --> I[计算订单费用] %% 支付流程 I --> J[用户确认下单] J --> K{支付结果} %% 支付失败处理 K -->|失败| L[订单状态:待付款] L --> M[客服跟进] M --> N{用户选择} N -->|重新支付| J N -->|取消订单| O[退款处理] %% 支付成功处理 K -->|成功| P[订单状态:已支付] P --> Q[推送订单给技师] %% 技师处理流程 Q --> R{技师处理} %% 技师接单分支 R -->|接单| S[订单状态:已接单] S --> T[技师确认出发] T --> U[订单状态:已出发] %% 技师拒单分支 R -->|拒单| V[订单状态:已拒绝] V --> W[客服处理] W --> X{处理方案} X -->|更换技师| Q X -->|用户退款| O %% 接单超时处理 R -->|超时| Y[客服跟进] Y --> Z{处理结果} Z -->|联系上技师| R Z -->|更换技师| Q Z -->|取消订单| O %% 结束节点 U --> End([开始服务]) O --> Cancel([订单结束]) %% 样式定义 classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px classDef process fill:#dcedc8,stroke:#33691e classDef decision fill:#fff3e0,stroke:#e65100 classDef status fill:#e3f2fd,stroke:#0d47a1 %% 应用样式 class K,R,X,Z decision class L,P,S,U,V status class A,B,C,D,E,F,G,H,I process click A,B,C href "#用户选择技师" click D,E,F href "#用户选择项目" click G href "#用户选择可服务时间" click H,I href "#用户选择营销卷" click J href "#用户点击立即结算" click L href "#支付失败" click P href "#支付成功" click S href "#技师接单" click V href "#技师拒绝接单" click X href "#订单超时" ``` ##### 用户选择技师 **_后台逻辑:_** 1. 获取前端传递的经纬度,根据经纬度查询出附近的技师 2. [获取技师列表](#获取技师列表) 3. [获取技师详情](#获取技师详情) **_UI 图:_** ![用户选择技师](./assets/下单流程图片/选择技师下单.png) ##### 用户选择项目 **_后台逻辑:_** 1. 获取前端传递的技师 id,查询出该技师下可服务项目 2. 获取前端传递的区域地址,查询出该区域地址可服务项目(370602 或 156370602) 3. [获取项目列表](#获取项目列表-技师开通租户项目) 4. [获取项目详情](#获取项目详情-租户项目) **_UI 图:_** ![用户选择项目](./assets/下单流程图片/选择项目.png) ##### 用户选择可服务时间 **前端逻辑** 1. 获取前端传递的技师 id 和项目 id,查询出该技师下,该项目的可服务时间,以及下单详情信息 2. 获取前端传递的区域地址,计算订单金额(370602 或 156370602) 3. 获取前端传递的路程,计算订单金额 **_后台逻辑:_** 1. [计算订单金额](#计算订单金额) 2. [订单详情](#订单初始化-前端初始化) **_UI 图:_** ![用户选择可服务时间](./assets/下单流程图片/选择可服务时间.png) ##### 用户选择营销卷 **_后台逻辑:_** 1. 获取前端传递的技师 id 和项目 id,查询出该技师下,该项目的可使用的营销卷 2. 选择优惠劵 3. [计算订单金额](#计算订单金额) **_UI 图:_** ![用户选择优惠券](./assets/下单流程图片/选择优惠劵.png) ##### 用户点击立即结算 **_后台逻辑:_** 1. 创建订单,并判断使用的那种支付方式 2. [创建订单](#创建订单) 3. [调用支付](#获取支付配置) **_UI 图:_** ![用户点击立即结算](./assets/下单流程图片/立即结算.png) ##### 支付失败 **_后台逻辑:_** 1. 支付超时、取消支付导致的用户支付失败,极光推送客服用户支付失败 2. [支付失败](#支付失败) TODO:?? **_UI 图:_** ![支付失败](./assets/下单流程图片/支付失败、支付超时.png) ##### 支付成功 **_后台逻辑:_** 1. 支付成功,后台更改订单,且极光推送技师接单 2. [支付成功](#支付成功) TODO:?? **_UI 图:_** ![支付成功](./assets/下单流程图片/已支付、待接单.png) ##### 技师接单 **_后台逻辑:_** 1. 技师接单,用户同步数据 2. [技师接单](#接单) **_UI 图:_** ![技师接单](./assets/下单流程图片/技师确认接单.png) ##### 技师拒绝接单 **_后台逻辑:_** 1. 技师拒绝接单,客服介入,联系用户,更改技师或者用户取消订单退款 2. [技师拒绝接单](#拒绝接单) **_UI 图:_** ![技师拒绝接单](./assets/下单流程图片/技师拒绝接单.png) ##### 订单超时 **_后台逻辑:_** 1. 技师没有在规定时间内接单,客服介入,联系技师 2. [订单超时](#订单超时) TODO: 客服介入后,对订单进行处理(更换技师、用户退款、取消订单、转公单等) #### 选择项目下单 ```mermaid flowchart TD %% 主流程起点 Start[开始] --> Init[初始化订单] %% 订单创建阶段 subgraph 订单创建 Init --> A1[获取用户位置] A1 --> A2[查询区域服务] A2 --> A3[用户选择服务] A3 --> A4[选择地址/时间/优惠券] A4 --> A5[创建空订单] end %% 抢单阶段 subgraph 抢单流程 A5 --> B1[进入抢单池] B1 --> B2[推送给技师] B2 --> B3{是否有技师抢单?} B3 -->|是| B4[展示技师列表] B3 -->|否| B5[等待5-8分钟] B5 --> B6[客服介入] end %% 用户选择阶段 subgraph 用户选择 B4 --> C1{用户是否选择?} C1 -->|是| C2[锁定技师] C1 -->|否| C3[等待30分钟] C2 --> C4[计算费用] C3 --> B6 end %% 支付阶段 subgraph 支付流程 C4 --> D1[展示订单详情] D1 --> D2{用户支付?} D2 -->|是| D3[支付处理] D2 -->|否| D4[3分钟超时] D3 --> D5{支付结果} D5 -->|成功| D6[更新订单状态] D5 -->|失败| D7[客服介入] D4 --> D8[解绑技师] end %% 服务阶段 subgraph 服务执行 D6 --> E1[通知技师] E1 --> jh1[技师拒绝订单] jh1 --> jh2[客服介入?] jh2 -->|技师接单| E2[技师出发] jh2 -->|技师拒单| jh3[客服介入,联系用户?] jh3 --> jh4[用户接受更换技师] jh4 --> E2 jh3 --> jh5[用户不接受更换技师] jh5 --> Cancel E1 --> E2[技师出发] E2 --> E3[服务进行中] E3 --> E4[服务完成] end %% 取消订单流程 subgraph 取消处理 Cancel[取消订单] --> F1[客服确认] F1 --> F2{是否可挽回?} F2 -->|是| F3[恢复订单] F2 -->|否| F4[退款处理] end %% 异常处理连接 D7 --> Cancel B6 --> Cancel D8 --> B1 %% 结束节点 E4 --> End[结束] F4 --> End F3 --> D1 %% 样式定义 classDef success fill:#baffc9,stroke:#333,stroke-width:2px; classDef warning fill:#ffffba,stroke:#333,stroke-width:2px; classDef error fill:#ffb3ba,stroke:#333,stroke-width:2px; classDef normal fill:#f9f9f9,stroke:#333,stroke-width:2px; %% 应用样式 class D6,E4 success; class D7,B6,Cancel warning; class F4 error; class Start,End normal; click A1,A2,A3 href "#用户选择项目" click A4,A5,B1,B2 href "#创建抢单类型订单,推送给技师" click B3,B4 href "#有技师抢单" click B5,B6 href "#无技师抢单" click C1,C2,C4 href "#用户选择技师" click C3,B6 href "#用户不反选技师" click D2,D3,D6,E1 href "#支付成功" click jh1,jh2,jh3,jh4,jh5 href "#技师拒绝接单" click D4,D7,D8 href "#支付失败" click E2 href "#技师出发" ``` ##### 用户选择项目 **_后台逻辑:_** 1. 传递用户当前位置信息 2. [服务项目列表](#获取项目列表-技师开通租户项目) 3. [服务项目详情](#获取项目详情-租户项目) **_UI 图:_** ![用户选择项目](./assets/用户选择项目下单/选择项目.png) ##### 创建抢单类型订单,推送给技师 **_后台逻辑:_** 1. 传递用户服务时间、服务地址、服务项目 id、优惠劵 id 2. [创建订单](#创建订单) **_UI 图:_** ![创建抢单类型订单](./assets/用户选择项目下单/下单等待技师抢单.png) ##### 有技师抢单 **_后台逻辑:_** 1. 传递技师 id,所抢订单 id,计算路费、技师代金卷等等一些逻辑 2. [用户取消订单](#用户取消订单) **_UI 图:_** ![有技师抢单](./assets/用户选择项目下单/有技师抢单.png) ##### 无技师抢单 **_后台逻辑:_** 1. 用户的抢单类型的订单无技师去抢,客服介入,联系附近技师 2. 包含超时的情况,记得处理 3. [用户取消订单](#用户取消订单) **_UI 图:_** ![无技师抢单](./assets/用户选择项目下单/无技师抢单.png) ##### 用户选择技师 **_后台逻辑:_** 1. 传递技师 id,所抢订单 id,用户 id,订单费用 2. 用户选择技师后,3 分钟内不支付,则技师解绑该订单,记得处理 3. [用户取消订单](#用户取消订单) 4. [指定技师](#指定技师修改订单) **_UI 图:_** ![用户选择技师](./assets/用户选择项目下单/用户反选技师.png) ##### 用户不反选技师 **_后台逻辑:_** 1. 用户不反选技师 2. [用户取消订单](#用户取消订单) **_UI 图:_** ![用户不反选技师](./assets/用户选择项目下单/用户不反选技师.png) ##### 支付成功 **_后台逻辑:_** 1. 订单支付成功,技师和用户的推送提醒 2. [用户取消订单](#用户取消订单) **_UI 图:_** ![支付成功](./assets/用户选择项目下单/支付成功.png) ##### 技师拒绝接单 **_后台逻辑:_** 1. 技师拒绝接单,客服介入,联系技师 2. [接单](#接单) 3. [拒单](#拒单) 4. 客服联系用户,用户接受更改技师或者取消订单 **_UI 图:_** ![技师拒绝接单](./assets/用户选择项目下单/技师拒绝接单.png) ##### 支付失败 **_后台逻辑:_** 1. 支付失败,订单状态为待付款 2. 用户取消订单、选择技师、再次付款。存在超时的以及时间差的处理 3. [用户取消订单](#用户取消订单) 4. [支付订单](#获取支付配置) **_UI 图:_** ![支付失败](./assets/用户选择项目下单/支付失败.png) ##### 技师出发 **_后台逻辑:_** 1. 技师出发,用户推送提醒 2. [用取消订单](#用户取消订单)