Bladeren bron

后台添加快递接口

liujunchi 2 jaren geleden
bovenliggende
commit
19389ac28b

+ 25 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderController.java

@@ -1,10 +1,12 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.admin.service.OmsOrderCourierService;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -27,6 +29,9 @@ public class OmsOrderController {
     @Autowired
     private OmsOrderService orderService;
 
+
+    @Autowired
+    private OmsOrderCourierService orderCourierService;
     @ApiOperation("查询订单")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     @ResponseBody
@@ -112,4 +117,24 @@ public class OmsOrderController {
         }
         return CommonResult.failed();
     }
+
+
+
+    @ApiOperation("用户查询物流")
+    @GetMapping(value = "/selectCourier")
+    @ResponseBody
+    public CommonResult<OmsOrderCourier> selectCourier(@RequestParam String  deliverySn) {
+        OmsOrderCourier omsOrderCourier = orderCourierService.getCourierInfo(deliverySn);
+        return CommonResult.success(omsOrderCourier);
+    }
+
+
+
+    @ApiOperation("用户刷新物流信息")
+    @GetMapping(value = "/refreshCourier")
+    @ResponseBody
+    public CommonResult refreshCourier(@RequestParam String  deliverySn) throws InterruptedException {
+        orderCourierService.refreshCourier(deliverySn);
+        return CommonResult.success(null);
+    }
 }

+ 29 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderCourierService.java

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.admin.service;
+
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-10-31
+ */
+public interface OmsOrderCourierService {
+
+
+    @Transactional
+    void updateCourierInfo(CourierInfo courierInfos);
+
+    /**
+     * 查询物流
+     */
+    OmsOrderCourier getCourierInfo(String deliverySn);
+
+    /**
+     * 刷新物流信息
+     */
+    @Transactional
+    void refreshCourier(String deliverySn) throws InterruptedException;
+}

+ 66 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderCourierServiceImpl.java

@@ -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);
+        }
+    }
+}

+ 3 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -67,7 +67,8 @@ public class OpenShareController extends BaseController {
     @ApiOperation(value = "快递信息回调")
     @PostMapping(value="/courierCallback")
     @ResponseBody
-    public CommonResult<ShareProductVo> courierCallback(@RequestBody String obj) {
+    public CommonResult courierCallback(@RequestBody String obj) {
+        log.info("快递信息回调:{}",obj);
 
         JSONObject jsonObject = JSON.parseObject(obj);
         String data = jsonObject.getString("lastResult");
@@ -76,7 +77,7 @@ public class OpenShareController extends BaseController {
         // 保存快递信息
         orderCourierService.updateCourierInfo(courierInfos);
 
-        return CommonResult.failed("{\n" + "    \"result\":true,\n" + "    \"returnCode\":\"200\",\n" + "    \"message\":\"成功\"\n" + "}");
+        return CommonResult.success("{\n" + "    \"result\":true,\n" + "    \"returnCode\":\"200\",\n" + "    \"message\":\"成功\"\n" + "}");
     }