Bläddra i källkod

京东订单同步明细

yzc 1 år sedan
förälder
incheckning
65ba91e344

+ 23 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java

@@ -59,4 +59,27 @@ public class JdOrderDetails extends BasePo {
      */
     private BigDecimal quantityDelivered;
 
+
+    //----------------------京东订单明细字段开始--------------------------------------
+    private Long orderId;
+    private Long wareId;
+    private Integer deliverCenterId;
+    private String deliverCenterName;
+    private String wareName;
+    private BigDecimal purchasePrice;
+    private Integer originalNum;
+    private Integer confirmNum;
+    private Integer actualNum;
+    private String nonDeliveryReason;
+    private Integer backExplanationType;
+    private BigDecimal totoalPrice;
+    private String isbn;
+    private BigDecimal makePrice;
+    private BigDecimal currentMakePrice;
+    private BigDecimal discount;
+    private Integer storeId;
+    private String storeName;
+    private String wareProperty;//目前是json考虑新表
+    //----------------------京东订单明细字段结束--------------------------------------
+
 }

+ 55 - 16
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -2,12 +2,18 @@ package com.fjhx.victoriatourist.service.jd.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.service.jd.JdApiService;
+import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
 import com.jd.open.api.sdk.DefaultJdClient;
 import com.jd.open.api.sdk.JdClient;
+import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getdetailbyorderid.JOSDetailResultDto;
+import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getdetailbyorderid.PurchaseAllocationDetailDto;
 import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getpurchaseorderlist.JOSOrderResultDto;
 import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getpurchaseorderlist.PurchaseOrderDto;
 import com.jd.open.api.sdk.request.supplier.VcGetdetailbyorderidRequest;
@@ -48,6 +54,8 @@ public class JdApiServiceImpl implements JdApiService {
 
     @Autowired
     private JdOrderService jdOrderService;
+    @Autowired
+    private JdOrderDetailsService jdOrderDetailsService;
 
     /**
      * 获取AccessToken
@@ -104,12 +112,15 @@ public class JdApiServiceImpl implements JdApiService {
         }
     }
 
-//    @PostConstruct//项目启动时运行一次
-//    @Scheduled(cron = "0 0/1 *  * * ? ")// 每1分钟执行一次
+    @DSTransactional
+        //项目启动时运行一次
+//    @PostConstruct
+        // 每1分钟执行一次
+//    @Scheduled(cron = "0 0/1 *  * * ? ")
     void orderSync() throws Exception {
+        String tenantId = "prod".equals(SpringUtil.getActiveProfile()) ? "wdly" : "wdlytest";
 
-//        JSONObject jdTokenJson = JSONObject.parseObject(ConfigUtil.get("jd_token_json"));
-        JSONObject jdTokenJson = JSONObject.parseObject("{\"access_token\":\"eaea297f24944a1e9f88de4ef9f67605lyti\",\"expires_in\":86399,\"refresh_token\":\"d42c559aed09415aacd32df4c5712711yyzu\",\"scope\":\"snsapi_base\",\"open_id\":\"CqJo6jtBlMczlbw1LWVshD1Re_qBaw6BLQSYQWPPNKs\",\"uid\":\"0063800318\",\"time\":1699422692835,\"token_type\":\"bearer\",\"code\":0,\"xid\":\"o*AAQrc1AbQq2SNpnAmdEFbwM-ZGU3ZUdz2_M6Wu3p3d_-3U273S4pUQYjFXGrDJzp3YTAVN4R\"}");
+        JSONObject jdTokenJson = JSONObject.parseObject(ConfigUtil.get("jd_token_json"));
         if (ObjectUtil.isEmpty(jdTokenJson)) {
             log.error("京东token详细为空请检查");
             return;
@@ -158,13 +169,33 @@ public class JdApiServiceImpl implements JdApiService {
         //转为系统自己的实体类
         List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderListFilter, JdOrder.class);
         //赋值租户id
-//        jdOrderList.forEach(item->item.setTenantId("wdly"));
+        jdOrderList.forEach(item -> item.setTenantId(tenantId));
         //将数据存储到库
         TenantHolder.setIgnore(true);//忽略租户
         jdOrderService.saveBatch(jdOrderList);
         TenantHolder.clear();
 
         //获取明细
+        List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
+        for (JdOrder jdOrder : jdOrderList) {
+            VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
+            request.setOrderId(jdOrder.getOrderId());
+            request.setIsPage(false);
+            VcGetdetailbyorderidResponse response = client.execute(request);
+
+            JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
+            List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
+
+            List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
+            jdOrderDetails.forEach(item -> item.setJdOrderId(jdOrder.getId()));
+
+            jdOrderDetailsList.addAll(jdOrderDetails);
+        }
+        //赋值租户id
+        jdOrderList.forEach(item -> item.setTenantId(tenantId));
+        TenantHolder.setIgnore(true);//忽略租户
+        jdOrderDetailsService.saveBatch(jdOrderDetailsList);
+        TenantHolder.clear();
     }
 
     /**
@@ -193,20 +224,28 @@ public class JdApiServiceImpl implements JdApiService {
         return JSONObject.parseObject(responseStr);
     }
 
-
     public static void main(String[] args) throws Exception {
-        JSONObject jdTokenJson = JSONObject.parseObject("{\"access_token\":\"eaea297f24944a1e9f88de4ef9f67605lyti\",\"expires_in\":86399,\"refresh_token\":\"d42c559aed09415aacd32df4c5712711yyzu\",\"scope\":\"snsapi_base\",\"open_id\":\"CqJo6jtBlMczlbw1LWVshD1Re_qBaw6BLQSYQWPPNKs\",\"uid\":\"0063800318\",\"time\":1699422692835,\"token_type\":\"bearer\",\"code\":0,\"xid\":\"o*AAQrc1AbQq2SNpnAmdEFbwM-ZGU3ZUdz2_M6Wu3p3d_-3U273S4pUQYjFXGrDJzp3YTAVN4R\"}");
-        if (ObjectUtil.isEmpty(jdTokenJson)) {
-            log.error("京东token详细为空请检查");
-            return;
+        JdClient client = new DefaultJdClient("http://api.jd.com/routerjson", "a1f79f4670fd43a28fa2de02abd86f03ytfm", appKey, appSecret);
+
+
+        {
+            VcGetpurchaseorderlistRequest request = new VcGetpurchaseorderlistRequest();
+            request.setCreatedDateStart(sdf.parse("2023-11-01 00:00:00"));
+            request.setCreatedDateEnd(new Date());
+            request.setPageIndex(1);
+            request.setPageSize(10);
+            VcGetpurchaseorderlistResponse response = client.execute(request);
+            System.out.println(JSONObject.toJSONString(response));
         }
 
-        JdClient client = new DefaultJdClient("http://api.jd.com/routerjson", jdTokenJson.getString("access_token"), appKey, appSecret);
 
-        VcGetdetailbyorderidRequest request=new VcGetdetailbyorderidRequest();
-        request.setOrderId(1526033586L);
-        request.setIsPage(false);
-        VcGetdetailbyorderidResponse response=client.execute(request);
-        System.out.println(JSONObject.toJSONString(response.getJosDetailResultDto()));
+        {
+            VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
+            request.setOrderId(1490391996L);
+            request.setIsPage(false);
+            VcGetdetailbyorderidResponse response = client.execute(request);
+            System.out.println(JSONObject.toJSONString(response));
+        }
+
     }
 }