Kaynağa Gözat

通过平台转发,请求京东订单接口,绕过京东白名单限制

liurui 2 yıl önce
ebeveyn
işleme
9e99a9d646

+ 41 - 8
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -37,9 +37,14 @@ import com.iamberry.rst.util.JingdongConfig;
 import com.iamberry.rst.util.PageUtil;
 import com.iamberry.rst.util.TaobaoConfig;
 import com.iamberry.wechat.tools.DateTimeUtil;
+import com.iamberry.wechat.tools.HttpClient431Util;
+import com.iamberry.wechat.tools.payUtil.StringUtil;
 import com.jd.open.api.sdk.DefaultJdClient;
 import com.jd.open.api.sdk.JdClient;
 import com.jd.open.api.sdk.JdException;
+import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo;
+import com.jd.open.api.sdk.domain.order.OrderShipmentService.response.shipment.OperatorResult;
+import com.jd.open.api.sdk.internal.util.HttpUtil;
 import com.jd.open.api.sdk.request.order.PopOrderShipmentRequest;
 import com.jd.open.api.sdk.response.order.PopOrderShipmentResponse;
 import com.taobao.api.ApiException;
@@ -49,10 +54,12 @@ import com.taobao.api.request.AlibabaAscpLogisticsOfflineSendRequest;
 import com.taobao.api.response.AlibabaAscpLogisticsOfflineSendResponse;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+import org.apache.http.HttpEntity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
@@ -110,6 +117,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Autowired
     private SysConfigService sysConfigService;
 
+    @Value("${jingdong.order.domain}")
+    private String jdOrderDomain;
+
     /**
      * 缓存订单项的前缀
      */
