Commit 7782b36f90dc907e894645fdff03dc069c5cb7fe

Authored by YunaiV
1 parent 9058c152

【代码优化】SYSTEM:微信小程序的订阅

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
@@ -66,7 +66,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -66,7 +66,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
66 private ProductSkuApi productSkuApi; 66 private ProductSkuApi productSkuApi;
67 67
68 @Resource 68 @Resource
69 - @Lazy 69 + @Lazy // 延迟加载,避免循环依赖
70 private TradeOrderApi tradeOrderApi; 70 private TradeOrderApi tradeOrderApi;
71 71
72 // TODO @芋艿:在详细预览下; 72 // TODO @芋艿:在详细预览下;
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/AfterSaleServiceImpl.java
@@ -33,6 +33,7 @@ import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; @@ -33,6 +33,7 @@ import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService;
33 import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; 33 import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService;
34 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; 34 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService;
35 import lombok.extern.slf4j.Slf4j; 35 import lombok.extern.slf4j.Slf4j;
  36 +import org.springframework.context.annotation.Lazy;
36 import org.springframework.stereotype.Service; 37 import org.springframework.stereotype.Service;
37 import org.springframework.transaction.annotation.Transactional; 38 import org.springframework.transaction.annotation.Transactional;
38 import org.springframework.transaction.support.TransactionSynchronization; 39 import org.springframework.transaction.support.TransactionSynchronization;
@@ -56,6 +57,7 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; @@ -56,6 +57,7 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
56 public class AfterSaleServiceImpl implements AfterSaleService { 57 public class AfterSaleServiceImpl implements AfterSaleService {
57 58
58 @Resource 59 @Resource
  60 + @Lazy // 延迟加载,避免循环依赖
59 private TradeOrderUpdateService tradeOrderUpdateService; 61 private TradeOrderUpdateService tradeOrderUpdateService;
60 @Resource 62 @Resource
61 private TradeOrderQueryService tradeOrderQueryService; 63 private TradeOrderQueryService tradeOrderQueryService;
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
@@ -83,8 +83,6 @@ import static cn.iocoder.yudao.module.trade.enums.MessageTemplateConstants.DELIV @@ -83,8 +83,6 @@ import static cn.iocoder.yudao.module.trade.enums.MessageTemplateConstants.DELIV
83 @Slf4j 83 @Slf4j
84 public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { 84 public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
85 85
86 - public static final String ORDER_DETAIL_PATH = "pages/order/detail"; // 订单详情页  
87 -  
88 @Resource 86 @Resource
89 private TradeOrderMapper tradeOrderMapper; 87 private TradeOrderMapper tradeOrderMapper;
90 @Resource 88 @Resource
@@ -373,6 +371,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -373,6 +371,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
373 MapUtil.<String, Object>builder().put("expressName", express != null ? express.getName() : "") 371 MapUtil.<String, Object>builder().put("expressName", express != null ? express.getName() : "")
374 .put("logisticsNo", express != null ? deliveryReqVO.getLogisticsNo() : "").build()); 372 .put("logisticsNo", express != null ? deliveryReqVO.getLogisticsNo() : "").build());
375 373
  374 + // TODO @puhui999:可以改成 4.1 4.2。因为都算通知哈;
376 // 4. 发送站内信 375 // 4. 发送站内信
377 tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO() 376 tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO()
378 .setOrderId(order.getId()).setUserId(order.getUserId()).setMessage(null)); 377 .setOrderId(order.getId()).setUserId(order.getUserId()).setMessage(null));
@@ -384,8 +383,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -384,8 +383,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
384 public void sendDeliveryOrderMessage(TradeOrderDO order, TradeOrderDeliveryReqVO deliveryReqVO) { 383 public void sendDeliveryOrderMessage(TradeOrderDO order, TradeOrderDeliveryReqVO deliveryReqVO) {
385 // 构建并发送模版消息 384 // 构建并发送模版消息
386 Long orderId = order.getId(); 385 Long orderId = order.getId();
387 - socialClientApi.sendWxaSubscribeMessage(new SocialWxaSubscribeMessageSendReqDTO().setPage(ORDER_DETAIL_PATH + "?id=" + orderId)  
388 - .setUserId(order.getUserId()).setUserType(UserTypeEnum.MEMBER.getValue()).setTemplateTitle(DELIVERY_ORDER) 386 + socialClientApi.sendWxaSubscribeMessage(new SocialWxaSubscribeMessageSendReqDTO()
  387 + .setUserId(order.getUserId()).setUserType(UserTypeEnum.MEMBER.getValue())
  388 + .setTemplateTitle(DELIVERY_ORDER)
  389 + .setPage("pages/order/detail?id=" + orderId) // 订单详情页
389 .addMessage("character_string3", String.valueOf(orderId)) // 订单编号 390 .addMessage("character_string3", String.valueOf(orderId)) // 订单编号
390 .addMessage("phrase6", TradeOrderStatusEnum.DELIVERED.getName()) // 订单状态 391 .addMessage("phrase6", TradeOrderStatusEnum.DELIVERED.getName()) // 订单状态
391 .addMessage("date4", LocalDateTimeUtil.formatNormal(LocalDateTime.now()))// 发货时间 392 .addMessage("date4", LocalDateTimeUtil.formatNormal(LocalDateTime.now()))// 发货时间
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationOrderHandler.java
@@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; @@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
10 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; 10 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
11 import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; 11 import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService;
12 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; 12 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService;
  13 +import org.springframework.context.annotation.Lazy;
13 import org.springframework.stereotype.Component; 14 import org.springframework.stereotype.Component;
14 15
15 import jakarta.annotation.Resource; 16 import jakarta.annotation.Resource;
@@ -28,11 +29,13 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_DELIV @@ -28,11 +29,13 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_DELIV
28 public class TradeCombinationOrderHandler implements TradeOrderHandler { 29 public class TradeCombinationOrderHandler implements TradeOrderHandler {
29 30
30 @Resource 31 @Resource
  32 + @Lazy // 延迟加载,避免循环依赖
31 private TradeOrderUpdateService orderUpdateService; 33 private TradeOrderUpdateService orderUpdateService;
32 @Resource 34 @Resource
33 private TradeOrderQueryService orderQueryService; 35 private TradeOrderQueryService orderQueryService;
34 36
35 @Resource 37 @Resource
  38 + @Lazy // 延迟加载,避免循环依赖
36 private CombinationRecordApi combinationRecordApi; 39 private CombinationRecordApi combinationRecordApi;
37 40
38 @Override 41 @Override
yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/enums/MessageTemplateConstants.java
@@ -10,6 +10,7 @@ public interface MessageTemplateConstants { @@ -10,6 +10,7 @@ public interface MessageTemplateConstants {
10 //======================= 小程序订阅消息 ======================= 10 //======================= 小程序订阅消息 =======================
11 11
12 String WALLET_RECHARGER_PAID = "充值成功通知"; 12 String WALLET_RECHARGER_PAID = "充值成功通知";
  13 + // TODO @puhui999:这个放在售后那。aftersale
13 String WALLET_RECHARGE_REFUNDED = "退款申请通知"; 14 String WALLET_RECHARGE_REFUNDED = "退款申请通知";
14 15
15 } 16 }
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java
@@ -59,8 +59,6 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { @@ -59,8 +59,6 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService {
59 59
60 private static final String WALLET_RECHARGE_ORDER_SUBJECT = "钱包余额充值"; 60 private static final String WALLET_RECHARGE_ORDER_SUBJECT = "钱包余额充值";
61 61
62 - public static final String WALLET_MONEY_PATH = "pages/user/wallet/money"; // 钱包详情页  
63 -  
64 @Resource 62 @Resource
65 private PayWalletRechargeMapper walletRechargeMapper; 63 private PayWalletRechargeMapper walletRechargeMapper;
66 @Resource 64 @Resource
@@ -148,8 +146,10 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { @@ -148,8 +146,10 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService {
148 // 1. 获得会员钱包信息 146 // 1. 获得会员钱包信息
149 PayWalletDO wallet = payWalletService.getWallet(walletRecharge.getWalletId()); 147 PayWalletDO wallet = payWalletService.getWallet(walletRecharge.getWalletId());
150 // 2. 构建并发送模版消息 148 // 2. 构建并发送模版消息
151 - socialClientApi.sendWxaSubscribeMessage(new SocialWxaSubscribeMessageSendReqDTO().setPage(WALLET_MONEY_PATH)  
152 - .setUserId(wallet.getUserId()).setUserType(wallet.getUserType()).setTemplateTitle(WALLET_RECHARGER_PAID) 149 + socialClientApi.sendWxaSubscribeMessage(new SocialWxaSubscribeMessageSendReqDTO()
  150 + .setUserId(wallet.getUserId()).setUserType(wallet.getUserType())
  151 + .setTemplateTitle(WALLET_RECHARGER_PAID)
  152 + .setPage("pages/user/wallet/money") // 钱包详情界面
153 .addMessage("character_string1", String.valueOf(payOrderId)) // 支付单编号 153 .addMessage("character_string1", String.valueOf(payOrderId)) // 支付单编号
154 .addMessage("amount2", fenToYuanStr(walletRecharge.getTotalPrice())) // 充值金额 154 .addMessage("amount2", fenToYuanStr(walletRecharge.getTotalPrice())) // 充值金额
155 .addMessage("time3", LocalDateTimeUtil.formatNormal(walletRecharge.getCreateTime())) // 充值时间 155 .addMessage("time3", LocalDateTimeUtil.formatNormal(walletRecharge.getCreateTime())) // 充值时间
@@ -229,8 +229,10 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { @@ -229,8 +229,10 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService {
229 PayWalletDO wallet = payWalletService.getWallet(walletId); 229 PayWalletDO wallet = payWalletService.getWallet(walletId);
230 // 2. 构建并发送模版消息 230 // 2. 构建并发送模版消息
231 String thing8 = PayRefundStatusEnum.isSuccess(payRefund.getStatus()) ? SUCCESS.getName() : FAILURE.getName(); 231 String thing8 = PayRefundStatusEnum.isSuccess(payRefund.getStatus()) ? SUCCESS.getName() : FAILURE.getName();
232 - socialClientApi.sendWxaSubscribeMessage(new SocialWxaSubscribeMessageSendReqDTO().setPage(WALLET_MONEY_PATH)  
233 - .setUserId(wallet.getUserId()).setUserType(wallet.getUserType()).setTemplateTitle(WALLET_RECHARGE_REFUNDED) 232 + socialClientApi.sendWxaSubscribeMessage(new SocialWxaSubscribeMessageSendReqDTO()
  233 + .setUserId(wallet.getUserId()).setUserType(wallet.getUserType())
  234 + .setTemplateTitle(WALLET_RECHARGE_REFUNDED)
  235 + .setPage("pages/user/wallet/money") // 钱包详情界面
234 .addMessage("character_string1", String.valueOf(payRefund.getId())) // 退款订单编号 236 .addMessage("character_string1", String.valueOf(payRefund.getId())) // 退款订单编号
235 .addMessage("time7", LocalDateTimeUtil.formatNormal(payRefund.getCreateTime())) // 申请时间 237 .addMessage("time7", LocalDateTimeUtil.formatNormal(payRefund.getCreateTime())) // 申请时间
236 .addMessage("amount3", fenToYuanStr(payRefund.getRefundPrice())) // 退款金额 238 .addMessage("amount3", fenToYuanStr(payRefund.getRefundPrice())) // 退款金额
yudao-server/src/main/resources/application-local.yaml
@@ -195,10 +195,12 @@ wx: @@ -195,10 +195,12 @@ wx:
195 miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档 195 miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
196 # appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的) 196 # appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
197 # secret: 333ae72f41552af1e998fe1f54e1584a 197 # secret: 333ae72f41552af1e998fe1f54e1584a
198 - appid: wx63c280fe3248a3e7 # wenhualian的接口测试号  
199 - secret: 6f270509224a7ae1296bbf1c8cb97aed 198 +# appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
  199 +# secret: 6f270509224a7ae1296bbf1c8cb97aed
200 # appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的) 200 # appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
201 # secret: 4a1a04e07f6a4a0751b39c3064a92c8b 201 # secret: 4a1a04e07f6a4a0751b39c3064a92c8b
  202 + appid: wx66186af0759f47c9 # 测试号(puhui 提供的)
  203 + secret: 3218bcbd112cbc614c7264ceb20144ac
202 config-storage: 204 config-storage:
203 type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取 205 type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
204 key-prefix: wa # Redis Key 的前缀 206 key-prefix: wa # Redis Key 的前缀