#### 1.创建抢单订单(用户端) **参数**: - 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. 发送异步抢单通知(比如对接极光推送)