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); + }