Quellcode durchsuchen

拉取淘宝订单完成。

xian vor 3 Jahren
Ursprung
Commit
1c09d60938

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

@@ -33,7 +33,13 @@ import com.iamberry.rst.service.order.mapper.ProvincesLogisticsMapper;
 import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
 import com.iamberry.rst.util.PageUtil;
+import com.iamberry.rst.util.TaobaoConfig;
 import com.iamberry.wechat.tools.DateTimeUtil;
+import com.taobao.api.ApiException;
+import com.taobao.api.DefaultTaobaoClient;
+import com.taobao.api.TaobaoClient;
+import com.taobao.api.request.AlibabaAscpLogisticsOfflineSendRequest;
+import com.taobao.api.response.AlibabaAscpLogisticsOfflineSendResponse;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.slf4j.Logger;
@@ -2212,6 +2218,36 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             if (!orderSyncLogService.syncXYTOrderShip(new Integer[]{o.getSalesId()})) {
                 throw new RuntimeException("订单" + o.getSalesId() + "向小亚通发货失败,请查询订单状态");
             }
+            SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(o.getSalesId());
+            if (salesOrder.getSalesBatchId().startsWith("ST")) {
+                // 淘宝订单发货
+                List<SalesOrderItem>  salesOrderItemList = salesOrderService.getOrderItemListBySalesId(o.getSalesId());
+                String oid = "";
+                int size = salesOrderItemList.size() - 1;
+                for (int i = 0; i < salesOrderItemList.size(); i++) {
+                    oid += salesOrderItemList.get(i).getItemOtherId();
+                    if (i != (size)) {
+                        oid += ",";
+                    }
+                }
+                TaobaoClient client = new DefaultTaobaoClient(TaobaoConfig.TAOBAO_URL, TaobaoConfig.appkey, TaobaoConfig.secret);
+                AlibabaAscpLogisticsOfflineSendRequest req = new AlibabaAscpLogisticsOfflineSendRequest();
+                req.setTid(salesOrder.getSalesOrderId());
+                req.setSubTid(oid);
+                List<AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest> list2 = new ArrayList<AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest>();
+                AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest obj3 = new AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest();
+                list2.add(obj3);
+                obj3.setOutSid(o.getSalesPostNum());
+                obj3.setCompanyCode(salesOrder.getSalesPostFirm());
+                req.setConsignPkgs(list2);
+                try {
+                    AlibabaAscpLogisticsOfflineSendResponse rsp = client.execute(req, (String) TaobaoConfig.getToken().get("token"));
+                    logger.info("", rsp.getBody());
+                } catch (ApiException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
             // 添加订单追踪信息
             OrderTracking orderTracking = new OrderTracking();
             orderTracking.setAdminId(currAdmin);

+ 37 - 0
watero-rst-service/src/main/java/com/iamberry/rst/util/TaobaoConfig.java

@@ -0,0 +1,37 @@
+package com.iamberry.rst.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.iamberry.redis.RedisUtils;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class TaobaoConfig {
+
+    public static final String TAOBAO_URL = "https://eco.taobao.com/router/rest";
+
+    public static final String appkey = "33060815";
+
+    public static final String secret = "16e44445788f75485fd03e6b333e8484";
+
+
+    public static Map<String, Object> getToken() {
+        String taobaoSession = RedisUtils.get("TAOBAO_SESSION");
+        // 判断数据
+        if (taobaoSession == null) {
+            return null;
+        }
+        JSONObject obj = JSONObject.parseObject(taobaoSession);
+        // 校验时间
+        Date time = obj.getDate("time");
+        if (time.getTime() <= System.currentTimeMillis()) {
+            return null;
+        }
+        // 组装
+        Map<String, Object> res = new HashMap<>();
+        res.put("token", obj.getString("token"));
+        res.put("time", obj.getDate("time"));
+        return res;
+    }
+}

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

@@ -78,7 +78,7 @@ public class TaobaoTask {
     }
 
     //每30分钟执行一次
-    @Scheduled(fixedDelay = 1000 * 60 * 30, initialDelay = 3000)
+    @Scheduled(fixedDelay = 1000 * 60 * 10, initialDelay = 3000)
     public void syncOrder() {
         if (!isDebug) {
             logger.info("【淘宝订单】debug模式,无法运行正式任务");
@@ -183,6 +183,7 @@ public class TaobaoTask {
         TradeFullinfoGetResponse rsp = null;
         try {
             rsp = detailsClient.execute(req, (String) AdminTaobaoAuthController.getToken().get("token"));
+            logger.info("淘宝数据:{}", JSONObject.toJSONString(rsp));
             JSONObject body = JSONObject.parseObject(rsp.getBody());
             JSONObject resp = body.getJSONObject("trade_fullinfo_get_response");
             JSONObject trade = resp.getJSONObject("trade");

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

@@ -237,7 +237,7 @@ public class AwaitSendController {
                 // 校验淘宝订单
                 if (temp.getSalesBatchId().startsWith("ST")) {
                     LOGGER.info("淘宝订单需要校验订单状态{}", temp.getSalesOrderId());
-                    Trade details = taobaoTask.getOrderDetails(Long.getLong(temp.getSalesOrderId()));
+                    Trade details = taobaoTask.getOrderDetails(Long.parseLong(temp.getSalesOrderId()));
                     LOGGER.info("获取到的淘宝订单数据:{}", JSONObject.toJSONString(details));
                     int stats = 0;
                     for (Order order : details.getOrders()) {

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_detail.ftl

@@ -78,7 +78,7 @@
             <thead>
             <tr>
                 <th width="10">订单编号:</th>
-                <td width="10" style="font-weight: normal;"><span>${order.salesOrderId!'暂无订单编号'}</span></td>
+                <td width="10" style="font-weight: normal;"><span>${(order.salesOrderId)!'暂无订单编号'}</span></td>
                 <td width="10"></td>
                 <th width="10">交易号:</th>
                 <td width="10" style="font-weight: normal;"><span>${order.salesDealCode!''}</span></td>

+ 27 - 2
watero-rst-web/src/test/java/junit/com/iamberry/rst/Test.java

@@ -7,6 +7,7 @@ import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.order.OrderSyncLogService;
 import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
 import com.iamberry.rst.service.order.OrderSyncLogServiceImpl;
+import com.iamberry.rst.utils.ExcelUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,8 +25,8 @@ import java.util.concurrent.atomic.AtomicInteger;
  * @website www.iamberry.com
  */
 
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations="classpath:watero-rst-ioc.xml")
+//@RunWith(SpringJUnit4ClassRunner.class)
+//@ContextConfiguration(locations="classpath:watero-rst-ioc.xml")
 public class Test {
 
     @Autowired
@@ -40,6 +41,30 @@ public class Test {
     @Autowired
     private OrderSyncLogService orderSyncLogService;
 
+//    @org.junit.Test
+    public void countOrder() {
+        List<SalesOrder> orders = salesOrderService.testListSalesOrder();
+        int totalCost = 0;
+        for (SalesOrder order : orders) {
+            // 查询赠品(同一个用户10天内购买其他产品的,均算赠品,并计算赠品成本和邮费)
+            order.setStartDate(DateTimeUtil.addDay(order.getSalesCreateTime(), 10));
+            List<SalesOrder> others = salesOrderService.testListOther(order);
+            if (others == null || others.isEmpty()) {
+                continue;
+            }
+            for (SalesOrder other : others) {
+                if (order.getSalesId() == other.getSalesId().intValue()) {
+                    continue;
+                }
+                totalCost = totalCost + (other.getSalesPostageCost() == null ? 0 : other.getSalesPostageCost());
+                for (SalesOrderItem item : other.getSalesOrderItemList()) {
+                    totalCost = totalCost + (item.getItemCostTotal() == null ? 0 : item.getItemCostTotal());
+                }
+            }
+        }
+        System.out.println("共计:" + orders.size() + "个订单,赠品费用:" + totalCost + "。");
+    }
+
     @org.junit.Test
     public void testXYTOrder() {
         //orderSyncLogService.syncXYTOrderShipInspec(222416);