Bläddra i källkod

Merge branch 'dev/2024/0516/update-app-Y' of Harper/feifan-backend-zx-app into master

对接微信信息模板
Yangzw 10 månader sedan
förälder
incheckning
5a5562c028

+ 1 - 1
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/wxmessage/WcChatMessageTemplateIdEnum.java

@@ -13,7 +13,7 @@ public enum WcChatMessageTemplateIdEnum {
     ORDER_DELIVERY("1","订单发货通知"),
     AFTER_SALE_CHECK("2","售后订单审核通知"),
     AFTER_SALE_NO_CHECK("3","售后订单待审核通知"),
-    ORDER_NO_DELIVERY("4","订单待发货通知");
+    ORDER_NO_DELIVERY("4","订单出货提醒");
 
     private final String templateId;
     private final String name;

+ 47 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -20,6 +20,7 @@ import cn.newfeifan.mall.module.distri.enums.CaclEnum;
 import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
 import cn.newfeifan.mall.module.member.api.address.MemberAddressApi;
 import cn.newfeifan.mall.module.member.api.address.dto.MemberAddressRespDTO;
+import cn.newfeifan.mall.module.member.service.user.MemberUserService;
 import cn.newfeifan.mall.module.pay.api.order.PayOrderApi;
 import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderCreateReqDTO;
 import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderRespDTO;
@@ -32,6 +33,7 @@ import cn.newfeifan.mall.module.product.dal.dataobject.sku.ProductSkuDO;
 import cn.newfeifan.mall.module.product.dal.mysql.sku.ProductSkuMapper;
 import cn.newfeifan.mall.module.sale.dal.dataobject.shop.ShopDO;
 import cn.newfeifan.mall.module.sale.dal.mysql.shop.ShopMapper;
+import cn.newfeifan.mall.module.system.service.user.AdminUserService;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
@@ -50,6 +52,7 @@ import cn.newfeifan.mall.module.trade.dal.mysql.order.TradeOrderMapper;
 import cn.newfeifan.mall.module.trade.dal.redis.no.TradeNoRedisDAO;
 import cn.newfeifan.mall.module.trade.enums.delivery.DeliveryTypeEnum;
 import cn.newfeifan.mall.module.trade.enums.order.*;
+import cn.newfeifan.mall.module.trade.enums.wxmessage.WcChatMessageTemplateIdEnum;
 import cn.newfeifan.mall.module.trade.framework.order.config.TradeOrderProperties;
 import cn.newfeifan.mall.module.trade.framework.order.core.annotations.TradeOrderLog;
 import cn.newfeifan.mall.module.trade.framework.order.core.utils.TradeOrderLogUtils;
@@ -63,6 +66,7 @@ import cn.newfeifan.mall.module.trade.service.price.TradePriceService;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateReqBO;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateRespBO;
 import cn.newfeifan.mall.module.trade.service.price.calculator.TradePriceCalculatorHelper;
+import cn.newfeifan.mall.module.trade.utils.wechat.WcChatMessageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
@@ -73,8 +77,11 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.*;
@@ -145,6 +152,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
     @Resource
     private OrderPercentageMapper orderPercentageMapper;
 
+    @Resource
+    private MemberUserService memberUserService;
+
+    @Resource
+    private WcChatMessageUtils wcChatMessageUtils;
+
+    @Resource
+    private AdminUserService adminUserService;
+
     // =================== Order ===================
 
 
@@ -954,11 +970,42 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
             String OrderNum =order.getNo();
             integralService.updateUserIntegral(tradeOrderDO.getUserId(), CaclEnum.ORDER_GET_FREEZE_INTEGRAL, 0l,totalFreezeAmount,tradeOrderId,OrderNum);
 
+
+            // 发送给微信消息给系统用户待发货消息
+            sentWcChatMessage(order);
         }
 
 
     }
 
+    private void sentWcChatMessage(TradeOrderDO order){
+        List<String> params = new ArrayList<>();
+        DecimalFormat df = new DecimalFormat("0.00");
+        String formattedPrice = df.format((double) order.getPayPrice() / 100);
+
+        params.add("¥ " + formattedPrice);
+        params.add(order.getNo());
+        params.add(memberUserService.getUser(order.getUserId()).getNickname());
+
+        List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectListByOrderId(order.getId());
+        List<String> productNames = tradeOrderItemDOS.stream().map(TradeOrderItemDO::getSpuName).collect(Collectors.toList());
+        String name = productNames.toString();
+
+        // 去除首尾的括号,并去除空格
+        name = name.substring(1, name.length() - 1).trim();
+
+        params.add(name);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        params.add(LocalDateTime.now().format(formatter));
+
+        List<Long> adminUsers = adminUserService.getUserIdsByShop(order.getShopId());
+        for (Long aUserId : adminUsers) {
+            //发送信息
+            wcChatMessageUtils.sendWcChatMessage(order.getUserId(), WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY.getTemplateId(),
+                    params, aUserId, order.getUserId(), order.getId());
+        }
+    }
+
     /**
      * 校验交易订单满足被支付的条件
      * <p>