From c798d7817906856258ef343f7a6fae2ebe5c57d2 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 1 Dec 2024 01:52:15 +0800 Subject: [PATCH] 1 --- .../java/cn/van/business/util/JDUtils.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/cn/van/business/util/JDUtils.java b/src/main/java/cn/van/business/util/JDUtils.java index 2949eee..029bcde 100644 --- a/src/main/java/cn/van/business/util/JDUtils.java +++ b/src/main/java/cn/van/business/util/JDUtils.java @@ -19,7 +19,7 @@ import com.jd.open.api.sdk.response.kplunion.UnionOpenPromotionCommonGetResponse import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.SetOperations; +import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -286,19 +286,27 @@ public class JDUtils { public UnionOpenOrderRowQueryResponse fetchOrdersForDateTime(LocalDateTime startTime, boolean isRealTime, Integer page) throws Exception { LocalDateTime endTime = isRealTime ? startTime.plusMinutes(10) : startTime.plusHours(1); - String key = startTime.format(DATE_TIME_FORMATTER); - String hourRange = isRealTime ? "minute" : "hour"; + String hourMinuteTag = isRealTime ? "minute" : "hour"; + String timeTag = startTime.format(DATE_TIME_FORMATTER); - SetOperations setOps = redisTemplate.opsForSet(); + HashOperations hashOps = redisTemplate.opsForHash(); + + // 检查这个小时或分钟是否已经被处理过 + if (hashOps.hasKey(timeTag, hourMinuteTag)) { + return null; + } // 调用 API 以拉取订单 UnionOpenOrderRowQueryResponse unionOpenOrderRowQueryResponse = getUnionOpenOrderRowQueryResponse(startTime, endTime, page); // 标记已拉取 - setOps.add(key, hourRange); + if (!isRealTime) { + // 标记已拉取 + hashOps.put(timeTag, hourMinuteTag, "done"); + } // 打印方法调用和开始结束时间 - logger.info("拉取订单:开始时间:{}结束时间:{}", startTime.format(DATE_TIME_FORMATTER), endTime.format(DATE_TIME_FORMATTER)); + logger.info("拉取订单:开始时间:{}---结束时间:{}", startTime.format(DATE_TIME_FORMATTER), endTime.format(DATE_TIME_FORMATTER)); return unionOpenOrderRowQueryResponse; }