|  | @@ -0,0 +1,66 @@
 | 
	
		
			
				|  |  | +package com.yonge.cooleshow.admin.service.impl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.admin.service.OmsOrderCourierService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.mall.common.courier.service.CourierService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.mbg.mapper.OmsOrderCourierMapper;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
 | 
	
		
			
				|  |  | +import com.yonge.toolset.base.exception.BizException;
 | 
	
		
			
				|  |  | +import org.redisson.api.RLock;
 | 
	
		
			
				|  |  | +import org.redisson.api.RedissonClient;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Description
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @author liujunchi
 | 
	
		
			
				|  |  | + * @date 2022-10-31
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +public class OmsOrderCourierServiceImpl implements OmsOrderCourierService {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private OmsOrderCourierMapper omsOrderCourierMapper;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private CourierService courierService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private RedissonClient redissonClient;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void updateCourierInfo(CourierInfo courierInfos) {
 | 
	
		
			
				|  |  | +        String courierNo = courierInfos.getCourierNo();
 | 
	
		
			
				|  |  | +        String logistics = JSON.toJSONString(courierInfos.getLogisticsList());
 | 
	
		
			
				|  |  | +        omsOrderCourierMapper.updateByCourierNo(courierNo,logistics);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public OmsOrderCourier getCourierInfo(String deliverySn) {
 | 
	
		
			
				|  |  | +        OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
 | 
	
		
			
				|  |  | +        if (omsOrderCourier == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("未找到物流信息");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return omsOrderCourier;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void refreshCourier(String deliverySn) throws InterruptedException {
 | 
	
		
			
				|  |  | +        RLock lock = redissonClient.getLock(OrderCacheEnum.COURIER_LOCK.getCode());
 | 
	
		
			
				|  |  | +        boolean b = lock.tryLock(1, TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +        if (b) {
 | 
	
		
			
				|  |  | +            OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
 | 
	
		
			
				|  |  | +            if (omsOrderCourier == null) {
 | 
	
		
			
				|  |  | +                throw new BizException("未找到物流信息");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            CourierInfo courierInfo = courierService.queryTrack(CompanyEnum.descOf(omsOrderCourier.getCompany()),
 | 
	
		
			
				|  |  | +                                                                omsOrderCourier.getCourierNo());
 | 
	
		
			
				|  |  | +            updateCourierInfo(courierInfo);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |