From 82fbaa4f250d85c1390b4fee00eadd767251c4b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=A6=8F=E8=B4=A2?= <1471584931@qq.com> Date: Mon, 3 Nov 2025 14:22:28 +0800 Subject: [PATCH] =?UTF-8?q?--=E6=B7=BB=E5=8A=A0=E6=93=8D=E4=BD=9C=E7=94=9F?= =?UTF-8?q?=E5=91=BD=E5=91=A8=E6=9C=9F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/controller/Testfrom3Controller.java | 39 +++++++++++- .../pictc/datalog/DataOperationListener.java | 11 +++- .../datalog/service/DatalogService.java | 15 +++++ .../service/impl/DatalogServiceImpl.java | 60 ++++++++++++++++++- 4 files changed, 118 insertions(+), 7 deletions(-) diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java index e4f1960..615d490 100644 --- a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java @@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.pictc.datalog.DataOperationContent; +import com.pictc.datalog.DataOperationListener; import com.xjrsoft.common.constant.GlobalConstant; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.xjrsoft.common.page.ConventPage; @@ -29,8 +31,9 @@ import com.xjrsoft.module.dev.dto.Testfrom3PageDto; import com.xjrsoft.module.dev.entity.Testfrom3; import com.xjrsoft.module.dev.service.ITestfrom3Service; import com.xjrsoft.module.dev.vo.Testfrom3PageVo; - +import com.xjrsoft.module.common.db.utils.CommonCallUtils; import com.xjrsoft.module.datalog.service.DatalogService; +import com.xjrsoft.module.datalog.vo.OperationType; import com.xjrsoft.module.dev.vo.Testfrom3Vo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -135,7 +138,39 @@ public class Testfrom3Controller { @ApiOperation(value = "修改Testfrom3") @SaCheckPermission("testfrom3:edit") public R update(@Valid @RequestBody UpdateTestfrom3Dto dto){ - return R.ok(dataService.updateById(dto)); + return R.ok(dataService.updateById(dto,new DataOperationListener() { + + @Override + public UpdateTestfrom3Dto before(DataOperationContent content) { + if(content.getType()==OperationType.DELETE) { + CommonCallUtils.deleteBefore(content.getTableName(),content.getIdValue()); + }else if(content.getType()==OperationType.DISABLE){ + CommonCallUtils.disableBefore(content.getTableName(),content.getIdValue()); + }else if(content.getType()==OperationType.ENABLE){ + CommonCallUtils.enableBefore(content.getTableName(),content.getIdValue()); + } + return content.getObj(); + } + + @Override + public UpdateTestfrom3Dto after(DataOperationContent content) { + if(content.getType()==OperationType.INSERT || content.getType()==OperationType.UPDATE) { + CommonCallUtils.saveAfter(content.getTableName(),content.getIdValue()); + } + return content.getObj(); + } + + @Override + public void onError(DataOperationContent content) { + // TODO Auto-generated method stub + } + + @Override + public void onFinally(DataOperationContent content) { + // TODO Auto-generated method stub + } + + })); } diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/datalog/DataOperationListener.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/datalog/DataOperationListener.java index 109f30d..34c7aa5 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/datalog/DataOperationListener.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/datalog/DataOperationListener.java @@ -23,13 +23,18 @@ public interface DataOperationListener { /** - * @Description: TODO(这里用一句话描述这个方法的作用) + * @Description: 有异常时 * @param e * @return void 返回类型 */ - void onError(DataOperationContent content); + default void onError(DataOperationContent content) {} - void onFinally(DataOperationContent content); + /** + * @Description: 所有操作结束 + * @param content + * @return void 返回类型 + */ + default void onFinally(DataOperationContent content) {} } diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/DatalogService.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/DatalogService.java index f114174..5d6e281 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/DatalogService.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/DatalogService.java @@ -4,26 +4,41 @@ import java.util.List; import javax.validation.Valid; +import com.pictc.datalog.DataOperationListener; import com.xjrsoft.module.datalog.vo.DataChangeLogVo; public interface DatalogService { public T insert(T entity); + public T insert(T entity,DataOperationListener listener); + public List insertBatch(List entity); + public List insertBatch(List entity,DataOperationListener listener); + public boolean updateById(T entity); + public boolean updateById(T entity,DataOperationListener listener); + public T delete(T entity); public T deleteById(Class klazz,long id); + public T deleteById(Class klazz,long id,DataOperationListener listener); + public List findLogsByEntityId(Class klazz,long id); public boolean deleteByIds(Class class1, @Valid List ids); + + public boolean deleteByIds(Class class1, @Valid List ids,DataOperationListener listener); public boolean enable(Class class1, @Valid List ids); + + public boolean enable(Class class1, @Valid List ids,DataOperationListener listener); public boolean disable(Class class1, @Valid List ids); + + public boolean disable(Class class1, @Valid List ids,DataOperationListener listener); } diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/impl/DatalogServiceImpl.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/impl/DatalogServiceImpl.java index 9352f73..9fcfdec 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/impl/DatalogServiceImpl.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/xjrsoft/module/datalog/service/impl/DatalogServiceImpl.java @@ -7,12 +7,13 @@ import javax.validation.Valid; import org.apache.seata.spring.annotation.GlobalTransactional; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import com.google.api.client.util.Lists; +import com.pictc.datalog.DataOperationListener; import com.pictc.utils.DataLogTools; import com.xjrsoft.module.datalog.service.DatalogService; import com.xjrsoft.module.datalog.vo.DataChangeLogVo; + @Service public class DatalogServiceImpl implements DatalogService{ @@ -23,6 +24,13 @@ public class DatalogServiceImpl implements DatalogService{ return DataLogTools.insert(entity); } + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public T insert(T entity, DataOperationListener listener) { + return DataLogTools.insert(entity,listener); + } + @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @Override @@ -34,6 +42,17 @@ public class DatalogServiceImpl implements DatalogService{ return res; } + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public List insertBatch(List entitys, DataOperationListener listener) { + List res = Lists.newArrayList(); + for (T entity : entitys) { + res.add(DataLogTools.insert(entity,listener)); + } + return res; + } + @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @Override @@ -41,6 +60,14 @@ public class DatalogServiceImpl implements DatalogService{ DataLogTools.update(entity); return true; } + + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public boolean updateById(T entity, DataOperationListener listener) { + DataLogTools.update(entity,listener); + return true; + } @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @@ -48,6 +75,7 @@ public class DatalogServiceImpl implements DatalogService{ public T delete(T entity) { return DataLogTools.delete(entity); } + @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @@ -56,6 +84,14 @@ public class DatalogServiceImpl implements DatalogService{ return DataLogTools.deleteById(klazz, id); } + + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public T deleteById(Class klazz, long id, DataOperationListener listener) { + return DataLogTools.deleteById(klazz,id,listener); + } + @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @Override @@ -63,6 +99,13 @@ public class DatalogServiceImpl implements DatalogService{ return DataLogTools.deleteByIds(klazz, ids); } + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public boolean deleteByIds(Class klazz, @Valid List ids, DataOperationListener listener) { + return DataLogTools.deleteByIds(klazz,ids,listener); + } + @Transactional(readOnly = true) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @Override @@ -70,12 +113,20 @@ public class DatalogServiceImpl implements DatalogService{ return DataLogTools.findLogsByEntityId(klazz, dataId); } + @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @Override public boolean enable(Class klazz, @Valid List ids) { return DataLogTools.enable(klazz, ids); } + + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public boolean enable(Class klazz, @Valid List ids, DataOperationListener listener) { + return DataLogTools.enable(klazz,ids,listener); + } @Transactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 @@ -84,7 +135,12 @@ public class DatalogServiceImpl implements DatalogService{ return DataLogTools.disable(klazz, ids); } - + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解 + @Override + public boolean disable(Class klazz, @Valid List ids, DataOperationListener listener) { + return DataLogTools.disable(klazz,ids,listener); + }