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 | 434 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 270 insertions(+), 164 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 dc532e6..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,164 +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.log.LogHelper; -import com.yeshi.fanli.service.inter.order.jd.JDOrderService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.TimeUtil; -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) { - LogHelper.orderInfo("浜笢璁㈠崟:" + order.getOrderId() + "-" + order.getValidCode()); - if (order.getValidCode() == 15)// 杩囨护鎺夊緟浠樻 - continue; - - //闃叉澶氫釜鍟嗗搧鎷嗗崟闂锛岀埇鍙� - if (order.getOrderItemList().size() > 1 - && order.getOrderTime() > System.currentTimeMillis() - 1000 * 60 * 2L) { - 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; - 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()); - } - - /** - * 鐖彇鏈�杩戜竴灏忔椂鍐呯殑鐘舵�佹洿鏂颁簡鐨勫崟(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); - } - - /** - * 鏇存柊涓�涓皬鏃剁殑璁㈠崟 - * - * @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); - } - - /** - * 鏇存柊鏈�杩�3澶╃殑璁㈠崟锛堟瘡澶╂棭涓婂噷鏅�0鐐硅繃10鍒嗭紝鏃╀笂8鐐硅繃10鍒嗭級 - */ - @Scheduled(cron = "0 10 0,8 * * ? ") - public void updateLatest3DayOrder() { - if (!Constant.IS_TASK) - return; - Date now = new Date(); - for (int i = 1; i < 4; i++) { - updateDayOrder(new Date(now.getTime() - 1000 * 60 * 60 * 24L * i)); - } - } - -} +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