Bladeren bron

京东订单详情接口调用,收货人号码翻译

liurui 1 jaar geleden
bovenliggende
commit
0ee497b87e

+ 1 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -24,7 +24,7 @@ public interface SalesOrderService {
      */
     Integer addSalesOrder(SalesOrder salesOrder);
 
-    int addOrder(SalesOrder salesOrder);
+    int addOrder(SalesOrder salesOrder, String desr);
 
     /**
      * 添加订单信息

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

@@ -130,7 +130,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
 
     @Override
     @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
-    public int addOrder(SalesOrder salesOrder) {
+    public int addOrder(SalesOrder salesOrder, String desr) {
 
         // 2019年12月27日15:49:16新增快递策略 分配物流方式
         List<SalesOrder> listS = new ArrayList<>();
@@ -148,7 +148,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             //默认用户爱贝源自动拉取订单
             orderTracking.setAdminId(10135);
             orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
-            orderTracking.setTrackingDesc("创建订单(淘宝拉取订单)");
+            orderTracking.setTrackingDesc(desr);
             salesOrderService.addTracking(orderTracking);
         } catch (DuplicateKeyException e) {
             // 修改

+ 101 - 7
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/JingdongTask.java

@@ -22,12 +22,19 @@ import com.iamberry.rst.util.GenerateKeyUtil;
 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.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;
 import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.ItemInfo;
 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.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.response.order.PopOrderEnGetResponse;
 import com.jd.open.api.sdk.response.order.PopOrderEnSearchResponse;
+import com.jd.open.api.sdk.response.order.PopOrderGetmobilelistResponse;
 import com.taobao.api.internal.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,10 +44,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.StringJoiner;
+import java.util.*;
 
 /**
  * @author root
@@ -97,6 +101,7 @@ public class JingdongTask {
         }
         // 结束时间
         String endTime = DateTimeUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
+        logger.info("开始时间:{}, 结束时间:{}", startTime, endTime);
 
         // 批次号
         String batchIdST = generateKeyUtil.getSalesBatchIdJD();
@@ -179,7 +184,7 @@ public class JingdongTask {
                     SalesOrder salesOrder = packageOrder(orderSearchInfo);
                     if (salesOrder != null) {
                         salesOrder.setSalesBatchId(batchIdST);
-                        salesOrderService.addOrder(salesOrder);
+                        salesOrderService.addOrder(salesOrder, "创建订单(京东拉取订单)");
                         total ++;
                     }
                 }
@@ -220,6 +225,90 @@ public class JingdongTask {
     }
 
 
+    public com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo getOrderDetails(Long tid) {
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            JdClient client = null;
+            PopOrderEnGetRequest request = null;
+            PopOrderEnGetResponse rsp = null;
+
+
+            SysConfig sysConfig = sysConfigService.getSysConfigAll(27);
+            client = new DefaultJdClient(TaobaoConfig.JINGDONG_API_URL, (String) AdminJingdongAuthController.getToken(sysConfig).get("token"), TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
+            request=new PopOrderEnGetRequest();
+            request.setOrderId(tid);
+            request.setOptionalFields("orderId,venderId,orderType,payType,orderTotalPrice,orderSellerPrice,orderPayment,freightPrice,sellerDiscount,orderState,orderStateRemark,deliveryType," +
+                    "invoiceEasyInfo," +
+                    "invoiceCode,invoiceInfo,invoiceCode,orderRemark,orderStartTime,orderEndTime," +
+                    "consigneeInfo," +
+                    "itemInfoList," +
+                    "couponDetailList," +
+                    "venderRemark,balanceUsed,pin,returnOrder,paymentConfirmTime,waybill,logisticsId," +
+                    "vatInfo," +
+                    "modified,directParentOrderId,parentOrderId,customs,customsModel,orderSource,storeOrder,idSopShipmenttype,scDT,serviceFee," +
+                    "pauseBizInfo," +
+                    "taxFee,tuiHuoWuYou,orderSign,storeId,realPin,orderMarkDesc,open_id,xid,open_id_buyer,xid_buyer");
+            rsp = client.execute(request);
+            String code = rsp.getCode();
+            logger.info("查询京东订单详情返回信息:code:{}, msg:{}", rsp.getCode(), rsp.getMsg());
+            if ("0".equals(code)) {
+                OrderResult orderDetailInfo = rsp.getOrderDetailInfo();
+                com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo orderInfo = orderDetailInfo.getOrderInfo();
+                return orderInfo;
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    public OrderPrivacyModel getMobile(String orderId) {
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            JdClient client = null;
+            PopOrderGetmobilelistRequest request = null;
+            PopOrderGetmobilelistResponse rsp = null;
+
+
+            SysConfig sysConfig = sysConfigService.getSysConfigAll(27);
+            client = new DefaultJdClient(TaobaoConfig.JINGDONG_API_URL, (String) AdminJingdongAuthController.getToken(sysConfig).get("token"), TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
+            request = new PopOrderGetmobilelistRequest();
+            request.setAppName("爱贝源官方旗航店");
+//            request.setRegion("https://jd.com");
+            request.setOrderId(orderId);
+            request.setExpiration(30);
+            request.setOrderType("POP");
+            rsp = client.execute(request);
+            if ("0".equals(rsp.getCode())) {
+                ResponseData result = rsp.getResult();
+                logger.info("result code:{}, message:{}", result.getCode(), result.getMessage());
+                if ("200".equals(result.getCode() + "")) {
+                    logger.info("查询京东订单收货人电话:data.code: {}, data.message:{}", result.getCode(), result.getMessage());
+                    Map<String, OrderPrivacyModel> data = result.getData();
+                    OrderPrivacyModel orderPrivacyModel = data.get(orderId);
+                    return orderPrivacyModel;
+                }
+            }
+            logger.info("查询京东订单收货人手机号返回错误信息:{}", rsp.getMsg());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
     /**
      * 数据还需要完善地址库编码、成本价格
      * @param trade
@@ -227,6 +316,7 @@ public class JingdongTask {
      */
     private SalesOrder packageOrder(OrderSearchInfo trade) {
         String tid = trade.getOrderId();
+
         SalesOrder order = new SalesOrder();
         order.setSalesOrderId(tid);
         order.setSalesDealCode(tid);
@@ -234,9 +324,12 @@ public class JingdongTask {
         order.setSalesDiscountMoney(changeY2F(StringUtils.isEmpty(trade.getSellerDiscount()) ? "0" : trade.getSellerDiscount()));
         order.setSalesDeliver(1);
 
+        //获取收货人手机号
+        OrderPrivacyModel orderPrivacyModel = getMobile(trade.getOrderId());
+
         //收货人信息
         UserInfo consigneeInfo = trade.getConsigneeInfo();
-        order.setSalesOpenId(consigneeInfo.getMobile());
+        order.setSalesOpenId(orderPrivacyModel == null ? consigneeInfo.getMobile() : orderPrivacyModel.getConsMobilePhone());
         order.setSalesPledgeMoney(0);
         order.setSalesRemainDeposit(0);
         order.setSalesOrderStatus(1);
@@ -272,7 +365,7 @@ public class JingdongTask {
         //京东不返回邮编
         order.setSalesAddressPostcode("000000");
         order.setSalesAddressName(consigneeInfo.getFullname());
-        order.setSalesAddressTel(consigneeInfo.getMobile());
+        order.setSalesAddressTel(orderPrivacyModel == null ? consigneeInfo.getMobile() : orderPrivacyModel.getConsMobilePhone());
         order.setSalesAmount(changeY2F(trade.getOrderTotalPrice()));
         order.setSalesPayMoney(changeY2F(trade.getOrderPayment()));
         order.setSalesPayType(5);
@@ -293,6 +386,7 @@ public class JingdongTask {
         order.setSalesExOrderId(trade.getOrderId());
         order.setSalesErrorState(1);
         order.setSalesQuality(1);
+        order.setSalesPostFirm("jd");
         order.setSalesOrderItemList(new ArrayList<>(trade.getItemInfoList().size()));
         // 订单项
         int warranty = 0;

+ 1 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/TaobaoTask.java

@@ -143,7 +143,7 @@ public class TaobaoTask {
                     SalesOrder salesOrder = packageOrder(details);
                     if (salesOrder != null) {
                         salesOrder.setSalesBatchId(batchIdST);
-                        salesOrderService.addOrder(salesOrder);
+                        salesOrderService.addOrder(salesOrder, "创建订单(淘宝拉取订单)");
                         total ++;
                     }
                 }

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

@@ -3,6 +3,7 @@ package com.iamberry.rst.controllers.order;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.iamberry.redis.RedisUtils;
+import com.iamberry.rst.controllers.mq.JingdongTask;
 import com.iamberry.rst.controllers.mq.TaobaoConfig;
 import com.iamberry.rst.controllers.mq.TaobaoTask;
 import com.iamberry.rst.core.cm.SalesOrder;
@@ -31,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.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo;
 import com.lowagie.text.html.HtmlParser;
 import com.taobao.api.ApiException;
 import com.taobao.api.DefaultTaobaoClient;
@@ -107,6 +109,9 @@ public class AwaitSendController {
     private ComplaintDetectInfoService complaintDetectInfoService;
     @Autowired
     private TaobaoTask taobaoTask;
+
+    @Autowired
+    private JingdongTask jingdongTask;
     @Autowired
     private SalesOrderMapper salesOrderMapper ;
 
@@ -300,8 +305,51 @@ public class AwaitSendController {
                     } else {
                         salesOrderList.add(temp);
                     }
+                } else if (temp.getSalesBatchId().startsWith("JT")) {
+                    LOGGER.info("京东订单需要校验订单状态{}", temp.getSalesOrderId());
+                    String id = temp.getSalesExOrderId();
+                    OrderSearchInfo details = jingdongTask.getOrderDetails(Long.parseLong(id));
+                    LOGGER.info("获取到的京东订单数据:{}", JSONObject.toJSONString(details));
+                    int stats = 0;
+                    if (details == null) {
+                        LOGGER.info("未在京东找到该订单:{}", id);
+                        stats++;
+                    } else {
+                        if (!"WAIT_SELLER_STOCK_OUT".equals(details.getOrderState()) && !"WAIT_SELLER_DELIVERY".equals(details.getOrderState())) {//订单已出库/(海外)订单待发货
+                            LOGGER.info("京东订单已在京东平台出库:{}", id);
+                            stats++;
+                        }
+                    }
+
+                    LOGGER.info("当前不能打单数两:{}", stats);
+                    if (stats != 0) {
+                        for (SalesOrderItem item : temp.getSalesOrderItemList()) {
+                            //修改订单项售后状态跟随小亚通平台
+                            SalesOrderItem newSalesOrderItem = new SalesOrderItem();
+                            newSalesOrderItem.setItemId(item.getItemId());
+                            newSalesOrderItem.setItemWarrantyStatus(1);
+                            salesOrderMapper.updateOrderItemObj(newSalesOrderItem);
+                        }
+                        SalesOrder sonOrder = new SalesOrder();
+                        sonOrder.setSalesId(temp.getSalesId());
+                        sonOrder.setSalesShippingStatus(0);
+                        // 确认状态  0(未确认)1(确认)2(挂起)3(作废)
+                        sonOrder.setSalesStatus(0);
+                        // 无法判断退款
+//                        sonOrder.setSalesWarrantyStatus(1);
+                        if(salesOrderService.update(sonOrder) > 0){
+                            //添加操作跟踪信息
+                            OrderTracking orderTracking = new OrderTracking();
+                            orderTracking.setAdminId(1);
+                            orderTracking.setSalesDealCode(temp.getSalesDealCode());
+                            orderTracking.setTrackingDesc("发货检测第三方订单状态异常,退回未确认状态");
+                            salesOrderService.addTracking(orderTracking);
+                        }
+                    } else {
+                        salesOrderList.add(temp);
+                    }
                 } else {
-                    // 非淘宝订单
+                    // 非淘宝订单 & 非淘宝订单
                     if(temp.getSalesProcessRefund() != 1){
                         boolean isShip = orderSyncLogService.syncXYTOrderShipInspec(temp.getSalesId());
                         if(isShip){