Forráskód Böngészése

feat: 京东物流预下单/下单接口;

hanchaolong 2 hete
szülő
commit
ae59728c10

+ 2 - 21
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/config/JDExpressConfig.java

@@ -30,27 +30,8 @@ public class JDExpressConfig {
     private String refreshToken;
 
     /**
-     * UAT环境API地址
+     * 京东服务地址
      */
-    private String uatServerUrl;
-
-    /**
-     * 生产环境API地址
-     */
-    private String prodServerUrl;
-
-    private Environment environment;
-
-    // 环境枚举
-    public enum Environment {
-        UAT, PROD
-    }
-
-    /**
-     * 获取当前环境的API地址
-     */
-    public String getCurrentApiUrl() {
-        return environment == Environment.UAT ? uatServerUrl : prodServerUrl;
-    }
+    private String serverUrl;
 }
 

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/LogisticsService.java

@@ -6,6 +6,8 @@ import java.io.UnsupportedEncodingException;
 
 public interface LogisticsService {
 
+    //预下单
+    String precheckOrder();
     //创建物流订单
     String createOrder(LogisticsOrder logisticsOrder) throws UnsupportedEncodingException;
     //取消物流订单

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

@@ -1,14 +1,107 @@
 package com.ruoyi.logistics.service.impl;
 
+import com.lop.open.api.sdk.DefaultDomainApiClient;
+import com.lop.open.api.sdk.LopException;
+import com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCheckPreCreateOrderV1.CommonCreateOrderRequest;
+import com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCheckPreCreateOrderV1.CommonProductInfo;
+import com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCheckPreCreateOrderV1.Contact;
+import com.lop.open.api.sdk.plugin.LopPlugin;
+import com.lop.open.api.sdk.plugin.factory.OAuth2PluginFactory;
+import com.lop.open.api.sdk.request.ECAP.EcapV1OrdersCreateLopRequest;
+import com.lop.open.api.sdk.request.ECAP.EcapV1OrdersPrecheckLopRequest;
+import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersCreateLopResponse;
+import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersPrecheckLopResponse;
+import com.ruoyi.logistics.config.JDExpressConfig;
 import com.ruoyi.logistics.domain.LogisticsOrder;
 import com.ruoyi.logistics.service.LogisticsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-
+@Slf4j
 @Service
 public class JDLogisticsService  implements LogisticsService {
+
+    @Autowired
+    private JDExpressConfig jdExpressConfig;
+
+    @Override
+    public String precheckOrder() {
+        log.info("调用京东开放平台订单预校验接口");
+        try {
+            //设置接口域名(有的对接方案同时支持生产和沙箱环境,有的仅支持生产,具体以对接方案中的【API文档-请求地址】为准),生产域名:https://api.jdl.com 预发环境域名:https://uat-api.jdl.com
+            //DefaultDomainApiClient对象全局只需要创建一次
+            DefaultDomainApiClient client = new DefaultDomainApiClient(jdExpressConfig.getServerUrl(),500,15000);
+
+            //入参对象(请记得更换为自己要使用的接口入参对象)
+            EcapV1OrdersPrecheckLopRequest request = new EcapV1OrdersPrecheckLopRequest();
+
+            //设置入参(请记得更换为自己要使用的接口入参)
+            Contact senderContact  = new Contact();
+            senderContact.setFullAddress("河北省廊坊市广阳区万庄镇中心小学");
+            Contact receiverContact = new Contact();
+            receiverContact.setFullAddress("河北省廊坊市广阳区万庄镇中心小学");
+            CommonCreateOrderRequest requestDTO = new  CommonCreateOrderRequest();
+            requestDTO.setOrderOrigin(1);
+            requestDTO.setCustomerCode("010K****20");
+            CommonProductInfo productInfo = new CommonProductInfo();
+            productInfo.setProductCode("ed-m-0001");
+            requestDTO.setProductsReq(productInfo);
+            requestDTO.setReceiverContact(receiverContact);
+            requestDTO.setSenderContact(senderContact);
+            request.setRequest(requestDTO);
+
+            //设置插件,必须的操作,不同类型的应用入参不同,请看入参注释,公共参数按顺序分别为AppKey、AppSecret、AccessToken
+            //使用开放平台ISV/自研商家应用调用接口
+            LopPlugin lopPlugin = OAuth2PluginFactory.produceLopPlugin(jdExpressConfig.getAppKey(), jdExpressConfig.getAppSecret(), jdExpressConfig.getAccessToken());
+            request.addLopPlugin(lopPlugin);
+
+            EcapV1OrdersPrecheckLopResponse response = client.execute(request);
+        } catch (LopException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
     @Override
     public String createOrder(LogisticsOrder logisticsOrder) {
-        return null;
+        log.info("调用京东开放平台订单预校验接口");
+        try {
+            //设置接口域名(有的对接方案同时支持生产和沙箱环境,有的仅支持生产,具体以对接方案中的【API文档-请求地址】为准),生产域名:https://api.jdl.com 预发环境域名:https://uat-api.jdl.com
+            //DefaultDomainApiClient对象全局只需要创建一次
+            DefaultDomainApiClient client = new DefaultDomainApiClient(jdExpressConfig.getServerUrl(),500,15000);
+
+            //入参对象(请记得更换为自己要使用的接口入参对象)
+            EcapV1OrdersCreateLopRequest request = new EcapV1OrdersCreateLopRequest();
+
+            //设置入参(请记得更换为自己要使用的接口入参)
+            com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.Contact senderContact  = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.Contact();
+            senderContact.setFullAddress("河北省廊坊市广阳区万庄镇中心小学");
+            com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.Contact receiverContact = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.Contact();
+            receiverContact.setFullAddress("河北省廊坊市广阳区万庄镇中心小学");
+            com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonCreateOrderRequest requestDTO = new  com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonCreateOrderRequest();
+            requestDTO.setOrderOrigin(1);
+            requestDTO.setCustomerCode("010K****20");
+            com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo productInfo = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo();
+            productInfo.setProductCode("ed-m-0001");
+            requestDTO.setProductsReq(productInfo);
+            requestDTO.setReceiverContact(receiverContact);
+            requestDTO.setSenderContact(senderContact);
+            request.setRequest(requestDTO);
+
+            //设置插件,必须的操作,不同类型的应用入参不同,请看入参注释,公共参数按顺序分别为AppKey、AppSecret、AccessToken
+            //使用开放平台ISV/自研商家应用调用接口
+            LopPlugin lopPlugin = OAuth2PluginFactory.produceLopPlugin(jdExpressConfig.getAppKey(), jdExpressConfig.getAppSecret(), jdExpressConfig.getAccessToken());
+            request.addLopPlugin(lopPlugin);
+
+            EcapV1OrdersCreateLopResponse response = client.execute(request);
+        } catch (LopException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
     }
 }