@@ -2263,15 +2273,35 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             }
             //京东订单发货
             if (salesOrder.getSalesBatchId().startsWith("JT")) {
-                SysConfig sysConfigAll = sysConfigService.getSysConfigAll(27);
-                JdClient client = new DefaultJdClient(JingdongConfig.JINGDONG_API_URL, sysConfigAll.getConfigParameter(), JingdongConfig.jd_appkey, JingdongConfig.jd_secret);
-                PopOrderShipmentRequest req = new PopOrderShipmentRequest();
-                req.setOrderId(Long.parseLong(salesOrder.getSalesOrderId()));
-                req.setLogiCoprId(salesOrder.getSalesPostFirm());
-                req.setLogiNo(o.getSalesPostNum());
+
+
+
+//                SysConfig sysConfigAll = sysConfigService.getSysConfigAll(27);
+//                JdClient client = new DefaultJdClient(JingdongConfig.JINGDONG_API_URL, sysConfigAll.getConfigParameter(), JingdongConfig.jd_appkey, JingdongConfig.jd_secret);
+//                PopOrderShipmentRequest req = new PopOrderShipmentRequest();
+//                req.setOrderId(Long.parseLong(salesOrder.getSalesOrderId()));
+//                req.setLogiCoprId(salesOrder.getSalesPostFirm());
+//                req.setLogiNo(o.getSalesPostNum());
                 try {
-                    PopOrderShipmentResponse rsp = client.execute(req);
-                    logger.info("京东订单发货回录:code:{}, msg:{}", rsp.getCode(), rsp.getMsg());
+//                    PopOrderShipmentResponse rsp = client.execute(req);
+//                    logger.info("京东订单发货回录:code:{}, msg:{}", rsp.getCode(), rsp.getMsg());
+
+                    Map<String, String> params = new HashMap<>();
+                    params.put("orderId", salesOrder.getSalesOrderId());
+                    params.put("logiCoprId", salesOrder.getSalesPostFirm());
+                    params.put("logiNo", o.getSalesPostNum());
+                    String result = HttpClient431Util.doPost(params, jdOrderDomain + "/jingdong/orderShipment");
+                    if (StringUtil.isNotEmpty(result)) {
+                        OperatorResult operatorResult = com.alibaba.fastjson.JSONObject.parseObject(result, OperatorResult.class);
+                        if (operatorResult.getSuccess()) {
+                            logger.info("京东发货回传请求成功:result=SUCCESS:{}, MSG:{}", operatorResult.getSuccess(), operatorResult.getChineseErrCode());
+                        } else {
+                            logger.info("京东发货回传请求失败:result=SUCCESS:{}, MSG:{}", operatorResult.getSuccess(), operatorResult.getChineseErrCode());
+                        }
+                    } else {
+                        logger.info("京东发货回传请求错误:{}", result);
+                    }
+
                 } catch (JdException e) {
                     throw new RuntimeException(e);
                 } catch (Exception e) {
@@ -2288,6 +2318,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return list.size();
     }
 
+
+
+
     @Override
     public List<SalesOrder> testListSalesOrder() {
         List<SalesOrder> orders = salesOrderMapper.testListSalesOrder();

+ 34 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/JingdongTask.java

@@ -19,9 +19,11 @@ import com.iamberry.rst.service.order.mapper.OrderSyncLogMapper;
 import com.iamberry.rst.service.product.mapper.ProductColorMapper;
 import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.util.GenerateKeyUtil;
+import com.iamberry.rst.util.JingdongConfig;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.jd.open.api.sdk.DefaultJdClient;
 import com.jd.open.api.sdk.JdClient;
+import com.jd.open.api.sdk.JdException;
 import com.jd.open.api.sdk.domain.order.IOrderService.response.getmobilelist.OrderPrivacyModel;
 import com.jd.open.api.sdk.domain.order.IOrderService.response.getmobilelist.ResponseData;
 import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderResult;
@@ -29,12 +31,15 @@ import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.I
 import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.OrderListResult;
 import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.OrderSearchInfo;
 import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.UserInfo;
+import com.jd.open.api.sdk.domain.order.OrderShipmentService.response.shipment.OperatorResult;
 import com.jd.open.api.sdk.request.order.PopOrderEnGetRequest;
 import com.jd.open.api.sdk.request.order.PopOrderEnSearchRequest;
 import com.jd.open.api.sdk.request.order.PopOrderGetmobilelistRequest;
+import com.jd.open.api.sdk.request.order.PopOrderShipmentRequest;
 import com.jd.open.api.sdk.response.order.PopOrderEnGetResponse;
 import com.jd.open.api.sdk.response.order.PopOrderEnSearchResponse;
 import com.jd.open.api.sdk.response.order.PopOrderGetmobilelistResponse;
+import com.jd.open.api.sdk.response.order.PopOrderShipmentResponse;
 import com.taobao.api.internal.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -269,6 +274,35 @@ public class JingdongTask {
     }
 
 
+    /**
+     * 京东发货
+     * @param orderId
+     * @param logiCoprId
+     * @param logiNo
+     */
+    public OperatorResult orderShipment(String orderId, String logiCoprId, String logiNo){
+        SysConfig sysConfigAll = sysConfigService.getSysConfigAll(27);
+        JdClient client = new DefaultJdClient(JingdongConfig.JINGDONG_API_URL, sysConfigAll.getConfigParameter(), JingdongConfig.jd_appkey, JingdongConfig.jd_secret);
+        PopOrderShipmentRequest req = new PopOrderShipmentRequest();
+        req.setOrderId(Long.parseLong(orderId));
+        req.setLogiCoprId(logiCoprId);
+        req.setLogiNo(logiNo);
+        try {
+            PopOrderShipmentResponse rsp = client.execute(req);
+            logger.info("京东订单发货回录:code:{}, msg:{}", rsp.getCode(), rsp.getMsg());
+            if ("0".equals(rsp.getCode())) {
+                OperatorResult sopjosshipmentResult = rsp.getSopjosshipmentResult();
+                return sopjosshipmentResult;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            //京东发货异常
+            logger.error("京东发货接口异常:{}", e);
+        }
+        return null;
+    }
+
+
     public OrderPrivacyModel getMobile(String orderId) {
         try {
             Thread.sleep(1000);

+ 36 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminJingdongAuthController.java

@@ -3,6 +3,7 @@ package com.iamberry.rst.controllers.order;
 import com.alibaba.fastjson.JSONObject;
 import com.iamberry.app.tool.util.HttpUtility;
 //import com.iamberry.redis.RedisUtils;
+import com.iamberry.rst.controllers.mq.JingdongTask;
 import com.iamberry.rst.controllers.mq.TaobaoConfig;
 import com.iamberry.rst.core.sys.SysConfig;
 import com.iamberry.rst.faces.sys.SysConfigService;
@@ -11,6 +12,8 @@ import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.payUtil.StringUtil;
 import com.iamberry.zk.SpringContextHolder;
 import com.jd.open.api.sdk.DefaultJdClient;
+import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo;
+import com.jd.open.api.sdk.domain.order.OrderShipmentService.response.shipment.OperatorResult;
 import com.jd.open.api.sdk.internal.util.HttpUtil;
 import com.taobao.api.ApiException;
 import com.taobao.api.DefaultTaobaoClient;
@@ -42,6 +45,9 @@ public class AdminJingdongAuthController {
     @Autowired
     private SysConfigService sysConfigService;
 
+    @Autowired
+    private JingdongTask jingdongTask;
+
     public static final Map<String, String> HREF_CACHE = new ConcurrentHashMap<>(10);
 
 //    @RequestMapping("/tokenPage")
@@ -164,4 +170,34 @@ public class AdminJingdongAuthController {
         return new ModelAndView("redirect:" + url);
     }
 
+
+    /**
+     * 京东订单详情
+     * @param orderId
+     * @return
+     */
+    @RequestMapping("/orderEnGet")
+    @ResponseBody
+    public OrderSearchInfo orderEnGet(@RequestParam("orderId") String orderId) {
+        OrderSearchInfo orderDetails = jingdongTask.getOrderDetails(Long.parseLong(orderId));
+        return orderDetails;
+    }
+
+    /**
+     * 京东发货
+     * @param orderId
+     * @param logiCoprId
+     * @param logiNo
+     */
+    @RequestMapping(value = "/orderShipment")
+    @ResponseBody
+    public OperatorResult orderShipment(@RequestParam("orderId") String orderId, @RequestParam("logiCoprId") String logiCoprId, @RequestParam("logiNo") String logiNo) {
+        OperatorResult operatorResult = jingdongTask.orderShipment(orderId, logiCoprId, logiNo);
+        return operatorResult;
+    }
+
+
+
+
+
 }

+ 23 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -32,6 +32,7 @@ import com.iamberry.rst.utils.OrderUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.*;
 import com.iamberry.wechat.tools.payUtil.DatetimeUtil;
+import com.iamberry.wechat.tools.payUtil.StringUtil;
 import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo;
 import com.lowagie.text.html.HtmlParser;
 import com.taobao.api.ApiException;
@@ -51,6 +52,7 @@ import org.jsoup.select.Elements;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -115,6 +117,9 @@ public class AwaitSendController {
     @Autowired
     private SalesOrderMapper salesOrderMapper ;
 
+    @Value("${jingdong.order.domain}")
+    private String jdOrderDomain;
+
     private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
 
 
@@ -308,7 +313,24 @@ public class AwaitSendController {
                 } else if (temp.getSalesBatchId().startsWith("JT")) {
                     LOGGER.info("京东订单需要校验订单状态{}", temp.getSalesOrderId());
                     String id = temp.getSalesExOrderId();
-                    OrderSearchInfo details = jingdongTask.getOrderDetails(Long.parseLong(id));
+
+                    Map<String, String> params = new HashMap<>();
+                    params.put("orderId", id);
+                    String result = null;
+                    OrderSearchInfo details = null;
+                    try {
+                        result = HttpClient431Util.doPost(params, jdOrderDomain + "/jingdong/orderEnGet");
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                    if (StringUtil.isNotEmpty(result)) {
+                        details = com.alibaba.fastjson.JSONObject.parseObject(result, OrderSearchInfo.class);
+                        LOGGER.info("请求京东详情成功,结果:{}", result);
+                    } else {
+                        LOGGER.info("请求京东详情失败,结果:{}", result);
+                    }
+
+
                     LOGGER.info("获取到的京东订单数据:{}", JSONObject.toJSONString(details));
                     int stats = 0;
                     if (details == null) {

+ 4 - 1
watero-rst-web/src/main/resources/dev-jdbc.properties

@@ -13,4 +13,7 @@ jdbc.password=RST_test
 jdbc.pool.init=1
 jdbc.pool.minIdle=3
 jdbc.pool.maxActive=20
-jdbc.testSql=SELECT 1
+jdbc.testSql=SELECT 1
+
+# ????????Domain
+jingdong.order.domain=http://114.67.222.230/8088