首汽约车渠道连环单司机位置上报专利

共计 1602 个字符,预计需要花费 5 分钟才能阅读完成。

一、方法概述

本发明涉及一种在网约车等出行服务平台中,处理“渠道连环单”并上报司机位置的方法。该方法通过一系列逻辑判断、消息队列和延时任务,实现了在特定条件下向渠道方持续上报连环单司机的位置信息。

二、核心流程

第一部分:渠道向运力下连环单流程

此流程负责在创建订单时识别并标记连环单,为后续的位置上报做准备。

  1. 渠道下单 :渠道方向运力平台发起下单请求。

  2. 查询配置 :运力开放平台接收请求,查询该渠道的连环单配置标志 link_order_mark

  3. 非连环单处理 :若 link_order_mark ≠ 1,则设置下单参数 isLink = 0,并直接跳转至步骤 7。

  4. 查询灰度城市 :若 link_order_mark = 1,则进一步查询连环单灰度城市配置 link_order_city

  5. 城市校验失败 :若灰度城市列表 link_order_city 不包含请求中的 cityId,则该城市不可下连环单,设置 isLink = 0,并跳转至步骤 7。

  6. 城市校验成功 :若 link_order_city 包含 cityId,则该城市可下连环单,设置 isLink = 1

  7. 创建订单 :调用订单下单接口,生成订单号 orderNo,并记录渠道订单号与平台订单号的映射关系到 partner_order_mapping 表。

  8. 智能派单 :派单系统根据 isLink 参数筛选符合条件的司机。

  9. 通知渠道 :调用开放平台接口,通知渠道方司机已接单。通知参数包括司机 ID (driverId) 和连环单标记 (link_order,1 为连环单 )。

  10. 标记连环单

    • 若 link_order = 1,则在 partner_order_mapping 表的扩展字段中记录 "link": 1

    • 无论是否为连环单,最终都回调渠道方司机举手信息。

  11. 流程结束

首汽约车渠道连环单司机位置上报专利

第二部分:运力上报连环单司机位置流程

此流程在司机接单后,自动触发并循环上报司机位置。

  1. 确认司机 :渠道方调用运力开放平台接口,确认使用该司机。

  2. 内部确认 :开放平台调用内部派单系统接口确认使用司机。

  3. 绑定订单 :派单系统将订单与司机绑定,并将订单状态修改为 15(司机接单状态)。

  4. 状态变更通知 :订单状态变更后,系统发送一条 MQ 消息到主题 order_status_topic

  5. 消费状态消息 :开放平台消费 order_status_topic 的 MQ 消息。

  6. 状态判断 :判断订单状态 status 是否等于 15。

  7. 触发位置上报 :若 status = 15,且该渠道已配置需要上报连环单司机位置,同时从 partner_order_mapping 表中查询到该订单的连环单标志 link = 1,则执行以下操作:
    a. 设置一个 2 分钟的 Redis 锁,防止 MQ 消息重复消费。
    b. 发送一条延时 5 秒的 MQ 消息到主题 link_order_driver_loc_topic

  8. 消费位置上报消息 :消费者消费 link_order_driver_loc_topic 的 MQ 消息。

  9. 复核订单状态 :查询订单详情接口,再次确认订单状态是否为 15。

  10. 获取并上报位置
    a. 当订单状态为 15 时,调用 LBS 系统查询司机当前位置。
    b. 组装参数,调用渠道方提供的司机位置上报接口进行上报。

  11. 计数与循环
    a. 将消息发送次数 count 加 1。
    b. 判断 count 是否大于预设上限(200 次)。若大于,则终止流程;若小于,则再次发送一条 link_order_driver_loc_topic 消息,从而形成循环上报。

  12. 流程结束


核心要点总结:

  • 双重校验 :通过灰度城市和渠道配置双重校验来确定是否为连环单。

  • 异步解耦 :利用 MQ 消息队列(order_status_topic 和 link_order_driver_loc_topic)实现系统模块间的异步通信和解耦。

  • 循环机制 :通过重复发送特定 MQ 消息,实现了司机位置的周期性上报,直至达到次数上限。

  • 防重复设计 :通过 Redis 锁确保在关键步骤上不会因消息重复消费而导致错误。

正文完
 0
评论(没有评论)