diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java index 24eeea21..46005636 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java @@ -61,5 +61,10 @@ public class GeneratorProperties { * 包名称 */ private String packageName; + + /** + * 排除字段 + */ + private String[] excludeFields; } } diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java index f0e633e7..37532d0f 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java @@ -18,7 +18,6 @@ package top.charles7c.cnadmin.tool.model.entity; import java.io.Serializable; import java.time.LocalDateTime; -import java.util.List; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -138,13 +137,6 @@ public class GenConfigDO implements Serializable { @TableField(exist = false) private String classNamePrefix; - /** - * 字段配置信息 - */ - @JsonIgnore - @TableField(exist = false) - private List fieldConfigs; - public GenConfigDO(String tableName) { this.tableName = tableName; } diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java index b88addd7..5f29fd31 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java @@ -40,7 +40,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.file.FileNameUtil; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.db.meta.Column; @@ -212,7 +211,13 @@ public class GeneratorServiceImpl implements GeneratorService { CheckUtils.throwIfNull(genConfig, "请先进行数据表 [{}] 生成配置", tableName); List fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); CheckUtils.throwIfEmpty(fieldConfigList, "请先进行数据表 [{}] 字段配置", tableName); - Map genConfigMap = this.pretreatment(genConfig, fieldConfigList); + Map genConfigMap = BeanUtil.beanToMap(genConfig); + genConfigMap.put("date", DateUtil.date().toString("yyyy/MM/dd HH:mm")); + String packageName = genConfig.getPackageName(); + String apiModuleName = + StrUtil.subSuf(packageName, StrUtil.lastIndexOfIgnoreCase(packageName, StringConsts.DOT) + 1); + genConfigMap.put("apiModuleName", apiModuleName); + genConfigMap.put("apiName", StrUtil.lowerFirst(genConfig.getClassNamePrefix())); try { String classNamePrefix = genConfig.getClassNamePrefix(); @@ -232,13 +237,12 @@ public class GeneratorServiceImpl implements GeneratorService { Map templateConfigMap = generatorProperties.getTemplateConfigs(); for (Map.Entry templateConfigEntry : templateConfigMap.entrySet()) { // 例如:D:/continew-admin/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/XxxServiceImpl.java - TemplateConfig templateConfig = templateConfigEntry.getValue(); - String subPackageName = templateConfig.getPackageName(); - genConfigMap.put("subPackageName", subPackageName); - File classParentFile = - FileUtil.file(backendParentFile, StrUtil.splitToArray(subPackageName, StringConsts.DOT)); + this.pretreatment(genConfigMap, fieldConfigList, templateConfigEntry); String className = classNamePrefix + StrUtil.nullToEmpty(templateConfigEntry.getKey()); genConfigMap.put("className", className); + TemplateConfig templateConfig = templateConfigEntry.getValue(); + File classParentFile = FileUtil.file(backendParentFile, + StrUtil.splitToArray(templateConfig.getPackageName(), StringConsts.DOT)); File classFile = new File(classParentFile, className + FileNameUtil.EXT_JAVA); // 如果已经存在,且不允许覆盖,则跳过 if (classFile.exists() && !isOverride) { @@ -284,15 +288,22 @@ public class GeneratorServiceImpl implements GeneratorService { /** * 预处理生成配置 * - * @param genConfig + * @param genConfigMap * 生成配置 - * @param fieldConfigList - * 字段配置列表 - * @return 处理后的生成配置 + * @param originFieldConfigList + * 原始字段配置列表 + * @param templateConfigEntry + * 模板配置 */ - private Map pretreatment(GenConfigDO genConfig, List fieldConfigList) { - Map genConfigMap = MapUtil.newHashMap(); - genConfigMap.put("date", DateUtil.date().toString("yyyy/MM/dd HH:mm")); + private void pretreatment(Map genConfigMap, List originFieldConfigList, + Map.Entry templateConfigEntry) { + TemplateConfig templateConfig = templateConfigEntry.getValue(); + // 移除需要忽略的字段 + List fieldConfigList = originFieldConfigList.stream() + .filter(fieldConfig -> !StrUtil.equalsAny(fieldConfig.getFieldName(), templateConfig.getExcludeFields())) + .collect(Collectors.toList()); + genConfigMap.put("fieldConfigs", fieldConfigList); + // 统计部分特殊字段特征 genConfigMap.put("hasLocalDateTime", false); genConfigMap.put("hasBigDecimal", false); genConfigMap.put("hasRequiredField", false); @@ -303,7 +314,7 @@ public class GeneratorServiceImpl implements GeneratorService { genConfigMap.put("hasLocalDateTime", true); } if ("BigDecimal".equals(fieldType)) { - genConfigMap.put("hasLocalDateTime", true); + genConfigMap.put("hasBigDecimal", true); } if (Boolean.TRUE.equals(fieldConfig.getIsRequired())) { genConfigMap.put("hasRequiredField", true); @@ -314,13 +325,7 @@ public class GeneratorServiceImpl implements GeneratorService { genConfigMap.put("hasListQueryField", true); } } - genConfig.setFieldConfigs(fieldConfigList); - genConfigMap.putAll(BeanUtil.beanToMap(genConfig)); - String packageName = genConfig.getPackageName(); - String moduleName = - StrUtil.subSuf(packageName, StrUtil.lastIndexOfIgnoreCase(packageName, StringConsts.DOT) + 1); - genConfigMap.put("moduleName", moduleName); - genConfigMap.put("apiName", StrUtil.lowerFirst(genConfig.getClassNamePrefix())); - return genConfigMap; + String subPackageName = templateConfig.getPackageName(); + genConfigMap.put("subPackageName", subPackageName); } } diff --git a/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl b/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl index 5e1b647b..1c2c7ede 100644 --- a/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl +++ b/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl @@ -38,5 +38,5 @@ import ${packageName}.service.${classNamePrefix}Service; */ @Tag(name = "${businessName}管理 API") @RestController -@CrudRequestMapping(value = "/${moduleName}/${apiName}", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT}) +@CrudRequestMapping(value = "/${apiModuleName}/${apiName}", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT}) public class ${className} extends BaseController<${classNamePrefix}Service, ${classNamePrefix}VO, ${classNamePrefix}DetailVO, ${classNamePrefix}Query, ${classNamePrefix}Request> {} \ No newline at end of file diff --git a/continew-admin-tool/src/main/resources/templates/generator/api.ftl b/continew-admin-tool/src/main/resources/templates/generator/api.ftl index 5a7bd31b..5e1baa7e 100644 --- a/continew-admin-tool/src/main/resources/templates/generator/api.ftl +++ b/continew-admin-tool/src/main/resources/templates/generator/api.ftl @@ -1,7 +1,7 @@ import axios from 'axios'; import qs from 'query-string'; -const BASE_URL = '/${moduleName}/${apiName}'; +const BASE_URL = '/${apiModuleName}/${apiName}'; export interface ${classNamePrefix}Record { <#if fieldConfigs??> diff --git a/continew-admin-tool/src/main/resources/templates/generator/index.ftl b/continew-admin-tool/src/main/resources/templates/generator/index.ftl index 924042ef..737aeecd 100644 --- a/continew-admin-tool/src/main/resources/templates/generator/index.ftl +++ b/continew-admin-tool/src/main/resources/templates/generator/index.ftl @@ -1,7 +1,7 @@ 修改 删除 - + diff --git a/continew-admin-webapi/src/main/resources/application.yml b/continew-admin-webapi/src/main/resources/application.yml index e8ff3afd..a7a9d2f7 100644 --- a/continew-admin-webapi/src/main/resources/application.yml +++ b/continew-admin-webapi/src/main/resources/application.yml @@ -245,8 +245,17 @@ generator: # 模板配置 templateConfigs: DO: + # 模板路径 templatePath: generator/Entity.ftl + # 包名称 packageName: model.entity + # 排除字段 + excludeFields: + - id + - createUser + - createTime + - updateUser + - updateTime Query: templatePath: generator/Query.ftl packageName: model.query @@ -256,9 +265,19 @@ generator: VO: templatePath: generator/VO.ftl packageName: model.vo + excludeFields: + - id + - createUser + - createTime DetailVO: templatePath: generator/DetailVO.ftl packageName: model.vo + excludeFields: + - id + - createUser + - createTime + - updateUser + - updateTime Mapper: templatePath: generator/Mapper.ftl packageName: mapper