diff --git a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/resp/TableResp.java b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/resp/TableResp.java index db573351..8498ae8f 100644 --- a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/resp/TableResp.java +++ b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/resp/TableResp.java @@ -72,4 +72,14 @@ public class TableResp implements Serializable { */ @Schema(description = "是否已配置", example = "true") private Boolean isConfiged; + + /** + * 是否禁用 + */ + @Schema(description = "是否禁用", example = "true") + private Boolean disabled; + + public Boolean getDisabled() { + return !isConfiged; + } } diff --git a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/GeneratorService.java b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/GeneratorService.java index 42677330..444204d2 100644 --- a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/GeneratorService.java +++ b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/GeneratorService.java @@ -85,9 +85,9 @@ public interface GeneratorService { /** * 生成代码 * - * @param tableName 表名称 - * @param request 请求对象 - * @param response 响应对象 + * @param tableNames 表明层 + * @param request 请求对象 + * @param response 响应对象 */ - void generate(String tableName, HttpServletRequest request, HttpServletResponse response); + void generate(List tableNames, HttpServletRequest request, HttpServletResponse response); } diff --git a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java index 27b5428d..cd9fad23 100644 --- a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java +++ b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java @@ -260,50 +260,57 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override - public void generate(String tableName, HttpServletRequest request, HttpServletResponse response) { + public void generate(List tableNames, HttpServletRequest request, HttpServletResponse response) { try { - // 初始化配置及数据 - List generatePreviewList = this.preview(tableName); - GenConfigDO genConfig = genConfigMapper.selectById(tableName); - // 生成后端代码 - Map> generatePreviewListMap = generatePreviewList.stream() - .collect(Collectors.groupingBy(GeneratePreviewResp::isBackend)); - this.generateBackendCode(generatePreviewListMap.get(true), genConfig); - // 生成前端代码 - List frontendGeneratePreviewList = generatePreviewListMap.get(false); - String packageName = genConfig.getPackageName(); - String moduleName = StrUtil.subSuf(packageName, StrUtil - .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); String tempDir = SystemUtil.getUserInfo().getTempDir(); - // 例如:continew-admin-ui/src - String frontendBasicPackagePath = tempDir + String.join(File.separator, projectProperties - .getAppName(), projectProperties.getAppName() + "-ui", "src"); - // 1、生成 api 代码 - GeneratePreviewResp apiGeneratePreview = frontendGeneratePreviewList.get(0); - // 例如:continew-admin-ui/src/src/api/system - String apiPath = String.join(File.separator, frontendBasicPackagePath, "api", moduleName); - // 例如:continew-admin-ui/src/api/system/user.ts - File apiFile = new File(apiPath, apiGeneratePreview.getFileName()); - if (!apiFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { - FileUtil.writeUtf8String(apiGeneratePreview.getContent(), apiFile); - } - // 2、生成 view 代码 - GeneratePreviewResp viewGeneratePreview = frontendGeneratePreviewList.get(1); - // 例如:continew-admin-ui/src/views/system - String vuePath = String.join(File.separator, frontendBasicPackagePath, "views", moduleName, StrUtil - .lowerFirst(genConfig.getClassNamePrefix())); - // 例如:continew-admin-ui/src/views/system/user/index.vue - File vueFile = new File(vuePath, viewGeneratePreview.getFileName()); - if (!vueFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { - FileUtil.writeUtf8String(viewGeneratePreview.getContent(), vueFile); - } + // 删除旧代码 + FileUtil.del(tempDir + projectProperties.getAppName()); + + tableNames.forEach(tableName -> { + // 初始化配置及数据 + List generatePreviewList = this.preview(tableName); + GenConfigDO genConfig = genConfigMapper.selectById(tableName); + // 生成后端代码 + Map> generatePreviewListMap = generatePreviewList.stream() + .collect(Collectors.groupingBy(GeneratePreviewResp::isBackend)); + this.generateBackendCode(generatePreviewListMap.get(true), genConfig); + // 生成前端代码 + List frontendGeneratePreviewList = generatePreviewListMap.get(false); + String packageName = genConfig.getPackageName(); + String moduleName = StrUtil.subSuf(packageName, StrUtil + .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); + + // 例如:continew-admin-ui/src + String frontendBasicPackagePath = tempDir + String.join(File.separator, projectProperties + .getAppName(), projectProperties.getAppName() + "-ui", "src"); + // 1、生成 api 代码 + GeneratePreviewResp apiGeneratePreview = frontendGeneratePreviewList.get(0); + // 例如:continew-admin-ui/src/src/api/system + String apiPath = String.join(File.separator, frontendBasicPackagePath, "api", moduleName); + // 例如:continew-admin-ui/src/api/system/user.ts + File apiFile = new File(apiPath, apiGeneratePreview.getFileName()); + if (!apiFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { + FileUtil.writeUtf8String(apiGeneratePreview.getContent(), apiFile); + } + // 2、生成 view 代码 + GeneratePreviewResp viewGeneratePreview = frontendGeneratePreviewList.get(1); + // 例如:continew-admin-ui/src/views/system + String vuePath = String.join(File.separator, frontendBasicPackagePath, "views", moduleName, StrUtil + .lowerFirst(genConfig.getClassNamePrefix())); + // 例如:continew-admin-ui/src/views/system/user/index.vue + File vueFile = new File(vuePath, viewGeneratePreview.getFileName()); + if (!vueFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { + FileUtil.writeUtf8String(viewGeneratePreview.getContent(), vueFile); + } + }); + // 打包下载 File tempDirFile = new File(tempDir, projectProperties.getAppName()); - String zipFilePath = tempDirFile.getPath() + ".zip"; + String zipFilePath = tempDirFile.getPath() + jodd.io.ZipUtil.ZIP_EXT; ZipUtil.zip(tempDirFile.getPath(), zipFilePath); FileUploadUtils.download(request, response, new File(zipFilePath), true); } catch (Exception e) { - log.error("Generate code of table '{}' occurred an error. {}", tableName, e.getMessage(), e); + log.error("Generate code of table '{}' occurred an error. {}", tableNames, e.getMessage(), e); throw new BusinessException("代码生成失败,请手动清理生成文件"); } } diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/tool/GeneratorController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/tool/GeneratorController.java index 25589841..123774a1 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/tool/GeneratorController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/tool/GeneratorController.java @@ -102,8 +102,10 @@ public class GeneratorController { @Operation(summary = "生成代码", description = "生成代码") @Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) @SaCheckPermission("tool:generator:list") - @PostMapping("/{tableName}") - public void generate(@PathVariable String tableName, HttpServletRequest request, HttpServletResponse response) { - generatorService.generate(tableName, request, response); + @PostMapping("/{tableNames}") + public void generate(@PathVariable List tableNames, + HttpServletRequest request, + HttpServletResponse response) { + generatorService.generate(tableNames, request, response); } }