--- html: embed_local_images: false embed_svg: true offline: false toc: true print_background: false export_on_save: html: true --- #### 技师端 ##### 接单 **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 - order_id 通过路由获取 **涉及表和关键列**: - 订单表:orders - 字段:id, user_id, 核销码, status - 订单编号字段:id - 核销码字段:核销码 - 用户编号字段:user_id - 订单状态字段:status - 1: 待接单 - 2: 待服务 - 3: 服务中 - 4: 待评价 - 5: 已完成 - 6: 已取消 - 技师表:coach - 字段:id, is_auth,status - 技师编号字段:id - 技师认证状态字段:is_auth - 0: 未认证 - 1: 已认证 - 技师状态字段:status - 0: 禁用 - 1: 开启 - 订单服务日志:order_service_log - 字段:id, order_id, role,role_id,IMAGE_PATH,remark,service_status, status - 订单编号字段:order_id - 技师编号字段:coach_id - 图片字段:IMAGE_PATH - 服务状态字段:service_status - 1: 下单 - 2: 支付 - 3: 接单 - 4: 出发 - 5: 到达 - 6: 服务 - 7: 结束 - 8: 撤离 - 日志状态字段:status - 0: 禁用 - 1: 开启 **后台逻辑**: 1. 参数校验 - 查询用户编号的技师角色 - 查询订单编号 2. 验证订单 - 订单状态:待接单 - 订单技师:当前技师 3. 验证当前技师角色 - 认证状态:已认证 - 状态:开启 4. 创建订单服务日志 - 订单编号为当前订单编号 - 角色为技师角色 - 角色编号为当前技师编号 - 经纬度为当前技师经纬度 - 服务状态为 3: 接单 - 日志状态为 1: 开启 ##### 出发 **后台逻辑**: 1. 参数校验 - 查询用户编号的技师角色 - 查询订单编号 2. 验证订单 - 订单状态:待服务 - 订单技师:当前技师 3. 验证当前技师角色 - 认证状态:已认证 - 状态:开启 4. 创建订单服务日志 - 订单编号为当前订单编号 - 角色为技师角色 - 角色编号为当前技师编号 - 经纬度为当前技师经纬度 - 服务状态为 3: 出发 - 日志状态为 1: 开启 ##### 到达 **后台逻辑**: 1. 参数校验 - 查询用户编号的技师角色 - 查询订单编号 2. 验证订单 - 订单技师:当前技师 - 订单状态:待服务 3. 验证当前技师角色 - 认证状态:已认证 - 状态:开启 4. 创建订单服务日志 - 订单编号为当前订单编号 - 角色为技师角色 - 角色编号为当前技师编号 - 经纬度为当前技师经纬度 - JSON 格式记录图片 - 服务状态为 3: 到达 - 日志状态为 1: 开启 ##### 服务 **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **后台逻辑**: 1. 参数校验 - 查询用户技师数据 - 查询订单 2. 验证订单 - 订单指派技师:当前技师 - 订单状态:待服务 3. 验证当前技师角色 - 认证状态:已认证 - 状态:开启 4. 创建订单服务日志 - 订单编号为当前订单编号 - 角色为技师角色 - 角色编号为当前技师编号 - 经纬度为当前技师经纬度 - 服务状态为 6: 服务 - 日志状态为 1: 开启 ##### 撤离 1. **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 - order_id 通过路由获取 2. **后台逻辑**: 1. 参数校验 - 查询用户编号的技师数据 - 查询订单 2. 验证订单 - 订单技师:当前技师 - 订单状态:待评价或已完成 3. 验证当前技师角色 - 认证状态:已认证 - 状态:开启 4. 验证用户是否允许撤离 - 根据订单编号,查询订单服务日志 - 订单用户编号 - 服务状态为 8: 撤离 - 否则,提示技师无法撤离,需用户同意 5. 开启事务 - 创建订单服务日志 - 订单编号为当前订单编号 - 角色为技师角色 - 角色编号为当前技师编号 - 经纬度为当前技师经纬度 - 服务状态为 8: 撤离 - 日志状态为 1: 开启 - 进行 [分帐](#1-分帐) 6. 提交事务 ##### 拒单 **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **后台逻辑**: 1. 参数校验 - 查询用户技师数据 2. 查询订单 - 匹配技师编号 - 匹配订单编号 - 订单状态为拒单 3. 创建订单历史数据 - 订单编号 - 角色为技师 - 角色编号为技师编号 - 历史状态为拒单 #### 用户端 ##### 下单 **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **后台逻辑**: 1. 参数校验 2. 查询订单 - 匹配用户编号 - 匹配订单编号 - 订单状态为待支付 3. 创建订单历史数据 - 订单编号 - 角色为用户 - 角色编号为用户编号 - 历史状态为下单 - 如果订单类型为常规订单 - 指定技师 ##### 指派 **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **后台逻辑**: 1. 参数校验 2. 查询订单 - 匹配用户编号 - 匹配订单编号 - 订单状态为待支付 3. 创建订单历史数据 - 订单编号 - 角色为用户 - 角色编号为用户编号 - 历史状态为指派 - 指定技师为订单指派技师 ##### 支付 **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **后台逻辑**: 1. 参数校验 2. 查询订单 - 匹配用户编号 - 匹配订单编号 - 订单状态为待服务 3. 创建订单历史数据 - 订单编号 - 角色为用户 - 角色编号为用户编号 - 历史状态为支付 - 指定技师 ##### 结束 1. **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 2. **后台逻辑**: 1. 参数校验 2. 查询订单 - 匹配用户编号 - 匹配订单编号 - 订单状态为服务中 3. 创建订单历史数据 - 订单编号 - 角色为用户 - 角色编号为用户编号 - 历史状态为结束 - 指定技师 ##### 退款 **参数**: - 用户编号, 订单编号 - 用户编号 通过 Auth::id() 获取 - 订单编号 通过路由获取 **后台逻辑**: 1. 参数校验 2. 查询订单 - 匹配用户编号 - 匹配订单编号 - 订单状态为待服务或待接单 3. 创建订单历史数据 - 订单编号 - 角色为用户 - 角色编号为用户编号 - 历史状态为退款 - 指定技师 ##### 取消 1. **参数**: - user_id, order_id - user_id 通过 Auth::id() 获取 - order_id 通过路由获取 2. **涉及表和关键列**: - 订单表:orders - 字段:id, user_id, 核销码, status - 订单编号字段:id - 核销码字段:核销码 - 用户编号字段:user_id - 订单状态字段:status - 1: 待接单 - 2: 待服务 - 3: 服务中 - 4: 待评价 - 5: 已完成 - 6: 已取消 3. **后台逻辑**: 1. 参数校验 2. 查询订单 - 匹配用户编号 - 匹配订单编号 - 订单状态为待服务 - 退还支付金额到用户钱包 - 记录钱包记录 - 退还余额支付金额 - 记录钱包记录 - 订单状态 - 已接单,扣除支付金额加余额支付金额减路费的 20%,不扣路费 - 已出发,扣除支付金额加余额支付金额减路费的 50%,扣路费 - 其他状态不允许取消 - 平台收入 - 记录平台收入记录 - 记录平台钱包记录 - 扣除金额小于余额支付金额,则从余额支付金额减掉扣除金额,剩下的退还 - 记录钱包退款记录 - 记录钱包交易记录 - 如果余额支付金额不够扣,剩下的金额从支付金额中扣除,并将支付金额剩余金额退还到用户钱包 - 记录钱包退款记录 - 记录钱包交易记录 - 修改订单状态为已取消 3. 创建订单取消记录 - 订单编号为当前订单编号 - 对象类型为用户 - 对象编号为当前用户编号 - 状态为取消 - 备注为用户取消订单