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 44467b90..883a42c0 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 @@ -80,10 +80,17 @@ public interface GeneratorService { List preview(List tableNames); /** - * 生成代码 + * 生成下载代码 * * @param tableNames 表名称列表 * @param response 响应对象 */ - void generate(List tableNames, HttpServletResponse response); + void downloadCode(List tableNames, HttpServletResponse response); + + /** + * 生成下载代码 + * + * @param tableNames 表名称列表 + */ + void generateCode(List tableNames); } 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 b48b64b7..6d3fe62b 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 @@ -252,7 +252,7 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override - public void generate(List tableNames, HttpServletResponse response) { + public void downloadCode(List tableNames, HttpServletResponse response) { try { String tempDir = SystemUtil.getUserInfo().getTempDir(); // 删除旧代码 @@ -274,6 +274,32 @@ public class GeneratorServiceImpl implements GeneratorService { } } + @Override + public void generateCode(List tableNames) { + try { + String projectPath = System.getProperty("user.dir"); + tableNames.forEach(tableName -> { + // 初始化配置及数据 + List generatePreviewList = this.preview(tableName); + // 生成代码 + for (GeneratePreviewResp generatePreview : generatePreviewList) { + // 后端:continew-admin/continew-system/src/main/java/top/continew/admin/system/service/impl/XxxServiceImpl.java + // 前端:continew-admin/continew-admin-ui/src/views/system/user/index.vue + File file = new File(projectPath + generatePreview.getPath() + .replace("continew-admin\\continew-admin", ""), generatePreview.getFileName()); + // 如果已经存在,且不允许覆盖,则跳过 + if (!file.exists() || Boolean.TRUE.equals(genConfigMapper.selectById(tableName).getIsOverride())) { + FileUtil.writeUtf8String(generatePreview.getContent(), file); + } + } + }); + + } catch (Exception e) { + log.error("Generate code of table '{}' occurred an error. {}", tableNames, e.getMessage(), e); + throw new BusinessException("代码生成失败,请手动清理生成文件"); + } + } + /** * 生成预览 * 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 25165f19..600c0955 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 @@ -96,12 +96,20 @@ public class GeneratorController { return baseService.preview(tableNames); } + @Operation(summary = "生成下载代码", description = "生成下载代码") + @Parameter(name = "tableNames", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) + @SaCheckPermission("code:generator:generate") + @PostMapping("/{tableNames}/download") + public void downloadCode(@PathVariable List tableNames, HttpServletResponse response) { + baseService.downloadCode(tableNames, response); + } + @Operation(summary = "生成代码", description = "生成代码") @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) { - baseService.generate(tableNames, response); + public void generateCode(@PathVariable List tableNames) { + baseService.generateCode(tableNames); } @Operation(summary = "查询字典", description = "查询字典列表")