liujunchi 2 lat temu
rodzic
commit
942053960d
14 zmienionych plików z 417 dodań i 69 usunięć
  1. 1 1
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/UmsAdminController.java
  2. 39 0
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java
  3. 128 18
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/domain/CourierInfo.java
  4. 28 9
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/enums/CompanyEnum.java
  5. 3 3
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/CourierService.java
  6. 16 5
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/impl/Courier100ServiceImpl.java
  7. 1 0
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java
  8. 19 4
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/OmsOrderCourierMapper.java
  9. 13 18
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderCourier.java
  10. 29 11
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderCourierMapper.xml
  11. 23 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java
  12. 31 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java
  13. 29 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsOrderCourierService.java
  14. 57 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsOrderCourierServiceImpl.java

+ 1 - 1
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/UmsAdminController.java

@@ -94,7 +94,7 @@ public class UmsAdminController {
         data.put("icon", umsAdmin.getIcon());
         List<UmsRole> roleList = adminService.getRoleList(umsAdmin.getId());
         if(CollUtil.isNotEmpty(roleList)){
-            List<String> roles = roleList.stream().map(UmsRole::getName).collect(Collectors.toList());
+            List<String> roles = roleList.stream().filter(role -> role != null).map(UmsRole::getName).collect(Collectors.toList());
             data.put("roles",roles);
         }
         return CommonResult.success(data);

+ 39 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -8,15 +8,22 @@ import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.admin.service.OmsOrderReturnApplyService;
 import com.yonge.cooleshow.admin.service.PmsProductService;
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
+import com.yonge.cooleshow.mbg.mapper.OmsOrderCourierMapper;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderMapper;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderOperateHistoryMapper;
+import com.yonge.cooleshow.mbg.mapper.SysConfigMapper;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
 import com.yonge.cooleshow.mbg.model.OmsOrderExample;
 import com.yonge.cooleshow.mbg.model.OmsOrderOperateHistory;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.cooleshow.admin.enums.OrderStatisticalEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -39,6 +46,8 @@ import java.util.stream.Collectors;
  */
 @Service
 public class OmsOrderServiceImpl implements OmsOrderService {
+
+    private static final Logger LOG = LoggerFactory.getLogger(OmsOrderServiceImpl.class);
     @Autowired
     private OmsOrderMapper orderMapper;
     @Autowired
@@ -54,6 +63,15 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     @Autowired
     private PmsProductService productService;
 
+    @Autowired
+    private OmsOrderCourierMapper omsOrderCourierMapper;
+
+    @Autowired
+    private CourierService courierService;
+
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
+
     @Override
     public List<OrderVo> list(OmsOrderQueryParam queryParam, Integer pageSize, Integer pageNum) {
         PageHelper.startPage(pageNum, pageSize);
@@ -76,6 +94,27 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                     return history;
                 }).collect(Collectors.toList());
         orderOperateHistoryDao.insertList(operateHistoryList);
+
+        // 添加快递信息
+        List<OmsOrderCourier> omsOrderCouriers = new ArrayList<>();
+        for (OmsOrderDeliveryParam omsOrderDeliveryParam : deliveryParamList) {
+            OmsOrderCourier omsOrderCourier = new OmsOrderCourier();
+            omsOrderCourier.setOrderId(omsOrderDeliveryParam.getOrderId());
+            omsOrderCourier.setCourierNo(omsOrderDeliveryParam.getDeliverySn());
+            omsOrderCourier.setCompany(omsOrderDeliveryParam.getDeliveryCompany());
+            omsOrderCouriers.add(omsOrderCourier);
+        }
+        omsOrderCourierMapper.batchInsert(omsOrderCouriers);
+
+
+        for (OmsOrderCourier omsOrderCourier : omsOrderCouriers) {
+            try {
+                courierService.subscribe(CompanyEnum.descOf(omsOrderCourier.getCompany()),omsOrderCourier.getCourierNo(),sysConfigMapper.getConfig("kuaidiUrl"));
+
+            } catch (Exception e) {
+                LOG.error(e.getMessage());
+            }
+        }
         return count;
     }
 

+ 128 - 18
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/domain/CourierInfo.java

@@ -1,6 +1,9 @@
 package com.yonge.cooleshow.mall.common.courier.domain;
 
+import com.yonge.cooleshow.mall.common.courier.enums.CompanyEnum;
+
 import java.util.Date;
