diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/enums/FormTypeEnum.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/enums/FormTypeEnum.java index 82faaab2..ad430c5b 100644 --- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/enums/FormTypeEnum.java +++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/enums/FormTypeEnum.java @@ -45,51 +45,50 @@ public enum FormTypeEnum implements BaseEnum { */ INPUT_PASSWORD(3, "密码输入框"), + /** + * 文本域 + */ + TEXT_AREA(4, "文本域"), + /** * 下拉框 */ - SELECT(4, "下拉框"), + SELECT(5, "下拉框"), /** * 单选框 */ - RADIO(5, "单选框"), + RADIO(6, "单选框"), /** * 开关 */ - SWITCH(6, "开关"), + SWITCH(7, "开关"), /** * 复选框 */ - CHECK_BOX(7, "复选框"), - - /** - * 文本域 - */ - TEXT_AREA(8, "文本域"), - - /** - * 时间框 - */ - TIME(9, "时间框"), - - /** - * 日期框 - */ - DATE(10, "日期框"), + CHECK_BOX(8, "复选框"), /** * 树形选择 */ - TREE_SELECT(11, "树选择"), + TREE_SELECT(9, "树选择"), /** * 时间框 */ - DATE_TIME(12, "日期时间框"), - ; + TIME(10, "时间框"), + + /** + * 日期框 + */ + DATE(11, "日期框"), + + /** + * 时间框 + */ + DATE_TIME(12, "日期时间框"),; private final Integer value; private final String description; diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java index 34ee0f4d..44467b90 100644 --- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java +++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java @@ -74,15 +74,15 @@ public interface GeneratorService { /** * 生成预览 * - * @param tableName 表名称 + * @param tableNames 表名称列表 * @return 预览信息 */ - List preview(String tableName); + List preview(List tableNames); /** * 生成代码 * - * @param tableNames 表明层 + * @param tableNames 表名称列表 * @param response 响应对象 */ void generate(List tableNames, HttpServletResponse response); diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java index 8d1179de..db842ead 100644 --- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java +++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java @@ -217,52 +217,10 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override - public List preview(String tableName) { + public List preview(List tableNames) { List generatePreviewList = new ArrayList<>(); - // 初始化配置 - GenConfigDO genConfig = genConfigMapper.selectById(tableName); - CheckUtils.throwIfNull(genConfig, "请先进行数据表 [{}] 生成配置", tableName); - List fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); - CheckUtils.throwIfEmpty(fieldConfigList, "请先进行数据表 [{}] 字段配置", tableName); - InnerGenConfigDO innerGenConfig = new InnerGenConfigDO(genConfig); - // 渲染代码 - String classNamePrefix = innerGenConfig.getClassNamePrefix(); - Map templateConfigMap = generatorProperties.getTemplateConfigs(); - - TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH)); - if (engine instanceof FreemarkerEngine) { - ((FreemarkerEngine) engine).getConfiguration().setSharedVariable("statics", BeansWrapper.getDefaultInstance().getStaticModels()); - } - - for (Map.Entry templateConfigEntry : templateConfigMap.entrySet()) { - GeneratorProperties.TemplateConfig templateConfig = templateConfigEntry.getValue(); - // 移除需要忽略的字段 - innerGenConfig.setFieldConfigs(fieldConfigList.stream() - .filter(fieldConfig -> !StrUtil.equalsAny(fieldConfig.getFieldName(), templateConfig - .getExcludeFields())) - .toList()); - // 预处理配置 - this.pretreatment(innerGenConfig); - // 处理其他配置 - innerGenConfig.setSubPackageName(templateConfig.getPackageName()); - String classNameSuffix = templateConfigEntry.getKey(); - String className = classNamePrefix + classNameSuffix; - innerGenConfig.setClassName(className); - boolean isBackend = templateConfig.isBackend(); - String extension = templateConfig.getExtension(); - GeneratePreviewResp generatePreview = new GeneratePreviewResp(); - generatePreview.setBackend(isBackend); - generatePreviewList.add(generatePreview); - String fileName = className + extension; - if (!isBackend) { - fileName = ".vue".equals(extension) && "index".equals(classNameSuffix) - ? "index.vue" - : this.getFrontendFileName(classNamePrefix, className, extension); - } - generatePreview.setFileName(fileName); - generatePreview.setContent(engine.getTemplate(templateConfig.getTemplatePath()) - .render(BeanUtil.beanToMap(innerGenConfig))); - this.setPreviewPath(generatePreview, innerGenConfig, templateConfig); + for (String tableName : tableNames) { + generatePreviewList.addAll(this.preview(tableName)); } return generatePreviewList; } @@ -314,6 +272,64 @@ public class GeneratorServiceImpl implements GeneratorService { } } + /** + * 生成预览 + * + * @param tableName 表名称 + * @return 预览信息 + */ + private List preview(String tableName) { + List generatePreviewList = new ArrayList<>(); + // 初始化配置 + GenConfigDO genConfig = genConfigMapper.selectById(tableName); + CheckUtils.throwIfNull(genConfig, "请先进行数据表 [{}] 生成配置", tableName); + List fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); + CheckUtils.throwIfEmpty(fieldConfigList, "请先进行数据表 [{}] 字段配置", tableName); + InnerGenConfigDO innerGenConfig = new InnerGenConfigDO(genConfig); + // 渲染代码 + String classNamePrefix = innerGenConfig.getClassNamePrefix(); + Map templateConfigMap = generatorProperties.getTemplateConfigs(); + + TemplateEngine engine = TemplateUtil + .createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH)); + if (engine instanceof FreemarkerEngine) { + ((FreemarkerEngine)engine).getConfiguration() + .setSharedVariable("statics", BeansWrapper.getDefaultInstance().getStaticModels()); + } + + for (Map.Entry templateConfigEntry : templateConfigMap.entrySet()) { + GeneratorProperties.TemplateConfig templateConfig = templateConfigEntry.getValue(); + // 移除需要忽略的字段 + innerGenConfig.setFieldConfigs(fieldConfigList.stream() + .filter(fieldConfig -> !StrUtil.equalsAny(fieldConfig.getFieldName(), templateConfig + .getExcludeFields())) + .toList()); + // 预处理配置 + this.pretreatment(innerGenConfig); + // 处理其他配置 + innerGenConfig.setSubPackageName(templateConfig.getPackageName()); + String classNameSuffix = templateConfigEntry.getKey(); + String className = classNamePrefix + classNameSuffix; + innerGenConfig.setClassName(className); + boolean isBackend = templateConfig.isBackend(); + String extension = templateConfig.getExtension(); + GeneratePreviewResp generatePreview = new GeneratePreviewResp(); + generatePreview.setBackend(isBackend); + generatePreviewList.add(generatePreview); + String fileName = className + extension; + if (!isBackend) { + fileName = ".vue".equals(extension) && "index".equals(classNameSuffix) + ? "index.vue" + : this.getFrontendFileName(classNamePrefix, className, extension); + } + generatePreview.setFileName(fileName); + generatePreview.setContent(engine.getTemplate(templateConfig.getTemplatePath()) + .render(BeanUtil.beanToMap(innerGenConfig))); + this.setPreviewPath(generatePreview, innerGenConfig, templateConfig); + } + return generatePreviewList; + } + /** * 生成代码 * diff --git a/continew-webapi/src/main/java/top/continew/admin/controller/code/GeneratorController.java b/continew-webapi/src/main/java/top/continew/admin/controller/code/GeneratorController.java index df0a9941..25165f19 100644 --- a/continew-webapi/src/main/java/top/continew/admin/controller/code/GeneratorController.java +++ b/continew-webapi/src/main/java/top/continew/admin/controller/code/GeneratorController.java @@ -89,15 +89,15 @@ public class GeneratorController { } @Operation(summary = "生成预览", description = "预览生成代码") - @Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) + @Parameter(name = "tableNames", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) @SaCheckPermission("code:generator:preview") - @GetMapping("/preview/{tableName}") - public List preview(@PathVariable String tableName) { - return baseService.preview(tableName); + @GetMapping("/preview/{tableNames}") + public List preview(@PathVariable List tableNames) { + return baseService.preview(tableNames); } @Operation(summary = "生成代码", description = "生成代码") - @Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) + @Parameter(name = "tableNames", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) @SaCheckPermission("code:generator:generate") @PostMapping("/{tableNames}") public void generate(@PathVariable List tableNames, HttpServletResponse response) {