Commit 2b65ecb9 by xlx

refactor(system): 重构应用管理实体和数据填充配置

- 移除BasicApp和BasicAppViewVO中的EqualsAndHashCode注解
- 为BasicApp和BasicAppViewVO添加serialVersionUID字段
- 在BasicAppController的save方法中添加空行以改善代码格式
- 更新BasicAppConvertor配置,添加Spring组件模型和忽略未映射策略
- 创建DataFillHandler数据填充处理器实现自动填充创建和更新信息
- 调整logback配置,将日志输出目标从文件改为控制台
- 移除旧的MyBatis Plus配置类并创建新的配置类
- 在matchtech-common-core模块中调整lombok依赖位置和版本
- 添加lombok-mapstruct-binding依赖以支持lombok和mapstruct集成
- 升级mapstruct版本从1.5.3.Final到1.6.3
parent a7cdce49
......@@ -108,11 +108,6 @@
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
......@@ -123,6 +118,11 @@
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
......@@ -133,6 +133,13 @@
<version>${mapstruct.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-mapstruct-binding -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.matchtech</groupId>-->
<!-- <artifactId>matchtech-common-dto</artifactId>-->
......
package com.matchtech.common.datasource.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
/**
* MyBatis Plus 配置类 - 针对Oracle数据库
*
* @author matchtech
*/
@Configuration
public class MyBatisPlusConfig {
/**
* MyBatis Plus 拦截器配置
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件 - Oracle
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
// 乐观锁插件
// interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
// 性能监控插件(生产环境建议关闭)
// interceptor.addInnerInterceptor(new PerformanceInterceptor());
return interceptor;
}
/**
* 元数据处理器
*/
@Configuration
public static class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
}
}
\ No newline at end of file
package com.matchtech.common.mybatis.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.matchtech.common.dto.login.SysUserDetailVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@Slf4j
public class DataFillHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
SysUserDetailVo currentUser = getCurrentUser();
Date date = new Date();
this.strictInsertFill(metaObject, "createTime", Date.class, date);
this.strictInsertFill(metaObject, "updateTime", Date.class, date);
this.strictInsertFill(metaObject, "createUser", String.class, currentUser.getName());
this.strictInsertFill(metaObject, "updateUser", String.class, currentUser.getName());
this.strictInsertFill(metaObject, "createUserId", String.class, currentUser.getId());
this.strictInsertFill(metaObject, "updateUserId", String.class, currentUser.getId());
this.setFieldValByName("isDelete", "0", metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
SysUserDetailVo currentUser = getCurrentUser();
this.setFieldValByName( "updateTime", new Date(),metaObject);
this.setFieldValByName("updateUser", currentUser.getName(),metaObject);
this.setFieldValByName("updateUserId", currentUser.getId(),metaObject);
}
private SysUserDetailVo getCurrentUser() {
SysUserDetailVo sysUserEntity = new SysUserDetailVo();
sysUserEntity.setName("sys");
sysUserEntity.setId("1");
try {
// sysUserEntity = UserUtil.getUser();
} catch (Exception e) {
sysUserEntity = new SysUserDetailVo();
sysUserEntity.setLoginName("sys");
}
return sysUserEntity;
}
}
package com.matchtech.common.mybatis.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.matchtech.common.core.config.MatchtechProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Autowired
private MatchtechProperties matchtechProperties;
/**
* 新多租户插件配置,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor =
* false 避免缓存万一出现问题
*/
protected Logger logger = LoggerFactory.getLogger(getClass());
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// interceptor.addInnerInterceptor(new EnhancedUpperCaseFuzzySearchInterceptor());
// interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
// @Override
// public Expression getTenantId() {
// return new StringValue(null == MyThreadLocal.getTenantId() ? "1" : MyThreadLocal.getTenantId());
// }
//
// //返回 false 表示所有表都需要拼多租户条件
// @Override
// public boolean ignoreTable(String tableName) {
// if ("false".equals(matchtechProperties.getTenant().get("isopen").get(0))) {
// return true;
// }
// matchtechProperties.getTenant().get("isopen").get(0);
// return matchtechProperties.getTenant().get("excludetable").contains(tableName);// !"sys_user".equalsIgnoreCase(tableName);
// }
// }));
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
// 如果用了分页插件注意先 add TenantLineInnerInterceptor 再 add PaginationInnerInterceptor
// 用了分页插件必须设置 MybatisConfiguration#useDeprecatedExecutor = false
return interceptor;
}
}
......@@ -53,6 +53,7 @@ public class BasicAppController extends BaseController {
@Operation(summary = "应用管理保存")
public ApiResponseEntity<BasicAppViewVO> save(@RequestBody BasicAppViewVO req) {
basicAppService.edit(req);
return ApiResponseEntity.success();
}
}
......
......@@ -7,12 +7,17 @@ import com.matchtech.system.domain.vo.BasicAppViewVO;
import com.matchtech.system.entity.BasicApp;
import com.matchtech.system.entity.SysUserEntity;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
/**
* @author lixl
*/
@Mapper
@Mapper(
componentModel = "spring", // 如果使用 Spring
unmappedTargetPolicy = ReportingPolicy.IGNORE,
unmappedSourcePolicy = ReportingPolicy.IGNORE
)
public interface BasicAppConvertor {
BasicAppConvertor INSTANCE = Mappers.getMapper(BasicAppConvertor.class);
......
......@@ -13,10 +13,9 @@ import java.util.List;
* @author lixl
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(title="BasicAppViewVO", description="应用管理详情VO")
public class BasicAppViewVO extends BaseDTO {
private static final long serialVersionUID = 1L;
@Schema(description = "应用名称")
private String code;
......
......@@ -16,11 +16,10 @@ import lombok.EqualsAndHashCode;
* @since 2026-01-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("BASIC_APP")
@Schema(title="BasicApp对象", description="应用管理")
public class BasicApp extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "应用名称")
@TableField("CODE")
private String code;
......
......@@ -68,7 +68,7 @@
<!--系统操作日志-->
<root level="debug">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
<appender-ref ref="console" />
<appender-ref ref="console" />
</root>
</configuration>
\ No newline at end of file
......@@ -34,7 +34,7 @@
<dynamic-ds.version>4.1.3</dynamic-ds.version>
<!-- 开发工具和工具类版本 -->
<mapstruct.version>1.5.3.Final</mapstruct.version>
<mapstruct.version>1.6.3</mapstruct.version>
<knife4j.version>4.5.0</knife4j.version>
<!-- 其他工具版本 -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment