mirror of
https://gitee.com/youlaitech/youlai-mall.git
synced 2024-12-23 05:00:25 +08:00
fix: 代码生成测试问题修复
This commit is contained in:
parent
688ed8d159
commit
b5930bfac5
@ -66,9 +66,9 @@ public class CodegenController {
|
||||
@GetMapping("/{tableName}/config")
|
||||
public Result<GenConfigForm> getGenConfigFormData(
|
||||
@Parameter(description = "表名", example = "sys_user") @PathVariable String tableName,
|
||||
@Parameter(description = "数据源", example = "youlai_system") @RequestParam String datasourceKey
|
||||
@Parameter(description = "数据源Key", example = "youlai_system") @RequestParam String dsKey
|
||||
) {
|
||||
GenConfigForm formData = genConfigService.getGenConfigFormData(tableName,datasourceKey);
|
||||
GenConfigForm formData = genConfigService.getGenConfigFormData(tableName,dsKey);
|
||||
return Result.success(formData);
|
||||
}
|
||||
|
||||
|
@ -25,9 +25,11 @@ public interface DatabaseMapper extends BaseMapper {
|
||||
|
||||
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
||||
|
||||
@DS("#datasourceKey")
|
||||
TableMetaData getTableMetadata(String tableName,String datasourceKey);
|
||||
|
||||
List<ColumnMetaData> getTableColumns(String tableName);
|
||||
@DS("#datasourceKey")
|
||||
List<ColumnMetaData> getTableColumns(String tableName,String datasourceKey);
|
||||
|
||||
|
||||
TableMetaData getTableMetadata(String tableName);
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
package com.youlai.codegen.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.common.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 代码生成基础配置
|
||||
*
|
||||
@ -14,7 +15,13 @@ import lombok.Setter;
|
||||
@TableName(value = "gen_config")
|
||||
@Getter
|
||||
@Setter
|
||||
public class GenConfig extends BaseEntity {
|
||||
public class GenConfig {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
@ -50,4 +57,17 @@ public class GenConfig extends BaseEntity {
|
||||
* 作者
|
||||
*/
|
||||
private String author;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
@ -1,14 +1,14 @@
|
||||
package com.youlai.codegen.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.youlai.common.base.BaseEntity;
|
||||
import com.youlai.codegen.enums.FormTypeEnum;
|
||||
import com.youlai.codegen.enums.QueryTypeEnum;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 字段生成配置实体
|
||||
*
|
||||
@ -18,7 +18,13 @@ import lombok.Setter;
|
||||
@TableName(value = "gen_field_config")
|
||||
@Getter
|
||||
@Setter
|
||||
public class GenFieldConfig extends BaseEntity {
|
||||
public class GenFieldConfig {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
|
||||
/**
|
||||
@ -102,4 +108,17 @@ public class GenFieldConfig extends BaseEntity {
|
||||
* 字典类型
|
||||
*/
|
||||
private String dictType;
|
||||
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
}
|
@ -19,11 +19,11 @@ import java.util.List;
|
||||
@Setter
|
||||
public class TablePageQuery extends BasePageQuery {
|
||||
|
||||
@Schema(description="关键字(表名)")
|
||||
@Schema(description="关键字(表名)",example = "sys_user")
|
||||
private String keywords;
|
||||
|
||||
@Schema(description="数据源Key")
|
||||
private String datasourceKey;
|
||||
@Schema(description="数据源Key",example = "master")
|
||||
private String dsKey;
|
||||
|
||||
/**
|
||||
* 排除的表名
|
||||
|
@ -133,9 +133,9 @@ public class CodegenServiceImpl implements CodegenService {
|
||||
previewVO.setFileName(fileName);
|
||||
|
||||
/* 2. 生成文件路径 */
|
||||
// 包名:com.youlai.boot
|
||||
// 包名:com.youlai.mall
|
||||
String packageName = genConfig.getPackageName();
|
||||
// 模块名:system
|
||||
// 模块名:mall-order
|
||||
String moduleName = genConfig.getModuleName();
|
||||
// 子包名:controller
|
||||
String subpackageName = templateConfig.getSubpackageName();
|
||||
|
@ -32,7 +32,7 @@ public class DatabaseServiceImpl implements DatabaseService {
|
||||
* @return 分页结果
|
||||
*/
|
||||
@Override
|
||||
@DS("#queryParams.datasourceKey")
|
||||
@DS("#queryParams.dsKey")
|
||||
public Page<TablePageVO> getTablePage(TablePageQuery queryParams) {
|
||||
// 设置排除的表
|
||||
List<String> excludeTables = codegenProperties.getExcludeTables();
|
||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.common.core.exception.BusinessException;
|
||||
@ -66,9 +67,8 @@ public class GenConfigServiceImpl extends ServiceImpl<GenConfigMapper, GenConfig
|
||||
boolean hasGenConfig = genConfig != null;
|
||||
// 如果没有代码生成配置,则根据表的元数据生成默认配置
|
||||
if (genConfig == null) {
|
||||
TableMetaData tableMetadata = this.getTableMetadata(tableName, datasourceKey);
|
||||
TableMetaData tableMetadata = databaseMapper.getTableMetadata(tableName, datasourceKey);
|
||||
Assert.isTrue(tableMetadata != null, "未找到表元数据");
|
||||
|
||||
genConfig = new GenConfig();
|
||||
genConfig.setTableName(tableName);
|
||||
|
||||
@ -91,37 +91,46 @@ public class GenConfigServiceImpl extends ServiceImpl<GenConfigMapper, GenConfig
|
||||
List<GenFieldConfig> genFieldConfigs = new ArrayList<>();
|
||||
|
||||
// 获取表的列
|
||||
List<ColumnMetaData> tableColumns = this.getTableColumns(tableName, datasourceKey);
|
||||
List<ColumnMetaData> tableColumns = databaseMapper.getTableColumns(tableName, datasourceKey);
|
||||
if (CollectionUtil.isNotEmpty(tableColumns)) {
|
||||
// 查询字段生成配置
|
||||
List<GenFieldConfig> fieldConfigList = this.getGenFieldConfigs(tableName);
|
||||
Integer maxSort = fieldConfigList.stream()
|
||||
.map(GenFieldConfig::getFieldSort)
|
||||
.filter(Objects::nonNull)
|
||||
.max(Integer::compareTo)
|
||||
.orElse(0);
|
||||
for (ColumnMetaData tableColumn : tableColumns) {
|
||||
// 根据列名获取字段生成配置
|
||||
String columnName = tableColumn.getColumnName();
|
||||
GenFieldConfig fieldConfig = fieldConfigList.stream()
|
||||
.filter(item -> StrUtil.equals(item.getColumnName(), columnName))
|
||||
.findFirst()
|
||||
.orElseGet(() -> createDefaultFieldConfig(tableColumn));
|
||||
if (fieldConfig.getFieldSort() == null) {
|
||||
fieldConfig.setFieldSort(++maxSort);
|
||||
try {
|
||||
DynamicDataSourceContextHolder.push("master");
|
||||
// 查询字段生成配置
|
||||
List<GenFieldConfig> fieldConfigList = genFieldConfigService.list(new LambdaQueryWrapper<GenFieldConfig>()
|
||||
.eq(GenFieldConfig::getConfigId, genConfig.getId())
|
||||
.orderByAsc(GenFieldConfig::getFieldSort)
|
||||
);
|
||||
|
||||
Integer maxSort = fieldConfigList.stream()
|
||||
.map(GenFieldConfig::getFieldSort)
|
||||
.filter(Objects::nonNull)
|
||||
.max(Integer::compareTo)
|
||||
.orElse(0);
|
||||
for (ColumnMetaData tableColumn : tableColumns) {
|
||||
// 根据列名获取字段生成配置
|
||||
String columnName = tableColumn.getColumnName();
|
||||
GenFieldConfig fieldConfig = fieldConfigList.stream()
|
||||
.filter(item -> StrUtil.equals(item.getColumnName(), columnName))
|
||||
.findFirst()
|
||||
.orElseGet(() -> createDefaultFieldConfig(tableColumn));
|
||||
if (fieldConfig.getFieldSort() == null) {
|
||||
fieldConfig.setFieldSort(++maxSort);
|
||||
}
|
||||
// 根据列类型设置字段类型
|
||||
String fieldType = fieldConfig.getFieldType();
|
||||
if (StrUtil.isBlank(fieldType)) {
|
||||
String javaType = JavaTypeEnum.getJavaTypeByColumnType(fieldConfig.getColumnType());
|
||||
fieldConfig.setFieldType(javaType);
|
||||
}
|
||||
// 如果没有代码生成配置,则默认展示在列表和表单
|
||||
if (!hasGenConfig) {
|
||||
fieldConfig.setIsShowInList(1);
|
||||
fieldConfig.setIsShowInForm(1);
|
||||
}
|
||||
genFieldConfigs.add(fieldConfig);
|
||||
}
|
||||
// 根据列类型设置字段类型
|
||||
String fieldType = fieldConfig.getFieldType();
|
||||
if (StrUtil.isBlank(fieldType)) {
|
||||
String javaType = JavaTypeEnum.getJavaTypeByColumnType(fieldConfig.getColumnType());
|
||||
fieldConfig.setFieldType(javaType);
|
||||
}
|
||||
// 如果没有代码生成配置,则默认展示在列表和表单
|
||||
if (!hasGenConfig) {
|
||||
fieldConfig.setIsShowInList(1);
|
||||
fieldConfig.setIsShowInForm(1);
|
||||
}
|
||||
genFieldConfigs.add(fieldConfig);
|
||||
} finally {
|
||||
DynamicDataSourceContextHolder.poll();
|
||||
}
|
||||
}
|
||||
// 对genFieldConfigs按照fieldSort排序
|
||||
@ -135,30 +144,6 @@ public class GenConfigServiceImpl extends ServiceImpl<GenConfigMapper, GenConfig
|
||||
return genConfigForm;
|
||||
}
|
||||
|
||||
@DS("master")
|
||||
public List<GenFieldConfig> getGenFieldConfigs(String tableName) {
|
||||
GenConfig genConfig = this.getOne(new LambdaQueryWrapper<>(GenConfig.class)
|
||||
.eq(GenConfig::getTableName, tableName)
|
||||
);
|
||||
if (genConfig == null) {
|
||||
return null;
|
||||
}
|
||||
return genFieldConfigService.list(new LambdaQueryWrapper<GenFieldConfig>()
|
||||
.eq(GenFieldConfig::getConfigId, genConfig.getId())
|
||||
.orderByAsc(GenFieldConfig::getFieldSort)
|
||||
);
|
||||
}
|
||||
|
||||
@DS("#datasourceKey")
|
||||
public TableMetaData getTableMetadata(String tableName, String datasourceKey) {
|
||||
return databaseMapper.getTableMetadata(tableName);
|
||||
}
|
||||
|
||||
@DS("#datasourceKey")
|
||||
public List<ColumnMetaData> getTableColumns(String tableName, String datasourceKey) {
|
||||
return databaseMapper.getTableColumns(tableName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建默认字段配置
|
||||
*
|
||||
|
@ -27,7 +27,7 @@ spring:
|
||||
master:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://localhost:3306/youlai_generator?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
|
||||
url: jdbc:mysql://localhost:3306/youlai_codegen?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
|
||||
username: root
|
||||
password: 123456
|
||||
youlai_system: # 系统库
|
||||
|
@ -1,6 +1,3 @@
|
||||
server:
|
||||
port: 8810
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: youlai-codegen
|
||||
|
@ -24,8 +24,10 @@ public class RestTemplateConfig {
|
||||
@Bean
|
||||
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
|
||||
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
|
||||
factory.setReadTimeout(5000);//单位 ms
|
||||
factory.setConnectTimeout(5000);//单位 ms
|
||||
// 读取超时时间 5s
|
||||
factory.setReadTimeout(5000);
|
||||
// 连接超时时间 5s
|
||||
factory.setConnectTimeout(5000);
|
||||
return factory;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user