mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-10 20:57:14 +08:00
refactor: 优化代码生成配置相关表名、 API 地址及相关描述
1、列映射表重命名为字段配置表
This commit is contained in:
@@ -16,13 +16,29 @@
|
||||
|
||||
package top.charles7c.cnadmin.tool.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseMapper;
|
||||
import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.FieldConfigDO;
|
||||
|
||||
/**
|
||||
* 列映射 Mapper
|
||||
* 字段配置 Mapper
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2023/4/12 23:56
|
||||
*/
|
||||
public interface ColumnMappingMapper extends BaseMapper<ColumnMappingDO> {}
|
||||
public interface FieldConfigMapper extends BaseMapper<FieldConfigDO> {
|
||||
|
||||
/**
|
||||
* 根据表名称查询
|
||||
*
|
||||
* @param tableName
|
||||
* 表名称
|
||||
* @return 字段配置信息
|
||||
*/
|
||||
@Select("SELECT * FROM `gen_field_config` WHERE `table_name` = #{tableName}")
|
||||
List<FieldConfigDO> selectListByTableName(@Param("tableName") String tableName);
|
||||
}
|
@@ -42,17 +42,17 @@ import top.charles7c.cnadmin.common.enums.QueryTypeEnum;
|
||||
import top.charles7c.cnadmin.tool.enums.FormTypeEnum;
|
||||
|
||||
/**
|
||||
* 列映射实体
|
||||
* 字段配置实体
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2023/4/12 20:21
|
||||
*/
|
||||
@Data
|
||||
@TableName("gen_column_mapping")
|
||||
@TableName("gen_field_config")
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@Schema(description = "列映射信息")
|
||||
public class ColumnMappingDO implements Serializable {
|
||||
@Schema(description = "字段配置信息")
|
||||
public class FieldConfigDO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -140,7 +140,7 @@ public class ColumnMappingDO implements Serializable {
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
public ColumnMappingDO(@NonNull Column column) {
|
||||
public FieldConfigDO(@NonNull Column column) {
|
||||
String columnType = StrUtil.splitToArray(column.getTypeName(), StringConsts.SPACE)[0].toLowerCase();
|
||||
boolean isRequired = !column.isPk() && !column.isNullable();
|
||||
this.tableName = column.getTableName();
|
||||
@@ -150,13 +150,13 @@ public class ColumnMappingDO implements Serializable {
|
||||
this.setQueryType("String".equals(this.getFieldType()) ? QueryTypeEnum.INNER_LIKE : QueryTypeEnum.EQUAL);
|
||||
}
|
||||
|
||||
public ColumnMappingDO setColumnName(String columnName) {
|
||||
public FieldConfigDO setColumnName(String columnName) {
|
||||
this.columnName = columnName;
|
||||
this.fieldName = StrUtil.toCamelCase(this.columnName);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ColumnMappingDO setColumnType(String columnType) {
|
||||
public FieldConfigDO setColumnType(String columnType) {
|
||||
this.columnType = columnType;
|
||||
Props generatorProp = PropsUtil.get("generator");
|
||||
this.fieldType = generatorProp.getStr(columnType);
|
@@ -27,7 +27,7 @@ import lombok.Data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.FieldConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.GenConfigDO;
|
||||
|
||||
/**
|
||||
@@ -43,16 +43,16 @@ public class GenConfigRequest implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 列映射信息列表
|
||||
* 字段配置
|
||||
*/
|
||||
@Schema(description = "列映射信息列表")
|
||||
@NotEmpty(message = "列映射信息不能为空")
|
||||
private List<ColumnMappingDO> columnMappings = new ArrayList<>();
|
||||
@Schema(description = "字段配置")
|
||||
@NotEmpty(message = "字段配置不能为空")
|
||||
private List<FieldConfigDO> fieldConfigs = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 生成配置信息
|
||||
* 生成配置
|
||||
*/
|
||||
@Schema(description = "生成配置信息")
|
||||
@NotNull(message = "生成配置信息不能为空")
|
||||
@Schema(description = "生成配置")
|
||||
@NotNull(message = "生成配置不能为空")
|
||||
private GenConfigDO genConfig;
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.FieldConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.GenConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.query.TableQuery;
|
||||
import top.charles7c.cnadmin.tool.model.request.GenConfigRequest;
|
||||
@@ -60,15 +60,15 @@ public interface GeneratorService {
|
||||
GenConfigDO getGenConfig(String tableName) throws SQLException;
|
||||
|
||||
/**
|
||||
* 查询列映射信息列表
|
||||
* 查询字段配置列表
|
||||
*
|
||||
* @param tableName
|
||||
* 表名称
|
||||
* @param requireSync
|
||||
* 是否需要同步
|
||||
* @return 列映射信息列表
|
||||
* @return 字段配置列表
|
||||
*/
|
||||
List<ColumnMappingDO> listColumnMapping(String tableName, Boolean requireSync);
|
||||
List<FieldConfigDO> listFieldConfig(String tableName, Boolean requireSync);
|
||||
|
||||
/**
|
||||
* 保存代码生成配置信息
|
||||
|
@@ -44,9 +44,9 @@ import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.tool.config.properties.GeneratorProperties;
|
||||
import top.charles7c.cnadmin.tool.mapper.ColumnMappingMapper;
|
||||
import top.charles7c.cnadmin.tool.mapper.FieldConfigMapper;
|
||||
import top.charles7c.cnadmin.tool.mapper.GenConfigMapper;
|
||||
import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.FieldConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.GenConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.query.TableQuery;
|
||||
import top.charles7c.cnadmin.tool.model.request.GenConfigRequest;
|
||||
@@ -68,7 +68,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
|
||||
private final DataSource dataSource;
|
||||
private final GeneratorProperties generatorProperties;
|
||||
private final ColumnMappingMapper columnMappingMapper;
|
||||
private final FieldConfigMapper fieldConfigMapper;
|
||||
private final GenConfigMapper genConfigMapper;
|
||||
|
||||
@Override
|
||||
@@ -113,67 +113,65 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ColumnMappingDO> listColumnMapping(String tableName, Boolean requireSync) {
|
||||
List<ColumnMappingDO> columnMappingList = columnMappingMapper
|
||||
.selectList(Wrappers.lambdaQuery(ColumnMappingDO.class).eq(ColumnMappingDO::getTableName, tableName));
|
||||
if (CollUtil.isEmpty(columnMappingList)) {
|
||||
public List<FieldConfigDO> listFieldConfig(String tableName, Boolean requireSync) {
|
||||
List<FieldConfigDO> fieldConfigList = fieldConfigMapper.selectListByTableName(tableName);
|
||||
if (CollUtil.isEmpty(fieldConfigList)) {
|
||||
Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName);
|
||||
return columnList.stream().map(ColumnMappingDO::new).collect(Collectors.toList());
|
||||
return columnList.stream().map(FieldConfigDO::new).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 同步最新数据表列信息
|
||||
if (requireSync) {
|
||||
Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName);
|
||||
// 移除已不存在的列映射信息
|
||||
// 移除已不存在的字段配置
|
||||
List<String> columnNameList = columnList.stream().map(Column::getName).collect(Collectors.toList());
|
||||
columnMappingList.removeIf(column -> !columnNameList.contains(column.getColumnName()));
|
||||
// 新增或更新列映射信息
|
||||
Map<String, ColumnMappingDO> columnMappingMap = columnMappingList.stream()
|
||||
.collect(Collectors.toMap(ColumnMappingDO::getColumnName, Function.identity(), (key1, key2) -> key2));
|
||||
fieldConfigList.removeIf(column -> !columnNameList.contains(column.getColumnName()));
|
||||
// 新增或更新字段配置
|
||||
Map<String, FieldConfigDO> fieldConfigMap = fieldConfigList.stream()
|
||||
.collect(Collectors.toMap(FieldConfigDO::getColumnName, Function.identity(), (key1, key2) -> key2));
|
||||
for (Column column : columnList) {
|
||||
ColumnMappingDO columnMapping = columnMappingMap.get(column.getName());
|
||||
if (null != columnMapping) {
|
||||
// 更新已有列映射信息
|
||||
FieldConfigDO fieldConfig = fieldConfigMap.get(column.getName());
|
||||
if (null != fieldConfig) {
|
||||
// 更新已有字段配置
|
||||
String columnType = StrUtil.splitToArray(column.getTypeName(), StringConsts.SPACE)[0].toLowerCase();
|
||||
columnMapping.setColumnType(columnType).setComment(column.getComment());
|
||||
fieldConfig.setColumnType(columnType).setComment(column.getComment());
|
||||
} else {
|
||||
// 新增列映射信息
|
||||
columnMapping = new ColumnMappingDO(column);
|
||||
columnMappingList.add(columnMapping);
|
||||
// 新增字段配置
|
||||
fieldConfig = new FieldConfigDO(column);
|
||||
fieldConfigList.add(fieldConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
return columnMappingList;
|
||||
return fieldConfigList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveConfig(GenConfigRequest request, String tableName) {
|
||||
// 保存列映射信息
|
||||
columnMappingMapper
|
||||
.delete(Wrappers.lambdaQuery(ColumnMappingDO.class).eq(ColumnMappingDO::getTableName, tableName));
|
||||
List<ColumnMappingDO> columnMappingList = request.getColumnMappings();
|
||||
for (ColumnMappingDO columnMapping : columnMappingList) {
|
||||
if (columnMapping.getShowInForm()) {
|
||||
CheckUtils.throwIfNull(columnMapping.getFormType(), "字段 [{}] 的表单类型不能为空", columnMapping.getFieldName());
|
||||
// 保存字段配置
|
||||
fieldConfigMapper.delete(Wrappers.lambdaQuery(FieldConfigDO.class).eq(FieldConfigDO::getTableName, tableName));
|
||||
List<FieldConfigDO> fieldConfigList = request.getFieldConfigs();
|
||||
for (FieldConfigDO fieldConfig : fieldConfigList) {
|
||||
if (fieldConfig.getShowInForm()) {
|
||||
CheckUtils.throwIfNull(fieldConfig.getFormType(), "字段 [{}] 的表单类型不能为空", fieldConfig.getFieldName());
|
||||
} else {
|
||||
// 在表单中不显示,不需要设置必填
|
||||
columnMapping.setIsRequired(false);
|
||||
fieldConfig.setIsRequired(false);
|
||||
}
|
||||
if (columnMapping.getShowInQuery()) {
|
||||
CheckUtils.throwIfNull(columnMapping.getFormType(), "字段 [{}] 的表单类型不能为空", columnMapping.getFieldName());
|
||||
CheckUtils.throwIfNull(columnMapping.getQueryType(), "字段 [{}] 的查询方式不能为空", columnMapping.getFieldName());
|
||||
if (fieldConfig.getShowInQuery()) {
|
||||
CheckUtils.throwIfNull(fieldConfig.getFormType(), "字段 [{}] 的表单类型不能为空", fieldConfig.getFieldName());
|
||||
CheckUtils.throwIfNull(fieldConfig.getQueryType(), "字段 [{}] 的查询方式不能为空", fieldConfig.getFieldName());
|
||||
} else {
|
||||
// 在查询中不显示,不需要设置查询方式
|
||||
columnMapping.setQueryType(null);
|
||||
fieldConfig.setQueryType(null);
|
||||
}
|
||||
// 既不在表单也不在查询中显示,不需要设置表单类型
|
||||
if (!columnMapping.getShowInForm() && !columnMapping.getShowInQuery()) {
|
||||
columnMapping.setFormType(null);
|
||||
if (!fieldConfig.getShowInForm() && !fieldConfig.getShowInQuery()) {
|
||||
fieldConfig.setFormType(null);
|
||||
}
|
||||
columnMapping.setTableName(tableName);
|
||||
fieldConfig.setTableName(tableName);
|
||||
}
|
||||
columnMappingMapper.insertBatch(columnMappingList);
|
||||
fieldConfigMapper.insertBatch(fieldConfigList);
|
||||
|
||||
// 保存或更新生成配置信息
|
||||
GenConfigDO newGenConfig = request.getGenConfig();
|
||||
|
Reference in New Issue
Block a user