+import java.util.List;
 
 /**
  * Description 快递运输信息
@@ -10,31 +13,138 @@ import java.util.Date;
  */
 public class CourierInfo {
 
-    // 时间
-    private Date time;
+    // 快递公司
+    private CompanyEnum company;
+
+    // 快递单号
+    private String courierNo;
+
+    // 物流信息
+    private List<Logistics> logisticsList;
+
+    public  static class Logistics {
+        // 时间
+        private Date time;
+
+        //内容
+        private String context;
+
+
+        //行政区域的编码
+        private String areaCode;
+
+        //行政区域的名称
+        private String areaName;
+
+        //物流状态名称或者高级状态名称
+        private String status;
+
+        //快件当前地点
+        private String location;
+
+        //行政区域经纬度
+        private String areaCenter;
+
+        //行政区域拼音
+        private String areaPinYin;
+
+        //高级物流状态值
+        private String statusCode;
+
+        public Date getTime() {
+            return time;
+        }
+
+        public void setTime(Date time) {
+            this.time = time;
+        }
+
+        public String getContext() {
+            return context;
+        }
+
+        public void setContext(String context) {
+            this.context = context;
+        }
+
+        public String getAreaCode() {
+            return areaCode;
+        }
+
+        public void setAreaCode(String areaCode) {
+            this.areaCode = areaCode;
+        }
+
+        public String getAreaName() {
+            return areaName;
+        }
+
+        public void setAreaName(String areaName) {
+            this.areaName = areaName;
+        }
+
+        public String getStatus() {
+            return status;
+        }
+
+        public void setStatus(String status) {
+            this.status = status;
+        }
+
+        public String getLocation() {
+            return location;
+        }
+
+        public void setLocation(String location) {
+            this.location = location;
+        }
+
+        public String getAreaCenter() {
+            return areaCenter;
+        }
+
+        public void setAreaCenter(String areaCenter) {
+            this.areaCenter = areaCenter;
+        }
+
+        public String getAreaPinYin() {
+            return areaPinYin;
+        }
 
-    //内容
-    private String context;
+        public void setAreaPinYin(String areaPinYin) {
+            this.areaPinYin = areaPinYin;
+        }
 
+        public String getStatusCode() {
+            return statusCode;
+        }
 
-    //行政区域的编码
-    private String areaCode;
+        public void setStatusCode(String statusCode) {
+            this.statusCode = statusCode;
+        }
+    }
 
-    //行政区域的名称
-    private String areaName;
+    public CompanyEnum getCompany() {
+        return company;
+    }
 
-    //物流状态名称或者高级状态名称
-    private String status;
+    public void setCompany(CompanyEnum company) {
+        this.company = company;
+    }
 
-    //快件当前地点
-    private String location;
+    public String getCourierNo() {
+        return courierNo;
+    }
 
-    //行政区域经纬度
-    private String areaCenter;
+    public void setCourierNo(String courierNo) {
+        this.courierNo = courierNo;
+    }
 
-    //行政区域拼音
-    private String areaPinYin;
+    public List<Logistics> getLogisticsList() {
+        return logisticsList;
+    }
 
-    //高级物流状态值
-    private String statusCode;
+    public void setLogisticsList(List<Logistics> logisticsList) {
+        this.logisticsList = logisticsList;
+    }
 }

+ 28 - 9
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/enums/CompanyEnum.java

