--- html: embed_local_images: false embed_svg: true offline: false toc: true print_background: true export_on_save: html: true --- # 技师端 todolist.md ## 首页 - 上下班 - 实时刷新定位技师经纬度 - 简单版的个人信息 - --Marked-- 工作照、星星等级、昵称、简介 - 个人信息修改的静态页 - 昵称、手机号(可修改)、身份证、身份证正反面、手持身份证、营业执照、健康证、按摩证、合同 - 跳转到一个升星规则静态页面 - 预览个人主页静态页 - 昵称 固定位置 所属店铺 星星等级(可跳转星星规则静态页) 工作状态 简介 资质审核状态 已完成订单数目 取消掉打卡 定位 - 简介的接单设置信息 - 接单时间(排班,讨论) 接单距离 固定接单位置 - 修改接单设置静态页 - 接单时间(排班,讨论) 客户性别 接单距离 固定接单位置 - 简洁版项目设置 - 五大类平台定好的项目 - 项目名称 时长 价格 - 跳转到项目设置静态页 - 展示五个项目的简洁版的信息,每个项目��以进行设置(漏了一个静态页UI) - 跳转到单个项目设置的静态页 - 项目价格 项目名称 时长 以及项目简单介绍 - 设置的信息 - 服务客户 服务性别 代金卷设置(10 20 30 50) 免路费设置(单程、双程、全免) - 项目描述:时长等等,预约须知 - 我的订单 - 待抢订单 待接订单 - 可以跳转到订单列表静态页 - 补充抢单逻辑 全部显示抢单池数据,分两类 可抢订单排在上面 不可抢订单排在下面 ## 技师注册 - 第一步:用户端申请成为技师填写基本的个人信息 - 第二步:客服登录后台管理进行审核 - 审核中:申请页面显示正在审核 - 拒绝:可以修改个人信息重新申请 - 通过:申请页面变成切换身份进入技师端 - 第三步:进入技师端进行支付宝实名认证、上传按摩证、营业执照、健康证、身份证正反面、手持身份证 - 第四步:客服再次对技师进行审核 - 第五步:签合同、生活照、工作照、个人简介 ```mermaid graph TD A[用户端申请成为技师] --> B[客服登录后台管理进行审核] B -->|审核中| C[申请页面显示正在审核] B -->|拒绝| D[可以修改个人信息重新申请] B -->|通过| E[申请页面变成切换身份进入技��端] E --> F[进入技师端] F --> G[支付宝实名认证] G --> H[上传按摩证、营业执照、健康证、身份证正反面、手持身份证,上传生活照、工作照、个人简介] H --> I[客服再次对技师进行审核] I --> J[签合同] J --> Z[初始化项目设置、接单设置默认值,后台] ``` ## 接单流程(技师角度) ### 抢单 1. 用户:选项目,点下单 2. 后台:创一个不指定技师的项目订单 未支付 无技师 3. 技师:点抢单 显示全抢单池,不可抢得置灰,可以抢单的正常显示 4. 后台:查询某个技师抢单列表的逻辑,接单设置固定位置、距离、排班、实时位置,项目设置中性别、项目是否开通,开启抢单 关闭抢单。按照下单日期倒序排列 5. 技师: 点击立即抢单 作出个提示 ,显示已抢单,等待反选 6. 后台:将当前技师和订单加入抢单池,并记录状态 未反选状态 7. 用户:实时显示所有的抢单技师,点击某个技师 8. 后台:在抢单池中记录订单用户反选技师 9. 用户:复用支付流程 10. 技师:消息通知,消息通知静态页 ```mermaid sequenceDiagram participant Alice participant John link Alice: Dashboard @ https://dashboard.contoso.com/alice link Alice: Wiki @ https://wiki.contoso.com/alice link John: Dashboard @ https://dashboard.contoso.com/john link John: Wiki @ https://wiki.contoso.com/john Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later! ``` ```mermaid sequenceDiagram participant 用户 participant 后台 participant 技师 autonumber 用户->>+后台: 选项目,点下单 后台->>后台: 1创建抢单订单 后台-->>用户: 订单创建成功 后台->>技师: 显示抢单列表(通过抢单逻辑) 技师->>后台: 点击立即抢单,作出提示 后台->>后台: 2-技师抢单创建抢单池 用户->>后台: 实时显示所有的抢单技师,点击某个技师 后台->>后台: 3.用户反选技师 后台-->>用户: 订单反选成功 用户->>后台: 复用支付流程 后台->>技师: 消息通知 ``` #### 1.创建抢单订单 **用户端**: ![170_1725348471_hd](/assets/170_1725348471_hd.jpeg) **参数**: - user_id, project_id, address_id **涉及表和关键列**: - 订单表:service_order - 必填字段:id,order_sn, user_id, user_name,mobile, address,real_address,address_lng,address_lat, adcode, project_id, project_name, project_sub_title,project_icon,service_price, type,status, created_at, updated_at - 订单类型字段: type - 0: 正常订单 - 1: 抢单订单 - 状态机字段:status - 0: 待抢单 - 用户表: member_user - 用户地址表: member_address - 项目表: service_project **后台逻辑**: 1. 根据用户编号和地址编号查询详情数据,通过项目编号获取项目数据。 - 用户数据存在,并且用户状态为正常(status = 1) - 地址数据存在 - 项目数据存在,并且项目状态为正常(status = 1) 2. 通过已上查询的数据,创建订单数据,要求: - 请自动填写相同名称的字段 - type = 1 - status = 0 3. 发送异步抢单通知(比如对接极光推送) #### 2.技师抢单创建抢单池 **参数**: - user_id, order_id, coach_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 抢单池:service_order_grab - 必填字段:id, order_id, coach_id, status, created_at, updated_at - 状态字段:status - 0: 参与抢单 - 1: 抢单成功 - 2: 抢单失败 - 订单:service_order - 必填字段:id,type,status - 订单类型字段: type - 0: 正常订单 - 1: 抢单订单 - 状态字段:status - 0: 待抢单 - 技师:coach_users - 字段:user_id, status - 状态字段:status - 0: 禁用 - 1: 正常 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为待抢单 - 订单没有指派技师 - 订单类型为抢单订单 2. 通过用户编号查技师,条件是: - 技师数据存在,并且技师状态为正常 3. 通过以上数据,创建订单池,要求: - 请自动填写相同名称的字段 - 订单池状态为参与抢单 4. 发送异步抢单通知(比如对接极光推送) #### 3. 用户反选技师(指定抢单池) **参数**: - user_id, order_id, coach_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 抢单池:service_order_grab_pool - 必填字段:id, order_id, coach_id, status, created_at, updated_at - 状态字段:status - 0: 参与抢单 - 1: 抢单成功 - 2: 抢单失败 - 订单:service_order - 必填字段:id,type,status - 订单类型字段: type - 0: 正常订单 - 1: 抢单订单 - 状态字段:status - 0: 待抢单 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为待抢单 - 订单没有指派技师 - 订单类型为抢单订单 2. 通过编号查技师,条件是: - 技师数据存在,并且技师状态为正常 3. 通过以上数据,修改订单池,要求: - 技师编号来自参数 - 订单池状态改为抢单成功 4. 发送异步抢单通知(比如对接极光推送) --- ### 服务流程 1. 技师:技师接单成功 显示 取消订单 开始出发,点开始出发 2. 后台:记录技师开始出发时间,经纬度以及当前位置 订单状态变为已出发 3. 用户:显示该订单技师已出发 取消订单 4. 技师:点击已到达,并拍照 已到达 5. 后台:记录技师经纬度和到达时间 订单状态改为已到达 6. 用户:显示已到达显示服务二维码 7. 技师:开始服务方式:扫码用户的服务二维码 8. 后台:订单状态改为 服务中 9. 用户:显示倒计时,结束订单 确认技师离开 再次购买 删除订单 10. 技师: 拍单元楼上传 拍照结束 按钮 11. 后台:订单状态改为 服务结束 已撤离 ```mermaid sequenceDiagram participant 用户 participant 后台 participant 技师 技师->>后台: 技师接单成功 后台->>后台: 1. 技师接单 技师-->>技师: 显示 开始出发 技师->>后台: 点开始出发 后台->>后台: 记录技师开始出发时间,经纬度以及当前位置,订单状态变为已出发[^1] 后台-->>用户: 订单状态变为已出发 技师->>后台: 点击已到达,并拍照 后台->>后台: 记录技师经纬度和到达时间,订单状态改为已到达[^2] 后台-->>用户: 订单状态改为已到达 用户-->>用户: 显示状态已到达(显示二维码页面) 技师->>用户: 扫用户的二维码 技师->>后台: 扫码发起开始服务请求 后台->>后台: 订单状态改为 服务中[^3] 用户-->>用户: 显示服务倒计时(自动跳转服务详情页面) 后台-->>用户: 订单状态改为 服务中 用户->>后台: 显示倒计时,点击结束订单 用户->>后台: 在结束订单页面,点击"确认技师离开" 后台-->>技师: 收到订单结束通知 技师->>后台: 拍照,点确认撤离 后台->>后台: 订单状态改为 服务结束[^4] ``` --- ### 接单 1. 用户: 指定技师下单,立即结算 2. 后台: 创建一个新的订单 3. 技师: 确认接单 4. 后台: 改变订单状态为已接单 5. 用户: 已接单 6. 技师: 开始出发 7. 后台: 改变订单状态为已出发 8. 用户: 技师已出发 9. 技师: 已到达,拍照 10. 后台: 改变订单状态为已到达 11. 用户: 已到达,显示二维码 12. 技师: 扫描二维码 13. 后台: 订单状态改为开始服务 14. 用户: 结束订单 15. 后台: 订单改为服务结束 16. 用户: 确认技师离开 17. 技师: 撤离,拍照 18. 后台: 自动服务结束 19. 用户: 确认技师离开 20. 技师: 撤离,拍照 ```mermaid sequenceDiagram participant 用户 participant 后台 participant 技师 用户->>后台: 指定技师下单,点击立即结算 后台->>后台: 1. 创建订单 后台-->>用户: 订单创建成功 技师->>后台: 确认接单 后台->>后台: 2. 改变订单状态为已接单 后台-->>用户: 订单状态变为已接单 技师->>后台: 开始出发 后台->>后台: 3. 改变订单状态为已出发 后台-->>用户: 订单状态变为已出发 技师->>后台: 已到达,拍照 后台->>后台: 4. 改变订单状态为已到达 后台-->>用户: 订单状态变为已到达 用户->>用户: 已到达,显示二维码 技师->>用户: 扫描二维码 后台->>后台: 5. 订单状态改为服务中 后台-->>用户: 订单状态变为服务中 后台-->>技师: 订单状态变为服务中 用户->>后台: 第一种:结束订单 后台->>后台: 6. 订单改为服务结束 后台-->>技师: 订单改为服务结束 后台-->>用户: 订单状态变为服务结束 用户->>用户: 确认技师离开 用户->>后台: 技师离开 后台->>后台: 7.订单更改状态为技师离开 技师->>后台: 点击撤离,拍照 后台->>后台: 8. 第二种:服务时间结束 后台-->>用户: 服务结束 后台-->>技师: 服务结束 用户->>后台: 确认技师离开 技师->>后台: 撤离,拍照 后台->>后台: 9. 技师撤离 后台-->>用户: 技师撤离 订单完成 后台-->>技师: 技师撤离 订单完成 ``` #### 1. 创建订单 **参数**: - user_id, project_id, address_id, coach_id, pay_type, is_balance - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单表:service_order - 必填字段:id,order_sn, user_id, user_name,mobile, address,real_address,address_lng,address_lat, adcode, project_id, project_name, project_sub_title,project_icon,service_price, coach_id, pay_type, type,status, created_at, updated_at - 订单类型字段: type - 0: 正常订单 - 1: 抢单订单 - 状态机字段:status - 0: 待抢单 - 支付类型字段:pay_type - 0: 余额支付 - 1: 微信支付 - 2: 支付宝支付 - 订单类型:type - 0:常规订单 - 1:抢单订单 - 用户表: member_user - 字段:balance, status - 状态字段:status - 0: 禁用 - 1: 正常 - 用户地址表: member_address - 项目表: service_project - 字段:id, status - 状态字段:status - 0: 禁用 - 1: 正常 - 技师表:coach_users - 字段:user_id, status - 状态字段:status - 0: 禁用 - 1: 正常 **后台逻辑**: 1. 根据用户编号和地址编号、技师编号查询详情数据,通过项目编号获取项目数据。 - 用户数据存在,并且用户状态为正常 - 地址数据存在 - 项目数据存在,并且项目状态为正常 - 技师数据存在,并且项目状态为正常 2. 通过已上查询的数据,创建订单数据,要求: - 请自动填写相同名称的字段 - 订单类型为常规订单 - 如果使用余额支付 - 用户余额足够支付项目金额 - 则订单状态为已支付 - 否则订单状态为未支付 - 如果使用微信支付或支付宝支付 - 订单状态为未支付 - 指定技师 ```mermaid flowchart TD A[开始] --> B[获取用户数据] B --> C{用户状态正常?} C -->|是| D[获取地址数据] C -->|否| Z[结束] D --> E[获取项目数据] E --> F{项目状态正常?} F -->|是| G[获取技师数据] F -->|否| Z G --> H{技师状态正常?} H -->|是| I[创建订单] H -->|否| Z I --> J{支付类型} J -->|余额支付| K{余额足够?} J -->|微信支付或支付宝支付| M[订单状态: 未支付] K -->|是| L[订单状态: 已支付] K -->|否| M L --> N[指定技师] M --> N N --> O[发送异步抢单通知] O --> Z[结束] ``` 3. 发送异步抢单通知(比如对接极光推送) #### 2. 改变订单状态为已接单(技师端) **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id,status,coach_id - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 技师:coach_users - 字段:user_id, status - 状态字段:status - 0: 禁用 - 1: 正常 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为已支付 - 订单有指派技师,并且技师的用户编号等于参数中的用户编号 - 订单类型为常规订单 2. 通过用户编号查技师,条件是: - 技师数据存在,并且技师状态为正常 3. 通过以上数据,修改订单数据,要求: - 请自动填写相同名称的字段 - 订单状态为已接单 4. 发送异步抢单通知(比如对接极光推送) ```mermaid flowchart TD A[开始] --> B[通过编号查订单] B --> C{订单状态为已支付?} C -->|是| D{订单有指派技师?} C -->|否| Z[结束] D -->|是| E{技师用户编号匹配?} D -->|否| Z E -->|是| F[通过用户编号查技师] E -->|否| Z F --> G{技师状态为正常?} G -->|是| H[修改订单数据] G -->|否| Z H --> I[订单状态改为已接单] I --> J[发送异步抢单通知] J --> Z[结束] ``` ### 3. 改变订单状态为已出发(技师端) **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id,status,coach_id - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 技师:coach_users - 字段:user_id, status - 状态字段:status - 0: 禁用 - 1: 正常 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为已接单 - 订单有指派技师,并且技师的用户编号等于参数中的用户编号 2. 通过用户编号查技师,条件是: - 技师数据存在,并且技师状态为正常 3. 通过以上数据,修改订单数据,要求: - 请自动填写相同名称的字段 - 订单状态为已出发 4. 发送异步抢单通知(比如对接极光推送) ```mermaid flowchart TD A[开始] --> B[通过编号查订单] B --> C{订单状态为已接单?} C -->|是| D{订单有指派技师?} C -->|否| Z[结束] D -->|是| E{技师用户编号匹配?} D -->|否| Z E -->|是| F[通过用户编号查技师] E -->|否| Z F --> G{技师状态为正常?} G -->|是| H[修改订单数据] G -->|否| Z H --> I[订单状态改为已出发] I --> J[发送异步抢单通知] J --> Z[结束] ``` ### 4. 改变订单状态为已到达 **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id,status,coach_id - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 4: 已到达 - 技师:coach_users - 字段:user_id, status - 状态字段:status - 0: 禁用 - 1: 正常 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为已出发 - 订单有指派技师,并且技师的用户编号等于参数中的用户编号 2. 通过用户编号查技师,条件是: - 技师数据存在,并且技师状态为正常 3. 通过以上数据,修改订单数据,要求: - 请自动填写相同名称的字段 - 订单状态为已到达 4. 发送异步抢单通知(比如对接极光推送) ### 5. 订单状态改为服务中(技师端) **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id,status,coach_id,time_long - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 4: 已到达 - 5: 服务中 - 技师:coach_users - 字段:user_id, status - 状态字段:status - 0: 禁用 - 1: 正常 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为已到达 - 订单有指派技师,并且技师的用户编号等于参数中的用户编号 2. 通过用户编号查技师,条件是: - 技师数据存在,并且技师状态为正常 3. 通过以上数据,修改订单数据,要求: - 请自动填写相同名称的字段 - 订单状态为服务中 - 订单服务开始时间 - 根据服务时长计算订单服务结束时间 4. 发送异步抢单通知(比如对接极光推送) ### 6. 订单改为服务结束(用户端结束订单) **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id, status, coach_id, user_end - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 4: 已到达 - 5: 服务中 - 6: 服务结束 - 状态字段:user_end - 0: 未结束 - 1: 结束 **后台逻辑**: 1. 通过编号及用户编号查订单,条件是: - 订单数据存在,并且状态为服务中 - 订单有指派技师 2. 通过以上数据,修改订单数据,要求: - 订单状态为服务结束 - 订单服务结束时间 - 用户确认结束 3. 发送异步抢单通知(比如对接极光推送) ### 7. 订单更改状态为技师离开(用户端确认技师离开) **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id,user_confirm_leave,user_confirm_leave_time - 用户确认技师撤离字段:user_confirm_leave - 0: 未确认 - 1: 已确认 - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 4: 已到达 - 5: 服务中 - 6: 服务结束 **后台逻辑**: 1. 通过编号及用户编号查订单,条件是: - 订单数据存在,并且状态为服务结束 - 订单有指派技师 2. 通过以上数据,修改订单数据,要求: - 订单用户确认离开 - 订单用户确认离开时间 3. 发送异步抢单通知(比如对接极光推送) ```mermaid flowchart TD A[开始] --> B[通过编号及用户编号查订单] B --> C{订单状态为服务结束?} C -->|是| D{订单有指派技师?} C -->|否| Z[结束] D -->|是| E[修改订单数据] D -->|否| Z E --> F[订单用户确认离开] F --> G[订单用户确认离开时间] G --> H[发送异步抢单通知] H --> Z[结束] ``` ### 8. 第二种:服务时间结束(后台自动服务结束) **参数**: - order_id **涉及表和关键列**: - 订单:service_order - 必填字段:id, end_time - 用户确认技师撤离字段:user_confirm_leave - 0: 未确认 - 1: 已确认 - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 4: 已到达 - 5: 服务中 - 6: 服务结束 - 7: 已撤离 - 8: 已评价 - 9: 已取消(退款中) - 10: 已退款 **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为服务中 - 订单有指派技师 2. 通过订单服务结束时间,判断是否结束 - 如果服务结束时间小于等于当前时间,则订单状态为服务结束 3. 发送异步抢单通知(比如对接极光推送) ### 9. 技师撤离(技师端) **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 **涉及表和关键列**: - 订单:service_order - 必填字段:id,status,coach_id, user_confirm_leave, leave_time, service_price - 状态字段:status - 0: 未支付 - 1: 已支付 - 2: 已接单 - 3: 已出发 - 4: 已到达 - 5: 服务中 - 6: 服务结束 - 7: 已撤离 - 用户确认技师撤离字段:user_confirm_leave - 0: 未确认 - 1: 已确认 - 收益:member_benefit - 必填字段:order_id, user_id, benefit, balance, type, created_at, updated_at - 类型字段:type - 1: 支付 - 2: 退款 - 3: 扣除 - 4: 提现 - 5: 返还 - 6: 收益 - 8: 赠送 - 9: 路费 - 用户:member_users - 必填字段:id, balance - 余额字段:balance **后台逻辑**: 1. 通过编号查订单,条件是: - 订单数据存在,并且状态为服务结束 - 订单有指派技师 - 订单用户确认技师撤离为已确认 2. 通过以上数据,开启事务,修改订单数据,创建收益数据 - 修改订单数据,要求: - 订单状态为已撤离 - 订单撤离时间 - 创建收益数据,要求: - 收益用户为技师 - 收益订单为当前订单 - 收益类型为收益 - 收益金额为订单服务金额乘以百分之50 - 收益余额为当前技师用户金额 3. 发送异步抢单通知(比如对接极光推送) ## 分帐方案优化 ### 背景说明 - 平台作为服务商,为技师提供订单服务,技师为服务提供者,用户为服务接受者。业务员主要负责推广渠道,渠道用于推广用户,也可以推荐技师加入平台。 - 店铺是一个综合服务门店: - 店铺入驻平台,需支付入驻费 - 店铺可以推荐用户下载APP,获取推广费 - 店铺可以推荐技师加入平台,获取推荐费 - 店铺是一个线下服务场所,用户在平台下单后,可以选择到店服务或上门服务 - 代理基于店铺,代理的业绩基于店铺的业绩,代理的业绩分成基于店铺营业额,代理的业绩提成基于店铺利润 - 需要设计一个分帐方案,技师、业务员、渠道、店铺、代理和平台之间如何分帐,每种角色的分帐算法不同,分帐基于订单金额或剩余利润 - 订单完成时,通过平台设置的角色分帐算法和比例,自动计算出每个角色应得的金额,并生成按角色分类的分帐数据表 - 一个订单上,每个角色可能同时存在,也可能不存在,角色之间是相加关系,不是相乘关系 - 分帐方案需要灵活,比例需要有配置的地方,方便后续调整 - 分帐方案需要考虑订单取消、退款情况 ### 分帐业务逻辑 #### 技师上门 > 技师通过平台接单,到用户指定地点提供服务 1. 如果订单上的用户是某个渠道(技师、店铺、业务员等)推广来的,则渠道获得订单项目金额(不含优惠、路费)的百分之几,推广最大2级,第一级渠道获得20%,第二级渠道获得10% 2. 如果订单上的技师是由推荐渠道(店铺、业务员等)推荐的,则推荐渠道获得订单项目金额(不含优惠、路费)的1%。如果推荐渠道为技师,则渠道获得订单金额(不含优惠、路费)的3%,上限为1000元封顶 3. 接单技师作为服务提供者,获得订单项目金额(不含优惠)的50%至55%,路费另算,技师获得90%,平台10% #### 用户到店 > 用户通过平台下单,选择店铺中的技师,或直接选择店铺服务项目,到店消费 1. 用户到店核销完成,店铺获得80%,店铺线下与技师分帐 2. 如果用户是某个渠道(技师、店铺、业务员等)推广来的,则渠道获得与店铺分帐后的20%中的10% #### 平台技师到店 > 救急订单,调技师去店铺,用户到店消费,店铺替到店客户下单 如果店铺技师不足,则店铺在平台正常下单,且技师为平台技师(非店铺自有技师),店铺创建的订单可设置报销路费或不报销路费,技师到店核销后,平台从店铺余额中扣除此订单服务费价格的10% ```mermaid flowchart TD A[技师上门] --> B[用户是渠道推广] B --> C{推广级别} C -->|第一级| D[渠道获得20%] C -->|第二级| E[渠道获得10%] A --> F[技师由推荐渠道推荐] F --> G{推荐渠道类型} G -->|店铺/业务员| H[推荐渠道获得1%] G -->|技师| I[推荐渠道获得3% 上限1000元] A --> J[接单技师] J --> K[技师获得50%至55%] K --> L[路费技师获得90% 平台10%] ``` ```mermaid flowchart TD M[用户到店] --> N[订单有店铺] N --> O[店铺获得80%] O --> P[店铺线下与技师分帐] M --> Q[用户是渠道推广] Q --> R[渠道获得店铺分帐后20%中的10%] ``` ```mermaid flowchart TD S[平台技师到店] --> T[店铺技师不足] T --> U[店铺正常下单] U --> V{路费设置} V -->|报销| W[店铺订单核销后] V -->|不报销| W W --> X[平台从店铺余额中扣除10%] ``` ### 程序设计 1. 创建分帐配置表,存储各角色的分帐比例和算法 2. 创建分帐数据表,存储每个订单的分帐结果 3. 在订单完成时,调用分帐逻辑,计算各角色应得金额,并写入分帐数据表 4. 考虑订单取消和退款情况,调整分帐数据 #### 分帐配置表 | 字段名 | 类型 | 说明 | | ------------ | -------- | ---------------- | | id | int | 主键 | | role | string | 角色 | | percentage | decimal | 分帐比例 | | algorithm | string | 分帐算法 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | #### 分帐数据表 | 字段名 | 类型 | 说明 | | ------------ | -------- | ---------------- | | id | int | 主键 | | order_id | int | 订单ID | | role | string | 角色 | | amount | decimal | 分帐金额 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | ### 分帐算法设计 #### 技师上门分帐算法 1. 获取订单项目金额(不含优惠、路费) 2. 计算渠道推广分成: - 第一级渠道:订单项目金额 * 20% - 第二级渠道:订单项目金额 * 10% 3. 计算推荐渠道分成: - 推荐渠道:订单项目金额 * 1% - 如果推荐渠道为技师:订单项目金额 * 3%,上限1000元 4. 计算技师分成: - 技师:订单项目金额 * 50%至55% - 路费:技师获得90%,平台10% #### 用户到店分帐算法 1. 获取订单项目金额(不含优惠、路费) 2. 计算店铺分成: - 店铺:订单项目金额 * 80% 3. 计算渠道推广分成: - 渠道:店铺分成后的20%中的10% #### 平台技师到店分帐算法 1. 获取订单项目金额(不含优惠、路费) 2. 计算分成: - 平台:订单项目金额 * 10% ### 分帐逻辑 1. 获取订单信息,判断订单状态是否为完成 2. 根据订单信息,获取相关角色(技师、店铺、渠道等) 3. 根据分帐配置表,计算各角色应得金额 4. 将计算结果写入分帐数据表 5. 如果订单取消或退款,调整分帐数据 ## 二、下单流程图 @import "./下单流程图.md" ## 分帐及钱包todolist @import "./分帐及钱包todolist.md" ![168_1725348468_hd](/assets/168_1725348468_hd.jpeg) ### 前端设计稿 #### 平台审核 ![图片](/流程图/技师注册/平台审核.png)