为啥韵达小程序查不到订单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥韵达小程序查不到订单相关的知识,希望对你有一定的参考价值。

1:单号错误,所以查询不到任何记录。

2:卖家虚假发货,并未有发货,所以给了个虚假的单号,或者未发货的单号,由于没有收件,所以查询不存在。

3:收件员在收到,但未扫描录入,然后在回去扫描录入途中丢失了快递,所以也是查询不存在以上几种问题,都需要与发件方联系,

4:正常情况下都会是隔天便有物流的,但并非绝对,有个时候发了几天都没有物流的情况也时有发生,主要分两方面讲,比如说,寄货人后台点了发货,而没能及时的打包发出,这种情况,一定是没有物流的。

5:有可能是网站的物流更新这块太卡,没有获取到物流的动态,这种情况是遇到过的,然针对这种情况,可以将快递单号复制出来,在百度首面输入相应的快递公司名称,再进行一次查找,若还没有,就说明确实没有物流信息(若是百度这里通查到物流,说明后台那是卡了),说明确实没有物流。这有可能是快递件有可能还在寄件公司,因为一旦运走,最少会显示快递已收件。

6:如果长时间查询不到物流信息可以给韵达客服拨打电话,客服热线:95546。
参考技术A 查不到的原因有以下几点,单号错误,所以查询不到任何记录。
2:卖家虚假发货,并未有发货,所以给了个虚假的单号,或者未发货的单号,由于没有收件,所以查询不存在。
3:收件员在收到,但未扫描录入,然后在回去扫描录入途中丢失了快递,所以也是查询不存在以上几种问题,都需要与发件方联系

Spring事务管理中@Transactional

最近写的一个消息推送的接口,供订单生成后调用,发现每次传过来的时候订单id是存在的,可是利用订单id去查订单信息做后续操作时发现查不到数据,最终发现是订单生成时候业务处理写在service层,加了Spring的事务处理的相关参数:

@Transactional(value="txManager",isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,rollbackFor={Exception.class})

而紧接着消息推送的接口里也同样加了Spring的事务处理,导致上一事务未结束得不到返回的数据,这里小结下Spring的事务处理:

当一个业务活动跨越多个事务,每个事务的传播级别配置不一样。对于这个个问题,涉及到事务的传播级别,定义如下:

PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务。这是最常见的选择。 
PROPAGATION_SUPPORTS-- 如果当前没有事务,就以非事务方式执行。 
PROPAGATION_MANDATORY-- 如果当前没有事务,就抛出异常。 
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。 
 
简要代码示例如下:
技术分享图片
/**
* 营销活动生成订单 A
*
*
@param recvVo
*
@return
*
@author xingle
* @data 2014-6-9 下午5:39:10
*/
@Override
@Transactional(value
="txManager",isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,rollbackFor={Exception.class})
public synchronized CreatOrderByActyRetnVo creatOrder(BigDecimal userId,
CreatOrderByActyRecvVo recvVo) {

// 主订单id
BigDecimal order_id = orderDao.getOrderId();
OrderInfoVo orderInfoVo
= new OrderInfoVo();
List
<OrderDetailVo> orderDetailLs = new ArrayList<OrderDetailVo>();
/**
* 中间业务处理省略
*/
int m = purchaseDao.createOrderInfo(orderInfoVo);
int n = purchaseDao.createOrderDetail(orderDetailLs);
//消息推送接口
pushNoticeService.pushNotice(order_id, "01");
return vo;
}
技术分享图片

 

技术分享图片
/**
* app端消息推送 B
* @Description:
*
@param order_id
*
@param type
*
@author xingle
* @data 2014-7-4 上午11:31:34
*/
@Override
@Transactional(value
= "txManager", isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = { Exception.class })
public void pushNotice(BigDecimal order_id, String type) {
List
<appNoticeVo> noticeLs = new ArrayList<appNoticeVo>();
List
<appNoticeDetailVo> noticeDtLs = new ArrayList<appNoticeDetailVo>();
// 只针对好机会的订单处理
List<noticeOrderVo> orderLs = pushNoticeDao.getOrderInfo(order_id);
/**
* 中间业务处理省略
*/
pushNoticeDao.insertAppNotice(noticeLs);
pushNoticeDao.insertAppNoticeDetail(noticeDtLs);
}
}
技术分享图片

 

如上,这里把creatOrder的方法称作A,pushNotice的方法称作B,A中调用B。A的事务传播性设为Propagation.REQUIRED,B的事务传播性也设为Propagation.REQUIRED,B中会沿用之前的事务继续,但是由于是在同一事务下,如果方法 B中的操作出错,比如在方法pushNoticeDao.insertAppNotice(noticeLs) 中写错语句,那么发现方法A也会失败,这和我们的要求不符。

为了不影响原订单创建,这里把B传播性设为propagation = Propagation.REQUIRES_NEW,这样B出错并不会导致A也失败,但又出现一个新的问题,即B中

:orderLs = pushNoticeDao.getOrderInfo(order_id) 列表查询不到结果,原来在同一个service下,上一方法还未提交结束。

为了解决这一问题,故把B的调用放在action层中A方法完成之后,如下:

技术分享图片
    @Description("营销活动生成订单")    @RequestMapping(value = "/creatOrder", method = { RequestMethod.POST })    public @ResponseBody CreatOrderByActyRetnVo creatOrder(HttpServletRequest request, HttpServletResponse response,        @RequestBody CreatOrderByActyRecvVo recvVo) {        CreatOrderByActyRetnVo vo = activityService.creatOrder(userId,                recvVo);        try {            pushNoticeService.pushNotice(new BigDecimal(vo.getOrderId()),                    "01");        } catch (Exception e) {            logger.debug("app端消息推送写入异常", e);        }        return vo;    }
技术分享图片

问题得以解决。

 


 

详见:解惑 spring 嵌套事务

 

 





















































以上是关于为啥韵达小程序查不到订单的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序的订单收不到通知?

快递100小程序查快递查不到,订阅失败为啥?,其他小程序正常手机正常

微信小程序酒店下的订单,前台收的到吗

我的快递为啥没有更新物流状态呢。

如何用快递100查快递单号

刚买的IPAD,为啥在官网上查不到保修日期