@@ -8,12 +8,12 @@ package com.yonge.cooleshow.mall.common.courier.enums;
  */
 public enum CompanyEnum {
 
-    SHUNFENG("shunfeng","顺丰"),
-    ZHONGTONG("zhongtong","中通"),
-    YUANTONG("yuantong","圆通"),
+    SHUNFENG("shunfeng","顺丰快递"),
+    ZHONGTONG("zhongtong","中通快递"),
+    YUANTONG("yuantong","圆通快递"),
     HUITONGKUAIDI("huitongkuaidi","汇通"),
     SHENTONG("shentong","申通"),
-    YUNDA("yunda","韵达"),
+    YUNDA("yunda","韵达快递"),
     EMS("ems","ems"),
     JD("jd","京东"),
     ZHAIJISONG("zhaijisong","宅急送"),
@@ -25,18 +25,37 @@ public enum CompanyEnum {
     private String code;
 
     // 公司描述
-    private String msg;
+    private String desc;
 
-    CompanyEnum(String code, String msg) {
+    CompanyEnum(String code, String desc) {
         this.code = code;
-        this.msg = msg;
+        this.desc = desc;
     }
 
     public String getCode() {
         return code;
     }
 
-    public String getMsg() {
-        return msg;
+    public String getDesc() {
+        return desc;
+    }
+
+    public static CompanyEnum codeOf(String s) {
+        for (CompanyEnum value : CompanyEnum.values()) {
+            if (value.getCode().equals(s)) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+
+    public static CompanyEnum descOf(String s) {
+        for (CompanyEnum value : CompanyEnum.values()) {
+            if (value.getDesc().equals(s)) {
+                return value;
+            }
+        }
+        return null;
     }
 }

+ 3 - 3
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/CourierService.java

@@ -20,7 +20,7 @@ public interface CourierService {
      * @param company 快递公司
      * @param courierNo 快递编号
      */
-    List<CourierInfo> queryTrack(CompanyEnum company,String courierNo);
+    CourierInfo queryTrack(CompanyEnum company,String courierNo);
 
 
     /**
@@ -29,7 +29,7 @@ public interface CourierService {
      * @param body
      * @return
      */
-    List<CourierInfo> getCourierInfos(String body);
+    CourierInfo getCourierInfos(String body);
 
     /**
      * 快递信息订阅
@@ -38,5 +38,5 @@ public interface CourierService {
      * @param courierNo 快递单号
      * @param url 回调地址
      */
-    boolean subscribe(CompanyEnum company,String courierNo,String url);
+    boolean subscribe(CompanyEnum company,String courierNo,String url) throws Exception;
 }

+ 16 - 5
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/courier/service/impl/Courier100ServiceImpl.java

@@ -21,6 +21,8 @@ import com.yonge.cooleshow.mall.common.courier.service.CourierService;
 import com.yonge.toolset.base.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
 
 import java.util.List;
 
@@ -30,17 +32,20 @@ import java.util.List;
  * @author liujunchi
  * @date 2022-10-26
  */
+@Service("Courier100Service")
 public class Courier100ServiceImpl implements CourierService {
 
     private static final Logger LOG = LoggerFactory.getLogger(Courier100ServiceImpl.class);
 
-    private String key = "VCjiLJPi6082";
+    @Value("${courier.courier100.key:VCjiLJPi6082}")
+    private String key;
 
-    private String customer ="9D9FE2336BB04B0414E243E7700FBD83";
+    @Value("${courier.courier100.customer:9D9FE2336BB04B0414E243E7700FBD83}")
+    private String customer;
 
 
     @Override
-    public List<CourierInfo> queryTrack(CompanyEnum company, String courierNo) {
+    public CourierInfo queryTrack(CompanyEnum company, String courierNo) {
         QueryTrackReq queryTrackReq = new QueryTrackReq();
         QueryTrackParam queryTrackParam = new QueryTrackParam();
 
@@ -71,12 +76,18 @@ public class Courier100ServiceImpl implements CourierService {
     }
 
     @Override
-    public List<CourierInfo> getCourierInfos(String body) {
+    public CourierInfo getCourierInfos(String body) {
         JSONObject jsonObject = JSON.parseObject(body);
         if (!"200".equals(jsonObject.getString("status"))) {
             throw new BizException(jsonObject.getString("message"));
         }
-        return JSON.parseArray(jsonObject.getString("data"), CourierInfo.class);
+        CourierInfo courierInfo = new CourierInfo();
+        List<CourierInfo.Logistics> data = JSON.parseArray(jsonObject.getString("data"), CourierInfo.Logistics.class);
+
+        courierInfo.setLogisticsList(data);
+        courierInfo.setCourierNo(jsonObject.getString("nu"));
+        courierInfo.setCompany(CompanyEnum.codeOf(jsonObject.getString("com")));
+        return courierInfo;
     }
 
     @Override

+ 1 - 0
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java

@@ -18,6 +18,7 @@ public enum OrderCacheEnum {
     LOCK_REFUND_ORDER_MALL("商城退款锁"),
     LOCK_ORDER_NO_MALL("订单号锁"),
     LOCK_STOCK_MALL("商品库存锁"),
+    COURIER_LOCK("快递单号锁"),
 
     ;
     /***

+ 19 - 4
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/OmsOrderCourierMapper.java

@@ -1,12 +1,15 @@
 package com.yonge.cooleshow.mbg.mapper;
 
 import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
 
 /**
-* Description
-* @author: feng-ji
-* @date: 2022-10-28
-*/
+ * Description
+ *
+ * @author: feng-ji
+ * @date: 2022-10-28
+ */
 public interface OmsOrderCourierMapper {
     int deleteByPrimaryKey(Long id);
 
@@ -19,4 +22,16 @@ public interface OmsOrderCourierMapper {
     int updateByPrimaryKeySelective(OmsOrderCourier record);
 
     int updateByPrimaryKey(OmsOrderCourier record);
+
+    int batchInsert(@Param("list") List<OmsOrderCourier> list);
+
+    /**
+     * 更新物流信息
+     */
+    void updateByCourierNo(@Param("courierNo") String courierNo, @Param("logistics") String logistics);
+
+    /**
+     * 查询物流信息
+     */
+    OmsOrderCourier queryByCourierNo(@Param("courierNo") String deliverySn);
 }

+ 13 - 18
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderCourier.java

@@ -1,13 +1,8 @@
 package com.yonge.cooleshow.mbg.model;
 
 /**
-* Description
-* @author: feng-ji
-* @date: 2022-10-28
-*/
-/**
-    * 快递信息表
-    */
+ * 快递信息表
+ */
 public class OmsOrderCourier {
     private Long id;
 
@@ -17,18 +12,18 @@ public class OmsOrderCourier {
     private String company;
 
     /**
-    * 订单号
-    */
-    private String orderNo;
+     * 订单号
+     */
+    private Long orderId;
 
     /**
-    * 快递单号
-    */
+     * 快递单号
+     */
     private String courierNo;
 
     /**
-    * 物流信息
-    */
+     * 物流信息
+     */
     private String logistics;
 
     public Long getId() {
@@ -47,12 +42,12 @@ public class OmsOrderCourier {
         this.company = company;
     }
 
-    public String getOrderNo() {
-        return orderNo;
+    public Long getOrderId() {
+        return orderId;
     }
 
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
     }
 
     public String getCourierNo() {

+ 29 - 11
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderCourierMapper.xml

@@ -6,13 +6,13 @@
     <!--@Table oms_order_courier-->
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="company" jdbcType="VARCHAR" property="company" />
-    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
+    <result column="order_id" jdbcType="BIGINT" property="orderId" />
     <result column="courier_no" jdbcType="VARCHAR" property="courierNo" />
     <result column="logistics" jdbcType="LONGVARCHAR" property="logistics" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, company, order_no, courier_no, logistics
+    id, company, order_id, courier_no, logistics
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -28,9 +28,9 @@
   </delete>
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderCourier" useGeneratedKeys="true">
     <!--@mbg.generated-->
-    insert into oms_order_courier (company, order_no, courier_no, 
+    insert into oms_order_courier (company, order_id, courier_no, 
       logistics)
-    values (#{company,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR}, #{courierNo,jdbcType=VARCHAR}, 
+    values (#{company,jdbcType=VARCHAR}, #{orderId,jdbcType=BIGINT}, #{courierNo,jdbcType=VARCHAR}, 
       #{logistics,jdbcType=LONGVARCHAR})
   </insert>
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderCourier" useGeneratedKeys="true">
@@ -40,8 +40,8 @@
       <if test="company != null">
         company,
       </if>
-      <if test="orderNo != null">
-        order_no,
+      <if test="orderId != null">
+        order_id,
       </if>
       <if test="courierNo != null">
         courier_no,
@@ -54,8 +54,8 @@
       <if test="company != null">
         #{company,jdbcType=VARCHAR},
       </if>
-      <if test="orderNo != null">
-        #{orderNo,jdbcType=VARCHAR},
+      <if test="orderId != null">
+        #{orderId,jdbcType=BIGINT},
       </if>
       <if test="courierNo != null">
         #{courierNo,jdbcType=VARCHAR},
@@ -72,8 +72,8 @@
       <if test="company != null">
         company = #{company,jdbcType=VARCHAR},
       </if>
-      <if test="orderNo != null">
-        order_no = #{orderNo,jdbcType=VARCHAR},
+      <if test="orderId != null">
+        order_id = #{orderId,jdbcType=BIGINT},
       </if>
       <if test="courierNo != null">
         courier_no = #{courierNo,jdbcType=VARCHAR},
@@ -88,9 +88,27 @@
     <!--@mbg.generated-->
     update oms_order_courier
     set company = #{company,jdbcType=VARCHAR},
-      order_no = #{orderNo,jdbcType=VARCHAR},
+      order_id = #{orderId,jdbcType=BIGINT},
       courier_no = #{courierNo,jdbcType=VARCHAR},
       logistics = #{logistics,jdbcType=LONGVARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>
+  <insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into oms_order_courier
+    (company, order_id, courier_no, logistics)
+    values
+    <foreach collection="list" item="item" separator=",">
+      (#{item.company,jdbcType=VARCHAR}, #{item.orderId,jdbcType=BIGINT}, #{item.courierNo,jdbcType=VARCHAR}, 
+        #{item.logistics,jdbcType=LONGVARCHAR})
+    </foreach>
+  </insert>
+
+  <update id="updateByCourierNo">
+    update oms_order_courier set logistics = #{logistics} where courier_no = #{courierNo};
+  </update>
+
+  <select id="queryByCourierNo" resultMap="BaseResultMap">
+    select * from oms_order_courier where courier_no = #{courierNo} order by  id desc limit  1
+    </select>
 </mapper>

+ 23 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -4,9 +4,11 @@ import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
+import com.yonge.cooleshow.mbg.model.OmsOrderCourier;
 import com.yonge.cooleshow.portal.domain.ConfirmOrderResult;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
 import com.yonge.cooleshow.portal.domain.OrderParam;
+import com.yonge.cooleshow.portal.service.OmsOrderCourierService;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
@@ -37,6 +39,8 @@ public class OmsPortalOrderController {
     private OmsPortalOrderService portalOrderService;
 
 
+    @Autowired
+    private OmsOrderCourierService orderCourierService;
 
     @Value("${message.debugMode}")
     private boolean debugMode;
@@ -214,4 +218,23 @@ public class OmsPortalOrderController {
                                }, 60L, TimeUnit.SECONDS);
         return CommonResult.success(null);
     }
+
+
+    @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) {
+        orderCourierService.refreshCourier(deliverySn);
+        return CommonResult.success(null);
+    }
 }

+ 31 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -1,12 +1,18 @@
 package com.yonge.cooleshow.portal.controller.open;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.mall.common.courier.domain.CourierInfo;
+import com.yonge.cooleshow.mall.common.courier.service.CourierService;
 import com.yonge.cooleshow.portal.dto.ShareProductVo;
 import com.yonge.cooleshow.portal.dto.ShareProfitParam;
+import com.yonge.cooleshow.portal.service.OmsOrderCourierService;
+import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.Api;
@@ -17,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 @RestController
 @RequestMapping("/open")
@@ -30,6 +37,11 @@ public class OpenShareController extends BaseController {
     @Autowired
     private PmsPortalProductService portalProductService;
 
+    @Autowired
+    private OmsOrderCourierService orderCourierService;
+
+    @Autowired
+    private CourierService courierService;
 
     @ApiOperation(value = "老师商品分享分润")
     @PostMapping(value="/productProfit")
@@ -49,4 +61,23 @@ public class OpenShareController extends BaseController {
         }
         return CommonResult.failed("分享功能暂未开放");
     }
+
+
+
+    @ApiOperation(value = "快递信息回调")
+    @PostMapping(value="/courierCallback")
+    @ResponseBody
+    public CommonResult<ShareProductVo> courierCallback(@RequestBody String obj) {
+
+        JSONObject jsonObject = JSON.parseObject(obj);
+        String data = jsonObject.getString("lastResult");
+        CourierInfo courierInfos = courierService.getCourierInfos(data);
+
+        // 保存快递信息
+        orderCourierService.updateCourierInfo(courierInfos);
+
+        return CommonResult.failed("{\n" + "    \"result\":true,\n" + "    \"returnCode\":\"200\",\n" + "    \"message\":\"成功\"\n" + "}");
+    }
+
+
 }

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

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.portal.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);
+}

+ 57 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsOrderCourierServiceImpl.java

@@ -0,0 +1,57 @@
+package com.yonge.cooleshow.portal.service.impl;
+
+import com.alibaba.fastjson.JSON;
+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.cooleshow.portal.service.OmsOrderCourierService;
+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) {
+        return omsOrderCourierMapper.queryByCourierNo(deliverySn);
+    }
+
+    @Override
+    public void refreshCourier(String deliverySn) {
+        RLock lock = redissonClient.getLock(OrderCacheEnum.COURIER_LOCK.getCode());
+        lock.lock(1, TimeUnit.HOURS);
+        OmsOrderCourier omsOrderCourier = omsOrderCourierMapper.queryByCourierNo(deliverySn);
+        CourierInfo courierInfo = courierService.queryTrack(CompanyEnum.valueOf(omsOrderCourier.getCompany()),
+                                                            omsOrderCourier.getCourierNo());
+        updateCourierInfo(courierInfo);
+
+    }
+}