--添加操作生命周期接口

This commit is contained in:
2025-11-03 14:22:28 +08:00
parent ebde33b225
commit 82fbaa4f25
4 changed files with 118 additions and 7 deletions

View File

@ -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<UpdateTestfrom3Dto>() {
@Override
public UpdateTestfrom3Dto before(DataOperationContent<UpdateTestfrom3Dto> 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<UpdateTestfrom3Dto> content) {
if(content.getType()==OperationType.INSERT || content.getType()==OperationType.UPDATE) {
CommonCallUtils.saveAfter(content.getTableName(),content.getIdValue());
}
return content.getObj();
}
@Override
public void onError(DataOperationContent<UpdateTestfrom3Dto> content) {
// TODO Auto-generated method stub
}
@Override
public void onFinally(DataOperationContent<UpdateTestfrom3Dto> content) {
// TODO Auto-generated method stub
}
}));
}

View File

@ -23,13 +23,18 @@ public interface DataOperationListener<T> {
/**
* @Description: TODO(这里用一句话描述这个方法的作用)
* @Description: 有异常时
* @param e
* @return void 返回类型
*/
void onError(DataOperationContent<T> content);
default void onError(DataOperationContent<T> content) {}
void onFinally(DataOperationContent<T> content);
/**
* @Description: 所有操作结束
* @param content
* @return void 返回类型
*/
default void onFinally(DataOperationContent<T> content) {}
}

View File

@ -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>T insert(T entity);
public <T>T insert(T entity,DataOperationListener<T> listener);
public <T>List<T> insertBatch(List<T> entity);
public <T>List<T> insertBatch(List<T> entity,DataOperationListener<T> listener);
public <T>boolean updateById(T entity);
public <T>boolean updateById(T entity,DataOperationListener<T> listener);
public <T>T delete(T entity);
public <T>T deleteById(Class<T> klazz,long id);
public <T>T deleteById(Class<T> klazz,long id,DataOperationListener<T> listener);
public <T>List<DataChangeLogVo> findLogsByEntityId(Class<T> klazz,long id);
public <T>boolean deleteByIds(Class<T> class1, @Valid List<Long> ids);
public <T>boolean deleteByIds(Class<T> class1, @Valid List<Long> ids,DataOperationListener<T> listener);
public <T>boolean enable(Class<T> class1, @Valid List<Long> ids);
public <T>boolean enable(Class<T> class1, @Valid List<Long> ids,DataOperationListener<T> listener);
public <T>boolean disable(Class<T> class1, @Valid List<Long> ids);
public <T>boolean disable(Class<T> class1, @Valid List<Long> ids,DataOperationListener<T> listener);
}

View File

@ -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> T insert(T entity, DataOperationListener<T> 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 <T> List<T> insertBatch(List<T> entitys, DataOperationListener<T> listener) {
List<T> 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
@ -42,6 +61,14 @@ public class DatalogServiceImpl implements DatalogService{
return true;
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
public <T> boolean updateById(T entity, DataOperationListener<T> listener) {
DataLogTools.update(entity,listener);
return true;
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
@ -49,6 +76,7 @@ public class DatalogServiceImpl implements DatalogService{
return DataLogTools.delete(entity);
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
@ -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> T deleteById(Class<T> klazz, long id, DataOperationListener<T> 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 <T> boolean deleteByIds(Class<T> klazz, @Valid List<Long> ids, DataOperationListener<T> listener) {
return DataLogTools.deleteByIds(klazz,ids,listener);
}
@Transactional(readOnly = true)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
@ -70,6 +113,7 @@ public class DatalogServiceImpl implements DatalogService{
return DataLogTools.findLogsByEntityId(klazz, dataId);
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
@ -77,6 +121,13 @@ public class DatalogServiceImpl implements DatalogService{
return DataLogTools.enable(klazz, ids);
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
public <T> boolean enable(Class<T> klazz, @Valid List<Long> ids, DataOperationListener<T> listener) {
return DataLogTools.enable(klazz,ids,listener);
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) // Seata全局事务注解
@Override
@ -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 <T> boolean disable(Class<T> klazz, @Valid List<Long> ids, DataOperationListener<T> listener) {
return DataLogTools.disable(klazz,ids,listener);
}