From 622b8b1a9a636de75232a6f0e7fc488a087bf9eb Mon Sep 17 00:00:00 2001 From: Van0313 <60689272+Van0313@users.noreply.github.com> Date: Sat, 17 May 2025 00:07:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=B7=E4=BF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/van/business/util/OrderUtil.java | 19 +++++++++++-------- .../java/cn/van/business/util/WXUtil.java | 19 ++++++++++++++++--- src/main/java/cn/van/business/util/test.java | 17 +++++++++++++++++ 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 src/main/java/cn/van/business/util/test.java diff --git a/src/main/java/cn/van/business/util/OrderUtil.java b/src/main/java/cn/van/business/util/OrderUtil.java index 733df6d..4ec4c0b 100644 --- a/src/main/java/cn/van/business/util/OrderUtil.java +++ b/src/main/java/cn/van/business/util/OrderUtil.java @@ -7,8 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.slf4j.loggerger; -import org.slf4j.loggergerFactory; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.scheduling.annotation.Async; @@ -75,12 +74,15 @@ public class OrderUtil { } } - // 处理价保逻辑 - BigDecimal newProPriceAmount = Optional.ofNullable(orderRow.getProPriceAmount()).map(BigDecimal::new).orElse(BigDecimal.ZERO); +// 处理价保逻辑 + BigDecimal newProPriceAmount = Optional.ofNullable(orderRow.getProPriceAmount()) + .map(BigDecimal::new) + .orElse(BigDecimal.ZERO); if (BigDecimal.ZERO.compareTo(newProPriceAmount) < 0) { String oldProPriceAmountStr = getFromRedis(ORDER_ROW_JB_KEY + orderRow.getId()); - BigDecimal oldProPriceAmount = oldProPriceAmountStr == null ? BigDecimal.ZERO : new BigDecimal(oldProPriceAmountStr); + BigDecimal oldProPriceAmount = oldProPriceAmountStr == null ? + BigDecimal.ZERO : new BigDecimal(oldProPriceAmountStr); if (newProPriceAmount.compareTo(oldProPriceAmount) != 0) { String wxId = getWxidFromJdid(orderRow.getUnionId().toString()); @@ -89,12 +91,13 @@ public class OrderUtil { String alertMsg = "[Broken][Broken][Broken] 价保提醒 [Broken][Broken][Broken] " + newProPriceAmount + "\n" + content; wxUtil.sendTextMessage(wxId, alertMsg, 1, wxId, true); } - } - // 不管是否变动都写入 Redis,用于下次比较 - redisTemplate.opsForValue().set(ORDER_ROW_JB_KEY + orderRow.getId(), newProPriceAmount.toString()); + // 只有发生变动后才更新 Redis + redisTemplate.opsForValue().set(ORDER_ROW_JB_KEY + orderRow.getId(), newProPriceAmount.toString()); + } } + } catch (Exception e) { logger.error("处理订单微信通知失败: {}", e.getMessage(), e); // 可加入重试机制或上报监控 diff --git a/src/main/java/cn/van/business/util/WXUtil.java b/src/main/java/cn/van/business/util/WXUtil.java index 0521ce1..38fafc2 100644 --- a/src/main/java/cn/van/business/util/WXUtil.java +++ b/src/main/java/cn/van/business/util/WXUtil.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Component; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.CompletableFuture; /** * @author Leo @@ -81,7 +82,7 @@ public class WXUtil { private final MessageProducerService messageProducerService; public int sendTimes = 0; private Environment env; - + private static boolean restartNoticeSent = false; @Autowired public WXUtil(Environment env, WxtsUtil wxTsUtil, @Lazy MessageProducerService messageProducerService) { this.messageProducerService = messageProducerService; @@ -124,6 +125,9 @@ public class WXUtil { // 初始化超级管理员 public void initSuperAdmins() { + if (restartNoticeSent) { + return; + } SuperAdmin admin1 = new SuperAdmin("wxid_ytpc72mdoskt22", "凡", "2014264913", "98e21c89ae5610240ec3f5f575f86a59", "3dcb6b23a1104639ac433fd07adb6dfb"); super_admins.put(admin1.getWxid() + admin1.getUnionId(), admin1); jdidToWxidMap.put(admin1.getUnionId(), admin1.getWxid()); @@ -211,11 +215,20 @@ public class WXUtil { // 舵手群(48621589056@chatroom):"曲莉亚@河南慧推电子商务有限公司、齐学法@河南慧推电子商务有限公司"为企业微信用户,<_wc_custom_link_ href="https://weixin.qq.com/cgi-bin/newreadtemplate?t=work_wechat/about_group">了解更多。 chatRoom_xb.put("48621589056@chatroom", "舵手"); - //发送通知到微信 + String messageContent = "Jarvis 重启完成 [亲亲][亲亲][亲亲] "; + String fromWxid = default_bot_wxid; // 来源为机器人自身 + super_admins.forEach((wxid, superAdmin) -> { - sendTextMessage(wxid, "Jarvis 重启完成 [亲亲][亲亲][亲亲] ", 1, wxid, false); + try { + // 异步发送,不影响启动流程 + CompletableFuture.runAsync(() -> sendTextMessage(wxid.substring(0, 19), messageContent, 1, fromWxid, false)); + } catch (Exception e) { + logger.warn("发送重启通知失败,目标 wxid: {}", wxid, e); + } }); + restartNoticeSent = true; + } // 获取微信列表 diff --git a/src/main/java/cn/van/business/util/test.java b/src/main/java/cn/van/business/util/test.java new file mode 100644 index 0000000..e07a0c4 --- /dev/null +++ b/src/main/java/cn/van/business/util/test.java @@ -0,0 +1,17 @@ +package cn.van.business.util; + +/** + * @author Leo + * @version 1.0 + * @create 2025/5/17 00:05 + * @description: + */ +public class test { + public static class Main { + public static void main(String[] args) { + String str = "wxid_cfmrk2upjtf322"; + int length = str.length(); + System.out.println("字符串长度是: " + length); // 输出:15 + } + } +}