mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-30 02:57:09 +08:00 
			
		
		
		
	refactor: 优化代码生成预览
This commit is contained in:
		| @@ -16,14 +16,12 @@ | |||||||
|  |  | ||||||
| package top.continew.admin.generator.model.resp; | package top.continew.admin.generator.model.resp; | ||||||
|  |  | ||||||
| import java.io.Serial; | import com.fasterxml.jackson.annotation.JsonIgnore; | ||||||
| import java.io.Serializable; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
| import com.fasterxml.jackson.annotation.JsonIgnore; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 生成预览信息 |  * 生成预览信息 | ||||||
| @@ -38,6 +36,9 @@ public class GeneratePreviewResp implements Serializable { | |||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @Schema(description = "生成的文件路径", example = "continew-admin\\continew-admin\\continew-admin-generator\\src\\main\\java\\top\\continew\\admin\\generator\\service") | ||||||
|  |     private String path; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 文件名 |      * 文件名 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -248,10 +248,35 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|                 genConfigMap.put("fieldConfigs", fieldConfigList); |                 genConfigMap.put("fieldConfigs", fieldConfigList); | ||||||
|                 generatePreview.setContent(TemplateUtils.render(templateConfig.getTemplatePath(), genConfigMap)); |                 generatePreview.setContent(TemplateUtils.render(templateConfig.getTemplatePath(), genConfigMap)); | ||||||
|             } |             } | ||||||
|  |             setPreviewPath(generatePreview, genConfig, templateConfig); | ||||||
|         } |         } | ||||||
|         return generatePreviewList; |         return generatePreviewList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private void setPreviewPath(GeneratePreviewResp generatePreview, GenConfigDO genConfig, GeneratorProperties.TemplateConfig templateConfig) { | ||||||
|  |         // 获取前后端基础路径 | ||||||
|  |         String backendBasicPackagePath = this.buildBackendBasicPackagePath(genConfig); | ||||||
|  |         String frontendBasicPackagePath = String.join(File.separator, projectProperties.getAppName(), projectProperties.getAppName() + "-ui"); | ||||||
|  |         String packageName = genConfig.getPackageName(); | ||||||
|  |         String moduleName = StrUtil.subSuf(packageName, StrUtil | ||||||
|  |                 .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); | ||||||
|  |         String packagePath; | ||||||
|  |         if (generatePreview.isBackend()) { | ||||||
|  |             // 例如:continew-admin/continew-system/src/main/java/top/continew/admin/system/service/impl | ||||||
|  |             packagePath = String.join(File.separator, backendBasicPackagePath, templateConfig.getPackageName() | ||||||
|  |                     .replace(StringConstants.DOT, File.separator)); | ||||||
|  |         } else { | ||||||
|  |             // 例如:continew-admin/continew-admin-ui/src/views/system | ||||||
|  |             packagePath = String.join(File.separator, frontendBasicPackagePath, templateConfig.getPackageName() | ||||||
|  |                     .replace(StringConstants.SLASH, File.separator), moduleName); | ||||||
|  |             // 例如:continew-admin/continew-admin-ui/src/views/system/user | ||||||
|  |             packagePath = ".vue".equals(templateConfig.getExtension()) | ||||||
|  |                     ? packagePath + File.separator + StrUtil.lowerFirst(genConfig.getClassNamePrefix()) | ||||||
|  |                     : packagePath; | ||||||
|  |         } | ||||||
|  |         generatePreview.setPath(packagePath); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void generate(List<String> tableNames, HttpServletRequest request, HttpServletResponse response) { |     public void generate(List<String> tableNames, HttpServletRequest request, HttpServletResponse response) { | ||||||
|         try { |         try { | ||||||
| @@ -282,37 +307,10 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|      * @param genConfig           生成配置 |      * @param genConfig           生成配置 | ||||||
|      */ |      */ | ||||||
|     private void generateCode(List<GeneratePreviewResp> generatePreviewList, GenConfigDO genConfig) { |     private void generateCode(List<GeneratePreviewResp> generatePreviewList, GenConfigDO genConfig) { | ||||||
|         // 获取前后端基础路径 |  | ||||||
|         String backendBasicPackagePath = this.buildBackendBasicPackagePath(genConfig); |  | ||||||
|         String frontendBasicPackagePath = SystemUtil.getUserInfo().getTempDir() + String |  | ||||||
|             .join(File.separator, projectProperties.getAppName(), projectProperties.getAppName() + "-ui"); |  | ||||||
|         String packageName = genConfig.getPackageName(); |  | ||||||
|         String moduleName = StrUtil.subSuf(packageName, StrUtil |  | ||||||
|             .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); |  | ||||||
|         // 生成代码 |  | ||||||
|         Map<String, GeneratorProperties.TemplateConfig> templateConfigMap = generatorProperties.getTemplateConfigs(); |  | ||||||
|         for (GeneratePreviewResp generatePreview : generatePreviewList) { |         for (GeneratePreviewResp generatePreview : generatePreviewList) { | ||||||
|             // 获取对应模板配置 |  | ||||||
|             GeneratorProperties.TemplateConfig templateConfig = templateConfigMap.getOrDefault(StrUtil |  | ||||||
|                 .subBefore(generatePreview.getFileName(), StringConstants.DOT, true) |  | ||||||
|                 .replace(genConfig.getClassNamePrefix(), StringConstants.EMPTY), templateConfigMap.get("api")); |  | ||||||
|             String packagePath; |  | ||||||
|             if (generatePreview.isBackend()) { |  | ||||||
|                 // 例如:continew-admin/continew-system/src/main/java/top/continew/admin/system/service/impl |  | ||||||
|                 packagePath = String.join(File.separator, backendBasicPackagePath, templateConfig.getPackageName() |  | ||||||
|                     .replace(StringConstants.DOT, File.separator)); |  | ||||||
|             } else { |  | ||||||
|                 // 例如:continew-admin/continew-admin-ui/src/views/system |  | ||||||
|                 packagePath = String.join(File.separator, frontendBasicPackagePath, templateConfig.getPackageName() |  | ||||||
|                     .replace(StringConstants.SLASH, File.separator), moduleName); |  | ||||||
|                 // 例如:continew-admin/continew-admin-ui/src/views/system/user |  | ||||||
|                 packagePath = ".vue".equals(templateConfig.getExtension()) |  | ||||||
|                     ? packagePath + File.separator + StrUtil.lowerFirst(genConfig.getClassNamePrefix()) |  | ||||||
|                     : packagePath; |  | ||||||
|             } |  | ||||||
|             // 后端:continew-admin/continew-system/src/main/java/top/continew/admin/system/service/impl/XxxServiceImpl.java |             // 后端: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 |             // 前端:continew-admin/continew-admin-ui/src/views/system/user/index.vue | ||||||
|             File file = new File(packagePath, generatePreview.getFileName()); |             File file = new File(SystemUtil.getUserInfo().getTempDir() + generatePreview.getPath(), generatePreview.getFileName()); | ||||||
|             // 如果已经存在,且不允许覆盖,则跳过 |             // 如果已经存在,且不允许覆盖,则跳过 | ||||||
|             if (!file.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { |             if (!file.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) { | ||||||
|                 FileUtil.writeUtf8String(generatePreview.getContent(), file); |                 FileUtil.writeUtf8String(generatePreview.getContent(), file); | ||||||
| @@ -328,7 +326,7 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|      */ |      */ | ||||||
|     private String buildBackendBasicPackagePath(GenConfigDO genConfig) { |     private String buildBackendBasicPackagePath(GenConfigDO genConfig) { | ||||||
|         // 例如:continew-admin/continew-system/src/main/java/top/continew/admin/system |         // 例如:continew-admin/continew-system/src/main/java/top/continew/admin/system | ||||||
|         return SystemUtil.getUserInfo().getTempDir() + String.join(File.separator, projectProperties |         return String.join(File.separator, projectProperties | ||||||
|                 .getAppName(), projectProperties.getAppName(), genConfig.getModuleName(), "src", "main", "java", genConfig |                 .getAppName(), projectProperties.getAppName(), genConfig.getModuleName(), "src", "main", "java", genConfig | ||||||
|                 .getPackageName() |                 .getPackageName() | ||||||
|                 .replace(StringConstants.DOT, File.separator)); |                 .replace(StringConstants.DOT, File.separator)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 罗敬
					罗敬