您现在的位置是:主页 > news > 我是建造网站/网络营销做得好的企业有哪些
我是建造网站/网络营销做得好的企业有哪些
admin2025/6/28 23:18:28【news】
简介我是建造网站,网络营销做得好的企业有哪些,php做的网站怎么入侵,wordpress全站ajax代码背景 第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。 第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。 业务异常࿱…
我是建造网站,网络营销做得好的企业有哪些,php做的网站怎么入侵,wordpress全站ajax代码背景
第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。 第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。 业务异常࿱…
背景
第三方电商抓取订单后需要把订单下传到仓库,这样仓库那边才能正常发货。
第三方电商取消订单后;如果当前订单已经下传仓库,则需要向仓库发起订单拦截指令;如果没有下传仓库,则直接取消订单。
业务异常:订单取消成功但仓库却把订单中的商品发送了出去
第三方电商对应的服务为: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返回成功才会去修改订单下传状态。如下为系统流转图: