mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	feat(generator): 新增代码批量生成功能
This commit is contained in:
		| @@ -72,4 +72,14 @@ public class TableResp implements Serializable { | |||||||
|      */ |      */ | ||||||
|     @Schema(description = "是否已配置", example = "true") |     @Schema(description = "是否已配置", example = "true") | ||||||
|     private Boolean isConfiged; |     private Boolean isConfiged; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否禁用 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "是否禁用", example = "true") | ||||||
|  |     private Boolean disabled; | ||||||
|  |  | ||||||
|  |     public Boolean getDisabled() { | ||||||
|  |         return !isConfiged; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -85,9 +85,9 @@ public interface GeneratorService { | |||||||
|     /** |     /** | ||||||
|      * 生成代码 |      * 生成代码 | ||||||
|      * |      * | ||||||
|      * @param tableName 表名称 |      * @param tableNames 表明层 | ||||||
|      * @param request    请求对象 |      * @param request    请求对象 | ||||||
|      * @param response   响应对象 |      * @param response   响应对象 | ||||||
|      */ |      */ | ||||||
|     void generate(String tableName, HttpServletRequest request, HttpServletResponse response); |     void generate(List<String> tableNames, HttpServletRequest request, HttpServletResponse response); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -260,8 +260,13 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void generate(String tableName, HttpServletRequest request, HttpServletResponse response) { |     public void generate(List<String> tableNames, HttpServletRequest request, HttpServletResponse response) { | ||||||
|         try { |         try { | ||||||
|  |             String tempDir = SystemUtil.getUserInfo().getTempDir(); | ||||||
|  |             // 删除旧代码 | ||||||
|  |             FileUtil.del(tempDir + projectProperties.getAppName()); | ||||||
|  |  | ||||||
|  |             tableNames.forEach(tableName -> { | ||||||
|                 // 初始化配置及数据 |                 // 初始化配置及数据 | ||||||
|                 List<GeneratePreviewResp> generatePreviewList = this.preview(tableName); |                 List<GeneratePreviewResp> generatePreviewList = this.preview(tableName); | ||||||
|                 GenConfigDO genConfig = genConfigMapper.selectById(tableName); |                 GenConfigDO genConfig = genConfigMapper.selectById(tableName); | ||||||
| @@ -274,7 +279,7 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|                 String packageName = genConfig.getPackageName(); |                 String packageName = genConfig.getPackageName(); | ||||||
|                 String moduleName = StrUtil.subSuf(packageName, StrUtil |                 String moduleName = StrUtil.subSuf(packageName, StrUtil | ||||||
|                     .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); |                     .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); | ||||||
|             String tempDir = SystemUtil.getUserInfo().getTempDir(); |  | ||||||
|                 // 例如:continew-admin-ui/src |                 // 例如:continew-admin-ui/src | ||||||
|                 String frontendBasicPackagePath = tempDir + String.join(File.separator, projectProperties |                 String frontendBasicPackagePath = tempDir + String.join(File.separator, projectProperties | ||||||
|                     .getAppName(), projectProperties.getAppName() + "-ui", "src"); |                     .getAppName(), projectProperties.getAppName() + "-ui", "src"); | ||||||
| @@ -297,13 +302,15 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|                 if (!vueFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { |                 if (!vueFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { | ||||||
|                     FileUtil.writeUtf8String(viewGeneratePreview.getContent(), vueFile); |                     FileUtil.writeUtf8String(viewGeneratePreview.getContent(), vueFile); | ||||||
|                 } |                 } | ||||||
|  |             }); | ||||||
|  |  | ||||||
|             // 打包下载 |             // 打包下载 | ||||||
|             File tempDirFile = new File(tempDir, projectProperties.getAppName()); |             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); |             ZipUtil.zip(tempDirFile.getPath(), zipFilePath); | ||||||
|             FileUploadUtils.download(request, response, new File(zipFilePath), true); |             FileUploadUtils.download(request, response, new File(zipFilePath), true); | ||||||
|         } catch (Exception e) { |         } 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("代码生成失败,请手动清理生成文件"); |             throw new BusinessException("代码生成失败,请手动清理生成文件"); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -102,8 +102,10 @@ public class GeneratorController { | |||||||
|     @Operation(summary = "生成代码", description = "生成代码") |     @Operation(summary = "生成代码", description = "生成代码") | ||||||
|     @Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) |     @Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH) | ||||||
|     @SaCheckPermission("tool:generator:list") |     @SaCheckPermission("tool:generator:list") | ||||||
|     @PostMapping("/{tableName}") |     @PostMapping("/{tableNames}") | ||||||
|     public void generate(@PathVariable String tableName, HttpServletRequest request, HttpServletResponse response) { |     public void generate(@PathVariable List<String> tableNames, | ||||||
|         generatorService.generate(tableName, request, response); |                          HttpServletRequest request, | ||||||
|  |                          HttpServletResponse response) { | ||||||
|  |         generatorService.generate(tableNames, request, response); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Yoofff
					Yoofff