From 13c9d0350ceaaff44725c8026b1eeafec6a77c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Thu, 19 Jun 2025 15:45:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=95=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/van/business/util/JDUtil.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index 9f03a65..06a1d99 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -1768,6 +1768,17 @@ public class JDUtil { wxUtil.sendTextMessage(fromWxid, "订单数量格式错误,请输入正确的数字", 1, fromWxid, false); return; } + // 需要做一个强校验,如果24小时内,解析出来的地址,已经存在,则不允许继续生成订单,并返回错误信息给用户。 + // 思路是将地址解析出来,保存到 Redis 中,并设置过期时间为 24 小时。 + String address = split[5].trim(); + String addressKey = "address:" + address; + if (redisTemplate.opsForValue().get(addressKey) != null) { + for (int i = 0; i < 5; i++) { + wxUtil.sendTextMessage(fromWxid, "[炸弹] [炸弹] [炸弹] 此地址已经存在,请勿重复生成订单 [炸弹] [炸弹] [炸弹] ", 1, fromWxid, false); + } + return; + } + redisTemplate.opsForValue().set(addressKey, "1", 1, TimeUnit.DAYS); // 先一次性增加计数器,并设置到 Redis(原子性操作) int startCount = count + 1; @@ -2069,6 +2080,7 @@ public class JDUtil { private Date orderDate; } + public List getDateFromLD(String dateStr) { ArrayList dateArrayList = new ArrayList<>(); logger.info("开始解析日期 {}", dateStr); @@ -2106,6 +2118,7 @@ public class JDUtil { return dateArrayList; } + public static LocalDateTime getEffectiveToday() { LocalDateTime now = LocalDateTime.now(); if (now.getHour() < 8) {