抢单订单.md 3.1 KB

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. 发送异步抢单通知(比如对接极光推送)