diff --git a/src/main/java/cn/van/business/util/JDUtils.java b/src/main/java/cn/van/business/util/JDUtils.java index fba8c44..5196bda 100644 --- a/src/main/java/cn/van/business/util/JDUtils.java +++ b/src/main/java/cn/van/business/util/JDUtils.java @@ -178,11 +178,16 @@ public class JDUtils { /** * 实时刷新最近10分钟的订单 */ - @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次 + //@Scheduled(cron = "0 * * * * ?") // 每分钟执行一次 public void fetchLatestOrder() { LocalDateTime now = LocalDateTime.now(); LocalDateTime lastMinute = now.minusMinutes(10).withSecond(0).withNano(0); + + /**临时代码*/ + + + /**下面是原先的代码*/ for (Map.Entry entry : super_admins.entrySet()) { //String wxid = entry.getKey(); WXUtil.SuperAdmin admin = entry.getValue(); @@ -214,6 +219,62 @@ public class JDUtils { } + public void test01() { + + for (Map.Entry entry : super_admins.entrySet()) { + //String wxid = entry.getKey(); + WXUtil.SuperAdmin admin = entry.getValue(); + String appKey = admin.getAppKey(); + String secretKey = admin.getSecretKey(); + if (Util.isAnyEmpty(appKey,secretKey)){ + continue; + } + LocalDateTime now = LocalDateTime.now(); + //logger.info("拉取历史订单---> , {} 点,{} 分", now.getHour(), now.getMinute()); + + LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS); + LocalDateTime startDate = lastHour.minusMonths(3).truncatedTo(ChronoUnit.HOURS); + + + while (!startDate.isEqual(lastHour)) { + Integer pageIndex = 1; + boolean hasMore = true; + + while (hasMore) { + try { + // 30-60 天 ,非实时,非分钟 + UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false, pageIndex, false,appKey,secretKey); + if (response != null && response.getQueryResult() != null) { + if (response.getQueryResult().getCode() == 200) { + OrderRowResp[] orderRowResps = response.getQueryResult().getData(); + if (orderRowResps != null) { + for (OrderRowResp orderRowResp : orderRowResps) { + if (orderRowResp != null) { // Check each orderRowResp is not null + OrderRow orderRow = createOrderRow(orderRowResp); + if (orderRow != null) { // Ensure orderRow is not null after creation + orderRowRepository.save(orderRow); + } + } + } + } + hasMore = Boolean.TRUE.equals(response.getQueryResult().getHasMore()); + } else { + hasMore = false; + } + } else { + hasMore = false; + } + } catch (Exception e) { + hasMore = false; // Optionally break out of the while loop if required + } + if (hasMore) pageIndex++; + } + startDate = startDate.plusHours(1); + } + } + } + + /** * 扫描订单发送到微信 * 每分钟的30秒执行一次 @@ -239,8 +300,9 @@ public class JDUtils { /** * 一天拉取三次 30天到60天前的订单 */ - @Scheduled(cron = "0 0 */4 * * ?") + //@Scheduled(cron = "0 0 */4 * * ?") public void fetchHistoricalOrders3090() { + for (Map.Entry entry : super_admins.entrySet()) { //String wxid = entry.getKey(); WXUtil.SuperAdmin admin = entry.getValue(); @@ -262,6 +324,7 @@ public class JDUtils { LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS).minusMonths(1); LocalDateTime startDate = lastHour.minusMonths(3).truncatedTo(ChronoUnit.HOURS); + while (!startDate.isEqual(lastHour)) { Integer pageIndex = 1; boolean hasMore = true; @@ -304,7 +367,7 @@ public class JDUtils { /** * 一天拉取6次 14天到30天前的订单 */ - @Scheduled(cron = "0 0 * * * ?") + //@Scheduled(cron = "0 0 * * * ?") public void fetchHistoricalOrders1430() { for (Map.Entry entry : super_admins.entrySet()) { //String wxid = entry.getKey(); @@ -368,7 +431,7 @@ public class JDUtils { /** * 每10分钟拉取07-14天的订单 */ - @Scheduled(cron = "0 0 * * * ?") + //@Scheduled(cron = "0 0 * * * ?") public void fetchHistoricalOrders0714() { for (Map.Entry entry : super_admins.entrySet()) { //String wxid = entry.getKey(); @@ -428,7 +491,7 @@ public class JDUtils { return count; } - @Scheduled(cron = "0 * * * * ?") + //@Scheduled(cron = "0 * * * * ?") public void fetchHistoricalOrders0007() { for (Map.Entry entry : super_admins.entrySet()) { //String wxid = entry.getKey(); @@ -501,12 +564,14 @@ public class JDUtils { LocalDateTime endTime = isMinutes ? startTime.plusMinutes(30) : startTime.plusHours(1); String hourMinuteTag = isRealTime ? "minute" : "hour"; - String timeTag = JD_REFRESH_TAG +":"+appKey +":"+ startTime.format(DATE_TIME_FORMATTER); + //String oldTimeTag = JD_REFRESH_TAG + startTime.format(DATE_TIME_FORMATTER); + + String newTimeTag = JD_REFRESH_TAG +":"+appKey +":"+ startTime.format(DATE_TIME_FORMATTER); HashOperations hashOps = redisTemplate.opsForHash(); // 检查这个小时或分钟是否已经被处理过 - if (hashOps.hasKey(timeTag, hourMinuteTag)) { + if (hashOps.hasKey(newTimeTag, hourMinuteTag)) { if (!isMinutes) { return null; } @@ -519,7 +584,7 @@ public class JDUtils { if (!isRealTime) { // 只有没有订单的才进行标记为已拉取 if (unionOpenOrderRowQueryResponse != null && unionOpenOrderRowQueryResponse.getQueryResult() != null && unionOpenOrderRowQueryResponse.getQueryResult().getData() == null) { - hashOps.put(timeTag, hourMinuteTag, "done"); + hashOps.put(newTimeTag, hourMinuteTag, "done"); } } @@ -533,6 +598,22 @@ public class JDUtils { } + public void test(LocalDateTime startTime, boolean isRealTime, Integer page, boolean isMinutes,String appKey,String secretKey){ + String oldTimeTag = JD_REFRESH_TAG + startTime.format(DATE_TIME_FORMATTER); + String newTimeTag = JD_REFRESH_TAG +":"+appKey +":"+ startTime.format(DATE_TIME_FORMATTER); + + StringRedisTemplate redisTemplate = new StringRedisTemplate(); + HashOperations hashOps = redisTemplate.opsForHash(); + +// get all entries from the old hash + Map entries = hashOps.entries(oldTimeTag); + +// put all entries into the new hash + hashOps.putAll(newTimeTag, entries); + +// delete the old hash + redisTemplate.delete(oldTimeTag); + } /** * 接收京粉指令指令 @@ -578,6 +659,10 @@ public class JDUtils { content.append("京高级+订单号\r\""); content.append("京高级SKU+sku\\r\""); break; + case "测试指令":{ + test01(); + break; + } case "今日统计": { List todayOrders = filterOrdersByDate(orderRows, 0); // 订单总数,已付款,已取消,佣金总计