Commit 70514a0ac2779ca31708fa5d6f3b94665e32489c

Authored by yuzhengwei
1 parent b024c716

fix:同一个类中:A方法(无事务)调B方法(有事务),事务不生效问题

yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/notify/PayNotifyServiceImpl.java
@@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
8 import cn.iocoder.yudao.framework.common.util.date.DateUtils; 8 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
9 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; 9 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
10 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 10 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
  11 +import cn.iocoder.yudao.framework.common.util.spring.SpringAopUtils;
11 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; 12 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
12 import cn.iocoder.yudao.module.pay.dal.dataobject.notify.PayNotifyLogDO; 13 import cn.iocoder.yudao.module.pay.dal.dataobject.notify.PayNotifyLogDO;
13 import cn.iocoder.yudao.module.pay.dal.dataobject.notify.PayNotifyTaskDO; 14 import cn.iocoder.yudao.module.pay.dal.dataobject.notify.PayNotifyTaskDO;
@@ -24,11 +25,13 @@ import cn.iocoder.yudao.module.pay.api.notify.dto.PayRefundNotifyReqDTO; @@ -24,11 +25,13 @@ import cn.iocoder.yudao.module.pay.api.notify.dto.PayRefundNotifyReqDTO;
24 import cn.iocoder.yudao.module.pay.service.order.PayOrderService; 25 import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
25 import cn.iocoder.yudao.module.pay.service.refund.PayRefundService; 26 import cn.iocoder.yudao.module.pay.service.refund.PayRefundService;
26 import lombok.extern.slf4j.Slf4j; 27 import lombok.extern.slf4j.Slf4j;
  28 +import org.springframework.context.ApplicationContext;
27 import org.springframework.context.annotation.Lazy; 29 import org.springframework.context.annotation.Lazy;
28 import org.springframework.scheduling.annotation.Async; 30 import org.springframework.scheduling.annotation.Async;
29 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 31 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
30 import org.springframework.stereotype.Service; 32 import org.springframework.stereotype.Service;
31 import org.springframework.transaction.annotation.Transactional; 33 import org.springframework.transaction.annotation.Transactional;
  34 +import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
32 35
33 import javax.annotation.Resource; 36 import javax.annotation.Resource;
34 import javax.validation.Valid; 37 import javax.validation.Valid;
@@ -85,6 +88,9 @@ public class PayNotifyServiceImpl implements PayNotifyService { @@ -85,6 +88,9 @@ public class PayNotifyServiceImpl implements PayNotifyService {
85 @Lazy // 循环依赖(自己依赖自己),避免报错 88 @Lazy // 循环依赖(自己依赖自己),避免报错
86 private PayNotifyServiceImpl self; 89 private PayNotifyServiceImpl self;
87 90
  91 + @Resource
  92 + private ApplicationContext applicationContext;
  93 +
88 @Override 94 @Override
89 public void createPayNotifyTask(PayNotifyTaskCreateReqDTO reqDTO) { 95 public void createPayNotifyTask(PayNotifyTaskCreateReqDTO reqDTO) {
90 PayNotifyTaskDO task = new PayNotifyTaskDO(); 96 PayNotifyTaskDO task = new PayNotifyTaskDO();
@@ -178,7 +184,7 @@ public class PayNotifyServiceImpl implements PayNotifyService { @@ -178,7 +184,7 @@ public class PayNotifyServiceImpl implements PayNotifyService {
178 } 184 }
179 185
180 // 执行通知 186 // 执行通知
181 - executeNotify(dbTask); 187 + applicationContext.getBean(PayNotifyServiceImpl.class).executeNotify(dbTask);
182 }); 188 });
183 } 189 }
184 190