From 2876964c64c9e765ddc829b0141b05bf884d3640 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: Fri, 11 Apr 2025 15:51:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=BE=AE=E4=BF=A1=E5=AF=B9?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E4=BA=AC=E7=B2=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/OrderRowRepository.java | 16 +++++++--- .../java/cn/van/business/util/JDUtil.java | 31 +++++++++---------- .../java/cn/van/business/util/OrderUtil.java | 8 +++-- .../java/cn/van/business/util/WXUtil.java | 7 +++-- .../van/business/util/WxMessageConsumer.java | 2 +- 5 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/main/java/cn/van/business/repository/OrderRowRepository.java b/src/main/java/cn/van/business/repository/OrderRowRepository.java index 3a8c482..4c3ac70 100644 --- a/src/main/java/cn/van/business/repository/OrderRowRepository.java +++ b/src/main/java/cn/van/business/repository/OrderRowRepository.java @@ -33,14 +33,22 @@ public interface OrderRowRepository extends JpaRepository { List findByValidCode(int validCode); // 查找 validCode != 15 或者 !=-1 的订单行 ,并且按orderTime 降序 - @Query("select o from OrderRow o where o.validCode not in ?1 and o.unionId =?2 order by o.orderTime DESC") - List findByValidCodeNotInOrderByOrderTimeDescAndUnionId(int[] validCodes, Long unionId); +// 修改后支持传入List + @Query("SELECT o FROM OrderRow o " + "WHERE o.validCode NOT IN ?1 " + "AND o.unionId IN :unionIds " + // 关键修改点 + "ORDER BY o.orderTime DESC") + List findByValidCodeNotInOrderByOrderTimeDescAndUnionId(@Param("validCodes") int[] validCodes, @Param("unionIds") List unionIds // 参数类型改为List + ); + @Query("select o from OrderRow o where o.validCode not in ?1 and o.orderTime >= ?2 order by o.orderTime DESC") List findByValidCodeNotInAndOrderTimeGreaterThanOrderByOrderTimeDesc(int[] validCodes, @DateTimeFormat(pattern = "yyyy-MM-dd") Date threeMonthsAgo); - @Query("select o from OrderRow o where o.validCode not in ?1 and o.skuId = ?2 and o.unionId = ?3 order by o.orderTime DESC") - List findBySkuIdAndUnionId(int[] validCodes,long skuId, long unionId); + // 修改后支持传入unionId列表 + @Query("SELECT o FROM OrderRow o " + "WHERE o.validCode NOT IN :validCodes " + "AND o.skuId = :skuId " + "AND o.unionId IN :unionIds " + // 关键修改点 + "ORDER BY o.orderTime DESC") + List findBySkuIdAndUnionId(@Param("validCodes") int[] validCodes, @Param("skuId") long skuId, @Param("unionIds") List unionIds // 参数类型改为List + ); + //// 在OrderRowRepository中添加模糊查询方法 //// 模糊查询收件人姓名或地址(包含分页) diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index f61bc4e..0d6f660 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -235,14 +235,14 @@ public class JDUtil { public void sendOrderToWxByOrderJD(String order, String fromWxid) { int[] param = {-1}; - WXUtil.SuperAdmin superAdmin = getSuperAdmin(fromWxid); - String unionId; - if (superAdmin != null) { - unionId = superAdmin.getUnionId(); - }else { - return; + List superAdmins = getSuperAdmins(fromWxid); + List unionIds = new ArrayList<>(); + for (WXUtil.SuperAdmin superAdmin : superAdmins) { + String unionId = superAdmin.getUnionId(); + unionIds.add(Long.valueOf(unionId)); } - List orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDescAndUnionId(param, Long.valueOf(unionId)); + + List orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDescAndUnionId(param, unionIds); /** * 菜单: * 今日统计 @@ -426,14 +426,13 @@ public class JDUtil { */ public void sendOrderToWxByOrderJDAdvanced(String order, String fromWxid) { int[] param = {-1}; - WXUtil.SuperAdmin superAdmin = getSuperAdmin(fromWxid); - String unionId; - if (superAdmin != null) { - unionId = superAdmin.getUnionId(); - }else { - return; + List superAdmins = getSuperAdmins(fromWxid); + List unionIds = new ArrayList<>(); + for (WXUtil.SuperAdmin superAdmin : superAdmins) { + String unionId = superAdmin.getUnionId(); + unionIds.add(Long.valueOf(unionId)); } - List orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDescAndUnionId(param, Long.valueOf(unionId)); + List orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDescAndUnionId(param, unionIds); List contents = new ArrayList<>(); StringBuilder content = new StringBuilder(); @@ -491,7 +490,7 @@ public class JDUtil { List orderRowList = orderRowRepository.findByOrderId(Long.parseLong(order)); if (!orderRowList.isEmpty()) { OrderRow orderRow = orderRowList.get(0); - if (orderRow.getUnionId().equals(Long.parseLong(unionId))) { + if (unionIds.contains(orderRow.getUnionId())) { content.append(orderUtil.getFormattedOrderInfo(orderRow, orderRow.getValidCode())); } else { content.append("订单不属于你,无法查询\r"); @@ -506,7 +505,7 @@ public class JDUtil { content.append("精准查询sku,不统计已取消的订单:\r"); int[] validCodes = {-1, 3}; - List bySkuIdAndUnionId = orderRowRepository.findBySkuIdAndUnionId(validCodes, Long.parseLong(order), Long.parseLong(unionId)); + List bySkuIdAndUnionId = orderRowRepository.findBySkuIdAndUnionId(validCodes, Long.parseLong(order), unionIds); int size = bySkuIdAndUnionId.size(); content.append("查询到").append(size).append("条订单\r"); // 切割成20条20条返回前100条 diff --git a/src/main/java/cn/van/business/util/OrderUtil.java b/src/main/java/cn/van/business/util/OrderUtil.java index 447773a..6eb0479 100644 --- a/src/main/java/cn/van/business/util/OrderUtil.java +++ b/src/main/java/cn/van/business/util/OrderUtil.java @@ -156,6 +156,9 @@ public class OrderUtil { public String getFormattedOrderInfoBatch(OrderRow orderRow) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ValidCodeConverter converter = new ValidCodeConverter(); + Long unionId = orderRow.getUnionId(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(unionId)); + //+ "订单+sku:" + orderRow.getId() + "\r" //+ "商品单价:" + orderRow.getPrice() + "\r" //+ "商品数量:" + orderRow.getSkuNum() + "\r" @@ -170,9 +173,10 @@ public class OrderUtil { //} - return "订单:" + orderRow.getOrderId() + " (" + (orderRow.getPlus() == 1 ? "plus" : "非plus") + ")\r" + + return "订单:" + orderRow.getOrderId() + " (" + (orderRow.getPlus() == 1 ? "plus" : "非plus") + ")\r" + +"京粉备注:"+ remarkFromJdid + "\r" - "状态:" + (converter.getCodeDescription(orderRow.getValidCode())) + "\r" + +"状态:" + (converter.getCodeDescription(orderRow.getValidCode())) + "\r" + "名称:" + orderRow.getSkuName() + "\r\n" //+ "商品单价:" + orderRow.getPrice() + "\r" diff --git a/src/main/java/cn/van/business/util/WXUtil.java b/src/main/java/cn/van/business/util/WXUtil.java index 7948501..a7f952c 100644 --- a/src/main/java/cn/van/business/util/WXUtil.java +++ b/src/main/java/cn/van/business/util/WXUtil.java @@ -97,13 +97,14 @@ public class WXUtil { return jdidToRemarkMap.get(jdid); } - public static SuperAdmin getSuperAdmin(String wxid) { + public static List getSuperAdmins(String wxid) { + List result = new ArrayList<>(); for (SuperAdmin admin : super_admins.values()) { if (admin.getWxid().equals(wxid)) { - return admin; + result.add(admin); } } - return null; + return result; } diff --git a/src/main/java/cn/van/business/util/WxMessageConsumer.java b/src/main/java/cn/van/business/util/WxMessageConsumer.java index 871430f..09e0656 100644 --- a/src/main/java/cn/van/business/util/WxMessageConsumer.java +++ b/src/main/java/cn/van/business/util/WxMessageConsumer.java @@ -231,7 +231,7 @@ public class WxMessageConsumer { } String fromWxid = innerData.getFromWxid(); - WXUtil.SuperAdmin superAdmin = getSuperAdmin(fromWxid); + WXUtil.SuperAdmin superAdmin = getSuperAdmins(fromWxid); if (Util.isEmpty(superAdmin)) { logger.info("不是超管消息,不处理"); return;