AOP处理事务

This commit is contained in:
Wang.Huan
2025-03-04 09:29:31 +08:00
parent 313041483b
commit a430f9157e
4 changed files with 51 additions and 4 deletions

View File

@@ -0,0 +1,51 @@
package com.core.framework.aspectj;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
@Aspect
@Component
public class TransactionAspect {
private final PlatformTransactionManager transactionManager;
private TransactionStatus transactionStatus;
public TransactionAspect(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
@Before("@annotation(org.springframework.web.bind.annotation.PostMapping) || " +
"@annotation(org.springframework.web.bind.annotation.GetMapping) || " +
"@annotation(org.springframework.web.bind.annotation.PutMapping) || " +
"@annotation(org.springframework.web.bind.annotation.DeleteMapping)")
public void beginTransaction() {
transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
}
@AfterReturning("@annotation(org.springframework.web.bind.annotation.PostMapping) || " +
"@annotation(org.springframework.web.bind.annotation.GetMapping) || " +
"@annotation(org.springframework.web.bind.annotation.PutMapping) || " +
"@annotation(org.springframework.web.bind.annotation.DeleteMapping)")
public void commitTransaction() {
if (transactionStatus != null && !transactionStatus.isCompleted()) {
transactionManager.commit(transactionStatus);
}
}
@AfterThrowing(pointcut = "@annotation(org.springframework.web.bind.annotation.PostMapping) || " +
"@annotation(org.springframework.web.bind.annotation.GetMapping) || " +
"@annotation(org.springframework.web.bind.annotation.PutMapping) || " +
"@annotation(org.springframework.web.bind.annotation.DeleteMapping)",
throwing = "ex")
public void rollbackTransaction(Exception ex) {
if (transactionStatus != null && !transactionStatus.isCompleted()) {
transactionManager.rollback(transactionStatus);
}
}
}

View File

@@ -73,7 +73,6 @@ public class HealthcareServiceController {
* 服务管理 新增 * 服务管理 新增
*/ */
@PostMapping(value = "/healthcare-service") @PostMapping(value = "/healthcare-service")
@Transactional(rollbackFor = Exception.class)
public R<?> add(@Validated @RequestBody HealthcareServiceAddOrUpdateParam healthcareServiceAddOrUpdateParam) { public R<?> add(@Validated @RequestBody HealthcareServiceAddOrUpdateParam healthcareServiceAddOrUpdateParam) {
// 服务管理-表单数据 // 服务管理-表单数据
HealthcareService healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData(); HealthcareService healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData();
@@ -137,7 +136,6 @@ public class HealthcareServiceController {
* @return 删除结果 * @return 删除结果
*/ */
@DeleteMapping(value = "/healthcare-service") @DeleteMapping(value = "/healthcare-service")
@Transactional(rollbackFor = Exception.class)
public R<?> delete(@RequestParam Long id) { public R<?> delete(@RequestParam Long id) {
boolean res = iHealthcareServiceService.removeById(id); boolean res = iHealthcareServiceService.removeById(id);
// 同时删除非同定价 // 同时删除非同定价

View File

@@ -86,7 +86,6 @@ public class ChargeItemDefinitionServiceImpl extends ServiceImpl<ChargeItemDefin
* @return 新增结果 * @return 新增结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean addChargeItemDefinitionByHealthcareService(HealthcareService healthcareService, ChargeItemDefinition chargeItemDefinition) { public boolean addChargeItemDefinitionByHealthcareService(HealthcareService healthcareService, ChargeItemDefinition chargeItemDefinition) {
// 服务管理主键id // 服务管理主键id
if (healthcareService.getId() != null) { if (healthcareService.getId() != null) {

View File

@@ -24,7 +24,6 @@ public class HealthcareServiceServiceImpl extends ServiceImpl<HealthcareServiceM
* @return 入库后信息 * @return 入库后信息
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public HealthcareService addHealthcareService(HealthcareService healthcareService) { public HealthcareService addHealthcareService(HealthcareService healthcareService) {
baseMapper.insert(healthcareService); baseMapper.insert(healthcareService);
return healthcareService; return healthcareService;