需求背景
当前客户提交审核订单后,系统会执行自动比价。以异常订单 XML-260214-00033 为例:
系统在完成“客户渠道比价”后,会调用 FedEx 地址验证接口获取地址类型(商业/住宅/未处理)。当第一次地址验证结果为 未处理 时,系统在后续“物流产品比价”阶段会将物流产品替换为 FEDEX_HD(住宅物流产品)。
但该订单在比价完成后的第二次地址验证中,FedEx 返回地址类型为 商业。由于系统在第一次返回“未处理”时已按住宅 的地址类型切换产品,导致自动比价过程被误导,最终影响比价结果(产品命中与价格推荐出现偏差)。
该问题本质为:地址类型“未处理”被错误当作住宅处理,且比价过程中地址类型判定前后不一致,系统没有统一口径处理,导致比价结果可能被错误口径影响。
需求描述
为降低 FedEx 地址类型校验返回“未处理”对自动比价结果的影响,需在进入比价流程前增加重试校验逻辑,确保尽可能拿到明确的“商业/住宅”判定。
规则逻辑:
订单进入自动比价流程前,先调用 FedEx 地址校验接口获取地址类型(商业/住宅/未处理)。
若首次校验结果为 商业 或 住宅 或 混合:
直接写入订单地址类型结果,并继续后续比价流程。
若首次校验结果为 未处理:
系统自动发起 再次请求校验(重试),使用同一套标准化后的地址入参。
最多重试 2 次(即总计 3 次校验:1 次初次 + 2 次重试),每次重试间隔可加入短暂延迟。
若多次校验后仍全部返回 未处理 :
才将该订单地址类型最终标记为 未知,并继续执行后续比价流程。
兜底策略:未知、混合 均视为地址类型:住宅 处理。
取消自动比价完成后的第二次地址类型校验,系统统一以比价前校验结果为准
开发设计
- 在第二次地址验证中,加上是否存在已验证过地址判断,假设前面已经验证过,那么第二次不再进行地址验证,跳过
- 只有当(地址验证标识 0:未检测 1:已检测 2:失败)orders.validate_address_sign 字段 = 0 或 2 时,才会进行第二次地址验证
- 在第一次规则地址验证转中,加上重试机制,如第一次获取未知时,等待0.5s后重试。根据需求最多重试两次
- 即最多重试两次后,降低误判的概率
代码位置
- task项目
TaskResult validateAddress(Orders orders,OrderCheckList orderCheckList ,Map<String,Object> params);方法 - 微服务
handleOrderCheckRule(OrderMsgVO msgVO)方法
作者:黄天文 创建时间:2026-03-02 13:08
最后编辑:黄天文 更新时间:2026-03-03 10:08
最后编辑:黄天文 更新时间:2026-03-03 10:08