From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java |  365 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 270 insertions(+), 95 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java b/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java
index 5d1eb3e..11697e8 100644
--- a/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java
+++ b/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java
@@ -1,95 +1,270 @@
-package com.yeshi.fanli.job.order.jd;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import com.yeshi.fanli.dto.jd.JDOrderResult;
-import com.yeshi.fanli.entity.jd.JDOrder;
-import com.yeshi.fanli.exception.jd.JDOrderException;
-import com.yeshi.fanli.service.inter.jd.JDOrderService;
-import com.yeshi.fanli.util.RedisManager;
-import com.yeshi.fanli.util.cmq.JDOrderCMQManager;
-import com.yeshi.fanli.util.jd.JDApiUtil;
-
-//浠庢窐瀹濈埇鍘昏鍗曟洿鏂�
-@Component
-public class UpdateJDOrderJob {
-
-	@Resource
-	private JDOrderService jdOrderService;
-
-	@Resource
-	private RedisManager redisManager;
-
-	/**
-	 * 淇濆瓨璁㈠崟
-	 * 
-	 * @param jdOrderList
-	 */
-	public void saveJDOrders(List<JDOrder> jdOrderList) {
-		for (JDOrder order : jdOrderList) {
-			if (order.getValidCode() == 15)// 杩囨护鎺変唬浠樻鐘舵��
-				continue;
-			try {
-				jdOrderService.addJDOrder(order);
-				/**
-				 * 鍋氶鐜囬檺鍒�
-				 */
-				String key = "jd-order-" + order.getOrderId();
-				String result = redisManager.getCommonString(key);
-
-				JDOrderCMQManager.getInstance().addJDOrder(order.getOrderId() + "");
-				redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2灏忔椂鍐呬笉鍐嶆洿鏂�
-			} catch (JDOrderException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	/**
-	 * 蹇�熻鍗曟洿鏂帮紙鐖彇鏈皬鏃跺唴鐨勫崟,姣忓垎閽熶竴娆★級
-	 */
-	@Scheduled(cron = "0 0/1 * * * ? ")
-	public void updateSoonOrder() {
-		// if (!Constant.IS_TASK)
-		// return;
-		long now = System.currentTimeMillis();
-
-		JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME);
-		if (result != null && result.getOrderList() != null)
-			saveJDOrders(result.getOrderList());
-		// 鏌ヨ涓婁釜灏忔椂鐨�
-		result = JDApiUtil.getOrderList(1, 200, new Date(now - 1000 * 60 * 60 * 24L), JDApiUtil.ORDER_TYPE_CREATETIME);
-		if (result != null && result.getOrderList() != null)
-			saveJDOrders(result.getOrderList());
-	}
-
-	/**
-	 * 鐖彇鏈�杩戜竴灏忔椂鍐呯殑鐘舵�佹洿鏂颁簡鐨勫崟(10鍒嗛挓涓�娆�)
-	 */
-	@Scheduled(cron = "0 0/10 * * * ? ")
-	public void updateUpdateOrder() {
-		// if (!Constant.IS_TASK)
-		// return;
-		List<JDOrder> jdOrderList = new ArrayList<>();
-		int pageSize = 200;
-		int page = 1;
-		JDOrderResult result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
-		if (result != null) {
-			jdOrderList.addAll(result.getOrderList());
-			while (result != null && result.isHasMore()) {
-				result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
-				if (result != null)
-					jdOrderList.addAll(result.getOrderList());
-			}
-		}
-		saveJDOrders(jdOrderList);
-	}
-
-}
+package com.yeshi.fanli.job.order.jd;
+
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.yeshi.fanli.dao.jd.JDOrderBackUpDao;
+import com.yeshi.fanli.dto.jd.JDOrderForBackUpResult;
+import com.yeshi.fanli.dto.jd.JDOrderResult;
+import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg;
+import com.yeshi.fanli.entity.jd.JDBackUpOrder;
+import com.yeshi.fanli.entity.jd.JDOrder;
+import com.yeshi.fanli.entity.order.CommonOrder;
+import com.yeshi.fanli.exception.jd.JDOrderException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.order.CommonOrderService;
+import com.yeshi.fanli.service.inter.order.jd.JDOrderService;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.RedisKeyEnum;
+import com.yeshi.fanli.util.RedisManager;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.annotation.JobMonitor;
+import com.yeshi.fanli.util.jd.JDApiUtil;
+import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager;
+import org.springframework.stereotype.Component;
+import org.yeshi.utils.TimeUtil;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+//浠庢窐瀹濈埇鍘昏鍗曟洿鏂�
+@Component
+public class UpdateJDOrderJob {
+
+    @Resource
+    private JDOrderService jdOrderService;
+
+    @Resource
+    private RedisManager redisManager;
+
+    @Resource
+    private JDOrderBackUpDao jdOrderBackUpDao;
+
+    @Resource
+    private CommonOrderService commonOrderService;
+
+    @Resource
+    private OrdersCMQManager ordersCMQManager;
+
+
+    /**
+     * 淇濆瓨璁㈠崟
+     *
+     * @param jdOrderList
+     */
+    public void saveJDOrders(List<JDOrder> jdOrderList) {
+        //5鍒嗛挓涓嶆洿鏂板氨鎶ヨ
+        try {
+            redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_JD, "1", 60 * 5);
+        } catch (Exception e) {
+        }
+
+        for (JDOrder order : jdOrderList) {
+            LogHelper.orderInfo("浜笢璁㈠崟:" + order.getOrderId() + "-" + order.getValidCode());
+            if (order.getValidCode() == 15)// 杩囨护鎺夊緟浠樻
+                continue;
+
+            // 闃叉澶氫釜鍟嗗搧鎷嗗崟闂锛岀埇鍙�
+            if (order.getOrderItemList().size() > 1
+                    && order.getOrderTime() > System.currentTimeMillis() - 1000 * 60 * 3L) {
+                continue;
+            }
+
+            try {
+                jdOrderService.addJDOrder(order);
+                /**
+                 * 鍋氶鐜囬檺鍒�
+                 */
+                String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.JDOrder, order.getOrderId() + "");
+                String result = redisManager.getCommonString(key);
+                // 鍒ゆ柇
+                if (StringUtil.isNullOrEmpty(result)) {
+                   ordersCMQManager.addOrder(new CommonOrderMQMsg(order.getOrderId() + "", Constant.SOURCE_TYPE_JD));
+                    redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2灏忔椂鍐呬笉鍐嶆洿鏂�
+                }
+            } catch (JDOrderException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 蹇�熻鍗曟洿鏂帮紙鐖彇鏈皬鏃跺唴鐨勫崟,姣忓垎閽熶竴娆★級
+     */
+    @XxlJob("updateJDOrderHandler")
+    public ReturnT<String> updateJDSoonOrder(String param) throws Exception {
+        try {
+            if ("1".equalsIgnoreCase(param)) {// 鏇存柊鏈皬鏃跺唴鐨勫崟
+                LogHelper.job("寮�濮嬬埇鍙栦含涓滆鍗�");
+                long now = System.currentTimeMillis();
+
+                JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME);
+                if (result != null && result.getOrderList() != null)
+                    saveJDOrders(result.getOrderList());
+                // 鏌ヨ涓婁釜灏忔椂鐨�
+                result = JDApiUtil.getOrderList(1, 200, new Date(now - 1000 * 60 * 60L), JDApiUtil.ORDER_TYPE_CREATETIME);
+                if (result != null && result.getOrderList() != null)
+                    saveJDOrders(result.getOrderList());
+            } else if ("1hour".equalsIgnoreCase(param)) {// 鏇存柊1灏忔椂鍐呯殑璁㈠崟
+                updateUpdateOrder();
+            } else if ("1day".equalsIgnoreCase(param)) {// 鏇存柊1澶╁唴鐨勮鍗�
+                updateLatestDayOrder(new Date(System.currentTimeMillis()));
+            } else if ("3day".equalsIgnoreCase(param)) {// 鏇存柊鏈�杩�3澶╂洿鏂扮殑鏁版嵁
+                updateLatest3DayOrder();
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+
+        return ReturnT.SUCCESS;
+    }
+
+    /**
+     * 鐖彇鏈�杩戜竴灏忔椂鍐呯殑鐘舵�佹洿鏂颁簡鐨勫崟(10鍒嗛挓涓�娆�)
+     */
+
+    public void updateUpdateOrder() {
+        List<JDOrder> jdOrderList = new ArrayList<>();
+        int pageSize = 200;
+        int page = 1;
+        JDOrderResult result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
+        if (result != null) {
+            jdOrderList.addAll(result.getOrderList());
+            while (result != null && result.isHasMore()) {
+                result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
+                if (result != null)
+                    jdOrderList.addAll(result.getOrderList());
+            }
+        }
+        saveJDOrders(jdOrderList);
+    }
+
+    /**
+     * 鏇存柊涓�涓皬鏃剁殑璁㈠崟
+     *
+     * @param date
+     */
+    private List<JDOrder> getHourOrder(Date date) {
+        List<JDOrder> jdOrderList = new ArrayList<>();
+        int pageSize = 200;
+        int page = 1;
+        JDOrderResult result = JDApiUtil.getOrderList(page++, pageSize, date, JDApiUtil.ORDER_TYPE_UPDATETIME);
+        if (result != null) {
+            jdOrderList.addAll(result.getOrderList());
+            while (result != null && result.isHasMore()) {
+                result = JDApiUtil.getOrderList(page++, pageSize, date, JDApiUtil.ORDER_TYPE_UPDATETIME);
+                if (result != null)
+                    jdOrderList.addAll(result.getOrderList());
+            }
+        }
+        return jdOrderList;
+    }
+
+    /**
+     * 鏇存柊涓�澶╃殑鏁版嵁
+     *
+     * @param date
+     */
+    public void updateDayOrder(Date date) {
+        Date now = new Date();
+        List<JDOrder> orderList = new ArrayList<>();
+        Date startTime = new Date(
+                TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(date.getTime(), "yyyy-MM-dd"), "yyyy-MM-dd"));
+        // 涓�涓皬鏃朵负涓�涓闀�
+        for (int i = 0; i < 24; i++) {
+            Date da = new Date(startTime.getTime() + 1000 * 60 * 60L * i);
+            if (da.getTime() > now.getTime())
+                break;
+            List<JDOrder> tempOrderList = getHourOrder(da);
+            if (tempOrderList != null && tempOrderList.size() > 0)
+                orderList.addAll(tempOrderList);
+        }
+        saveJDOrders(orderList);
+    }
+
+    /**
+     * 鏇存柊鏈�杩戜竴澶╃殑鏁版嵁
+     *
+     * @param date
+     */
+    public void updateLatestDayOrder(Date date) {
+        Date now = new Date();
+        List<JDOrder> orderList = new ArrayList<>();
+        Date startTime = new Date(date.getTime() - 1000 * 60 * 60 * 24L);
+        // 涓�涓皬鏃朵负涓�涓闀�
+        for (int i = 0; i < 24; i++) {
+            Date da = new Date(startTime.getTime() + 1000 * 60 * 60L * i);
+            if (da.getTime() > now.getTime())
+                break;
+            List<JDOrder> tempOrderList = getHourOrder(da);
+            if (tempOrderList != null && tempOrderList.size() > 0)
+                orderList.addAll(tempOrderList);
+        }
+        saveJDOrders(orderList);
+    }
+
+    /**
+     * 鏇存柊鏈�杩�3澶╃殑璁㈠崟锛堟瘡澶╂棭涓婂噷鏅�0鐐硅繃10鍒嗭紝鏃╀笂8鐐硅繃10鍒嗭級
+     */
+    public void updateLatest3DayOrder() {
+        Date now = new Date();
+        for (int i = 1; i < 4; i++) {
+            updateDayOrder(new Date(now.getTime() - 1000 * 60 * 60 * 24L * i));
+        }
+    }
+
+
+    @JobMonitor(key = "", maxSpaceTime = 60 * 60 * 25)
+    @XxlJob("order-jd-backup")
+    public ReturnT<String> backUpOrder(String param) throws Exception {
+        //鏇存柊90澶╀互鍓嶇殑杩�3澶╃殑鏁版嵁
+        long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 90;
+
+        for (int i = 0; i < 24 * 3; i++) {
+            List<JDBackUpOrder> orderList = getBackUpOrders(new Date(startTime + i * 1000 * 60 * 60L));
+            if (orderList != null && orderList.size() > 0) {
+                for (JDBackUpOrder order : orderList) {
+                    order.setUpdateTime(new Date());
+                    jdOrderBackUpDao.save(order);
+                }
+            }
+        }
+        return ReturnT.SUCCESS;
+    }
+
+
+    //澶勭悊寰堜箙娌″鐞嗙殑鏁版嵁
+    @JobMonitor(key = "", maxSpaceTime = 60 * 60 * 25)
+    @XxlJob("order-jd-process-outdate")
+    public ReturnT<String> processoutOfDate(String param) throws Exception {
+        //鏌ヨ 1涓湀鍒�5涓湀澶勪簬宸蹭粯娆剧姸鎬佺殑鏁版嵁
+        long maxTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 30;
+        long minTime = maxTime - 1000 * 60 * 60 * 24L * 120;
+        List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndStateAndThirdCrateTime(Constant.SOURCE_TYPE_JD, CommonOrder.STATE_FK, minTime, maxTime, 1, 200);
+        Set<String> orderIds = new HashSet<>();
+        for (CommonOrder co : orderList) {
+            orderIds.add(co.getOrderNo());
+        }
+        for (String orderId : orderIds) {
+           ordersCMQManager.addOrder(new CommonOrderMQMsg(orderId, Constant.SOURCE_TYPE_JD));
+        }
+        return ReturnT.SUCCESS;
+    }
+
+    private List<JDBackUpOrder> getBackUpOrders(Date hourDate) {
+        List<JDBackUpOrder> jdOrderList = new ArrayList<>();
+        int pageSize = 200;
+        int page = 1;
+        JDOrderForBackUpResult result = JDApiUtil.getOrderListForBackUp(page++, pageSize, hourDate, JDApiUtil.ORDER_TYPE_UPDATETIME);
+        if (result != null) {
+            jdOrderList.addAll(result.getOrderList());
+            while (result != null && result.isHasMore()) {
+                result = JDApiUtil.getOrderListForBackUp(page++, pageSize, hourDate, JDApiUtil.ORDER_TYPE_UPDATETIME);
+                if (result != null)
+                    jdOrderList.addAll(result.getOrderList());
+            }
+        }
+        return jdOrderList;
+    }
+
+
+}

--
Gitblit v1.8.0