From e1a2d5974802a6c0ef7ce8cf8a41d102b99331e7 Mon Sep 17 00:00:00 2001 From: Van0313 <60689272+Van0313@users.noreply.github.com> Date: Fri, 16 May 2025 23:23:48 +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/JDUtil.java | 9 ++---- .../java/cn/van/business/util/OrderUtil.java | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index 2294681..3ddd2bc 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -12,7 +12,6 @@ import cn.van.business.util.ds.GPTClientUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.jd.open.api.sdk.DefaultJdClient; import com.jd.open.api.sdk.JdClient; @@ -477,7 +476,7 @@ public class JDUtil { if (!orderRowList.isEmpty()) { OrderRow orderRow = orderRowList.get(0); if (unionIds.contains(orderRow.getUnionId())) { - content.append(orderUtil.getFormattedOrderInfo(orderRow, orderRow.getValidCode())); + content.append(orderUtil.getFormattedOrderInfo(orderRow)); } else { content.append("订单不属于你,无法查询\r"); } @@ -499,7 +498,7 @@ public class JDUtil { List subList = bySkuIdAndUnionId.subList(i, Math.min(i + 20, size)); content.append("第").append(i / 20 + 1).append("页:\r"); for (OrderRow orderRow : subList) { - content.append(orderUtil.getFormattedOrderInfo(orderRow, orderRow.getValidCode())); + content.append(orderUtil.getFormattedOrderInfo(orderRow)); contents.add(content); content = new StringBuilder(); } @@ -1651,10 +1650,6 @@ public class JDUtil { logger.info("handleCommentInteraction 处理生成评论流程中的用户交互 - 用户: {},message: {}", fromWxid, message); try { getProductTypeMap(); - if (productTypeMap == null) { - wxUtil.sendTextMessage(fromWxid, "productTypeMap 为空 ", 1, fromWxid, false); - return; - } if (productTypeMap.containsKey(message)) { generateComment(fromWxid, message); } else { diff --git a/src/main/java/cn/van/business/util/OrderUtil.java b/src/main/java/cn/van/business/util/OrderUtil.java index 833d45a..bb4c911 100644 --- a/src/main/java/cn/van/business/util/OrderUtil.java +++ b/src/main/java/cn/van/business/util/OrderUtil.java @@ -41,6 +41,7 @@ public class OrderUtil { //标记唯一订单行:订单+sku维度的唯一标识 private static final String ORDER_ROW_KEY = "jd:order:row:"; + private static final String ORDER_ROW_JB_KEY = "jd:order:row:jb:"; /** * 手动调用 将订单发送到微信 @@ -50,14 +51,18 @@ public class OrderUtil { // 获取订单当前状态 Integer newValidCode = orderRow.getValidCode(); String oldValidCode = redisTemplate.opsForValue().get(ORDER_ROW_KEY + orderRow.getId()); + // 价保 + Double newProPriceAmount = orderRow.getProPriceAmount(); + + // 检查Redis中是否有旧的状态码,没有的话赋予默认值 Integer lastValidCode = oldValidCode != null ? Integer.parseInt(oldValidCode) : -100; - // 这里使用了逻辑非(!)操作符来简化条件判断 + // 订单变化 if (!isAutoFlush || !lastValidCode.equals(newValidCode)) { // 当 isAutoFlush 为 false 或状态确实有变化时,进行消息发送 - String content = getFormattedOrderInfo(orderRow, lastValidCode); + String content = getFormattedOrderInfo(orderRow); String wxId = getWxidFromJdid(orderRow.getUnionId().toString()); if (Util.isNotEmpty(wxId)) { wxUtil.sendTextMessage(wxId, content, 1, wxId, true); @@ -100,10 +105,24 @@ public class OrderUtil { } } - // 更新 Redis 状态值 redisTemplate.opsForValue().set(ORDER_ROW_KEY + orderRow.getId(), String.valueOf(orderRow.getValidCode())); - //logger.info("订单状态:{} 订单号:{} sku:{}", orderRow.getValidCode(), orderRow.getOrderId(), orderRow.getSkuName()); + + if (!newProPriceAmount.equals(0.0)){ + String oldProPriceAmount = redisTemplate.opsForValue().get(ORDER_ROW_JB_KEY + orderRow.getId()); + if (Util.isNotEmpty(oldProPriceAmount)) { + if (!oldProPriceAmount.equals(newProPriceAmount.toString())) { + String wxId = getWxidFromJdid(orderRow.getUnionId().toString()); + if (Util.isNotEmpty(wxId)) { + String content = getFormattedOrderInfo(orderRow); + wxUtil.sendTextMessage(wxId, "[Broken] [Broken] [Broken] 价保提醒 [Broken] [Broken] [Broken] " + newProPriceAmount + "\n" + content, 1, wxId, true); + } + } + } + // 不管价保与否,都要写入redis + redisTemplate.opsForValue().set(ORDER_ROW_JB_KEY + orderRow.getId(), "0.0"); + + } } @@ -138,7 +157,7 @@ public class OrderUtil { /** * 将数据库订单转化成微信所需要文本 */ - public String getFormattedOrderInfo(OrderRow orderRow, Integer oldValidCode) { + public String getFormattedOrderInfo(OrderRow orderRow) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ValidCodeConverter converter = new ValidCodeConverter(); Long unionId = orderRow.getUnionId();