Bläddra i källkod

feat: 京东物流接口对接;

hanchaolong 1 vecka sedan
förälder
incheckning
c5d84e2359

+ 9 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/constant/JDDictConstants.java

@@ -0,0 +1,9 @@
+package com.ruoyi.logistics.constant;
+
+public class JDDictConstants {
+
+    //主产品类型
+    public static final String PRODUCT_CODE_ED_M_0001 = "ed-m-0001";
+    public static final String PRODUCT_CODE_ED_M_0002 = "ed-m-0002";
+    public static final String PRODUCT_CODE_FR_M_0004 = "fr-m-0004";
+}

+ 3 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizWaybillOrderController.java

@@ -4,6 +4,8 @@ import java.io.UnsupportedEncodingException;
 import java.util.List;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.datascope.annotation.DataScope;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -41,6 +43,7 @@ public class BizWaybillOrderController extends BaseController
      */
     @RequiresPermissions("system:order:list")
     @GetMapping("/list")
+    @DataScope(deptAlias = "bwo", userAlias = "u")
     public TableDataInfo list(BizWaybillOrder bizWaybillOrder)
     {
         startPage();

+ 3 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizWaybillOrder.java

@@ -152,8 +152,11 @@ public class BizWaybillOrder extends BaseEntity
     @Excel(name = "用户ID")
     private Long userId;
 
+    /** 产品类型 */
+    @Excel(name = "产品类型")
     private String productCode;
 
+    /** 增值服务 */
     private String addedService;
 
     public void setWaybillId(Long waybillId) 

+ 7 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillOrderServiceImpl.java

@@ -3,7 +3,10 @@ package com.ruoyi.logistics.service.impl;
 import java.io.UnsupportedEncodingException;
 import java.util.List;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.datascope.annotation.DataScope;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.logistics.service.LogisticsOrderService;
+import com.ruoyi.system.api.model.LoginUser;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -59,9 +62,13 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
     @Override
     public int insertBizWaybillOrder(BizWaybillOrder bizWaybillOrder) throws UnsupportedEncodingException {
 
+        LoginUser loginUser = SecurityUtils.getLoginUser();
         logisticsOrderService.createOrder(bizWaybillOrder);
 
         bizWaybillOrder.setCreateTime(DateUtils.getNowDate());
+
+        bizWaybillOrder.setUserId(loginUser.getUserid());
+        bizWaybillOrder.setDeptId(loginUser.getSysUser().getDeptId());
         return bizWaybillOrderMapper.insertBizWaybillOrder(bizWaybillOrder);
     }
 

+ 71 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/JDLogisticsService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.logistics.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.lop.open.api.sdk.DefaultDomainApiClient;
 import com.lop.open.api.sdk.LopException;
@@ -19,7 +20,9 @@ import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersCreateLopResponse;
 import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersModifyLopResponse;
 import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersPrecheckLopResponse;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.logistics.config.JDExpressConfig;
+import com.ruoyi.logistics.constant.JDDictConstants;
 import com.ruoyi.logistics.constant.SysConfigConstants;
 import com.ruoyi.logistics.domain.BizWaybillOrder;
 import com.ruoyi.logistics.service.LogisticsService;
@@ -29,7 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service
@@ -116,7 +121,7 @@ public class JDLogisticsService  implements LogisticsService {
             //订单信息
             com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonCreateOrderRequest requestDTO = new  com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonCreateOrderRequest();
             requestDTO.setOrderId(bizWaybillOrder.getWaybillNo());
-            requestDTO.setOrderOrigin(1);
+            requestDTO.setOrderOrigin(getOrderOrigin(bizWaybillOrder.getProductCode()));
             requestDTO.setCustomerCode(sysConfigService.selectConfigByKey(SysConfigConstants.JD_LOGISTICS_CUSTOMERCODE));
             requestDTO.setSettleType(3);
             requestDTO.setPickupStartTime(bizWaybillOrder.getPickupTime().getTime());
@@ -127,6 +132,24 @@ public class JDLogisticsService  implements LogisticsService {
             com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo productInfo = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo();
             productInfo.setProductCode(bizWaybillOrder.getProductCode());
 
+            if (StringUtils.isNotEmpty(bizWaybillOrder.getAddedService())) {
+                JSONObject addedJson = JSON.parseObject(bizWaybillOrder.getAddedService());
+                List<com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo> addedProducts = new ArrayList<>();
+                if (!addedJson.isEmpty()) {
+                    addedJson.keySet().forEach(key -> {
+                        com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo addedProduct = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo();
+                        addedProduct.setProductCode(key);
+
+                        addedProduct.setProductAttrs(getProductAttrs(requestDTO.getOrderOrigin(), key, addedJson.getString(key)));
+
+                        addedProducts.add(addedProduct);
+                    });
+                }
+
+                productInfo.setAddedProducts(addedProducts);
+            }
+
+
             //货物信息
             List<CommonCargoInfo> cargoes = new ArrayList<>();
             CommonCargoInfo cargoInfo = new CommonCargoInfo();
@@ -261,4 +284,51 @@ public class JDLogisticsService  implements LogisticsService {
         }
         return result;
     }
+
+    private Integer getOrderOrigin(String productCode) {
+        int orderOrigin = 1;
+        if (productCode.equals(JDDictConstants.PRODUCT_CODE_ED_M_0001) || productCode.equals(JDDictConstants.PRODUCT_CODE_ED_M_0002)) {
+            orderOrigin = 1;
+        } else if (productCode.equals(JDDictConstants.PRODUCT_CODE_FR_M_0004)) {
+            orderOrigin = 4;
+        }
+        return orderOrigin;
+    }
+
+    /**
+     * 封装增值服务参数
+     * @param addedProductCode
+     * @return
+     */
+    private Map<String, String> getProductAttrs(Integer orderOrigin, String addedProductCode, String value) {
+        if (StringUtils.isBlank(addedProductCode)) {
+            return null;
+        }
+        Map<String, String> productAttrs = new HashMap<>();
+        if (orderOrigin == 1) {
+            if (addedProductCode.equals("ed-a-0002")) {
+                productAttrs.put("guaranteeMoney", value);
+                return productAttrs;
+            } else if (addedProductCode.equals("ed-a-0010")) {
+                productAttrs.put("reReceiveMode", "[\"electronic\"]");
+                productAttrs.put("reReceiveType", "[\"electronicStubForm\"]");
+                return productAttrs;
+            } else if (addedProductCode.equals("ed-a-0011")) {
+                productAttrs.put("packagingType", value);
+                return productAttrs;
+            }
+        } else if (orderOrigin == 4) {
+            if (addedProductCode.equals("fr-a-0002")) {
+                productAttrs.put("guaranteeMoney", value);
+                return productAttrs;
+            } else if (addedProductCode.equals("fr-a-0007")) {
+                productAttrs.put("reReceiveMode", value);
+                return productAttrs;
+            } else if (addedProductCode.equals("fr-a-0005")) {
+                productAttrs.put("packagingType", value);
+                return productAttrs;
+            }
+        }
+        return null;
+    }
 }

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 3 - 1
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillOrderMapper.xml


+ 0 - 57
jd-logistics-ui-v3/src/views/logistics/city/index.vue

@@ -1,14 +1,6 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="城市id" prop="cityId">
-        <el-input
-          v-model="queryParams.cityId"
-          placeholder="请输入城市id"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="省市级别" prop="level">
         <el-input
           v-model="queryParams.level"
@@ -17,22 +9,6 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="父级id" prop="parentId">
-        <el-input
-          v-model="queryParams.parentId"
-          placeholder="请输入父级id"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="区号" prop="areaCode">
-        <el-input
-          v-model="queryParams.areaCode"
-          placeholder="请输入区号"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="名称" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -41,38 +17,6 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="合并名称" prop="mergerName">
-        <el-input
-          v-model="queryParams.mergerName"
-          placeholder="请输入合并名称"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="经度" prop="lng">
-        <el-input
-          v-model="queryParams.lng"
-          placeholder="请输入经度"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="纬度" prop="lat">
-        <el-input
-          v-model="queryParams.lat"
-          placeholder="请输入纬度"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="是否展示" prop="isShow">
-        <el-input
-          v-model="queryParams.isShow"
-          placeholder="请输入是否展示"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -123,7 +67,6 @@
 
     <el-table v-loading="loading" :data="cityList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="id" align="center" prop="id" />
       <el-table-column label="城市id" align="center" prop="cityId" />
       <el-table-column label="省市级别" align="center" prop="level" />
       <el-table-column label="父级id" align="center" prop="parentId" />