您现在的位置是:主页 > news > 我是建造网站/网络营销做得好的企业有哪些

我是建造网站/网络营销做得好的企业有哪些

admin2025/6/28 23:18:28news

简介我是建造网站,网络营销做得好的企业有哪些,php做的网站怎么入侵,wordpress全站ajax代码背景 第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。 第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。 业务异常&#xff1…

我是建造网站,网络营销做得好的企业有哪些,php做的网站怎么入侵,wordpress全站ajax代码背景 第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。 第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。 业务异常&#xff1…

背景

第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。
第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。
业务异常:订单取消成功但仓库却把订单中的商品发送了出去

第三方电商对应的服务为:xdt.service
下传仓库服务为:dip.service

项目采用dubbo分布式架构

订单下传与取消流转图

订单下传流转图
在这里插入图片描述

定单取消流转图
在这里插入图片描述

分析问题出现的原因

订单下传调用dip.service服务出现接口服务调用超时,可能导致在dip下传成功的订单在xdt中状态仍然为8002等待拦截。
此时如果第三方电商取消这个订单,这个订单会被直接取消,不会通知仓库进行拦截。

问题解决方案

方案1:取消订单的时候如果订单状态为8002,再去dip那边查询订单是否下传成功。如下为伪代码实现:

   void cancalOrder(String orderId){if(order.status==8002){if(dip.order.exist){//发起仓库拦截指令}}
}

这个是我最初的解决方案,最终发现这个方案不可行。假如dip查询订单的t1时刻订单不存在,t2时刻订单就下传成功了,t3时刻订单就会被直接取消。(t1<t2<t3)

方案二:考虑把订单状态与订单下传状态区分开,执行订单下传操作都会去改变订单的状态,调用dip.service返回成功才会去修改订单下传状态。如下为系统流转图:
在这里插入图片描述