From fcf097847a5bd5b45c68db3cebf3968f7b8bbe53 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 17 May 2025 13:11:54 +0800 Subject: [PATCH] =?UTF-8?q?reactor=EF=BC=9A=E3=80=90INFRA=20=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E8=AE=BE=E6=96=BD=E3=80=91=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=97=B6=EF=BC=8C=E5=8C=BA=E5=88=86=20boot=20?= =?UTF-8?q?=E8=BF=98=E6=98=AF=20cloud=20=E9=A1=B9=E7=9B=AE=20reactor?= =?UTF-8?q?=EF=BC=9A=E3=80=90INFRA=20=E5=9F=BA=E7=A1=80=E8=AE=BE=E6=96=BD?= =?UTF-8?q?=E3=80=91=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E4=B8=A5=E6=A0=BC=E7=9A=84=E5=8C=BA=E5=88=86=20master?= =?UTF-8?q?=20=E8=BF=98=E6=98=AF=20master-jdk17=20=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/codegen/inner/CodegenEngine.java | 38 +++++++++++++++---- .../resources/codegen/java/enums/errorcode.vm | 2 +- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java index d0ba5aad04..bce07e0c1d 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java @@ -40,6 +40,7 @@ import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import lombok.Setter; import org.springframework.stereotype.Component; +import org.springframework.util.ClassUtils; import java.util.*; @@ -64,7 +65,7 @@ public class CodegenEngine { * value:生成的路径 */ private static final Map SERVER_TEMPLATES = MapUtil.builder(new LinkedHashMap<>()) // 有序 - // Java module-biz Main + // Java module-biz(server) Main .put(javaTemplatePath("controller/vo/pageReqVO"), javaModuleImplVOFilePath("PageReqVO")) .put(javaTemplatePath("controller/vo/listReqVO"), javaModuleImplVOFilePath("ListReqVO")) .put(javaTemplatePath("controller/vo/respVO"), javaModuleImplVOFilePath("RespVO")) @@ -83,7 +84,7 @@ public class CodegenEngine { javaModuleImplMainFilePath("service/${table.businessName}/${table.className}ServiceImpl")) .put(javaTemplatePath("service/service"), javaModuleImplMainFilePath("service/${table.businessName}/${table.className}Service")) - // Java module-biz Test + // Java module-biz(server) Test .put(javaTemplatePath("test/serviceTest"), javaModuleImplTestFilePath("service/${table.businessName}/${table.className}ServiceImplTest")) // Java module-api Main @@ -194,6 +195,15 @@ public class CodegenEngine { @Setter // 允许设置的原因,是因为单测需要手动改变 private Boolean jakartaEnable; + /** + * 是否为 yudao-cloud 项目,用于解决 Boot 和 Cloud 的 api 模块兼容性问题 + * + * true - 需要有 yudao-module-xxx-api 模块 + * false - 不需要有,使用 api、enum 包即可 + */ + @Setter + private Boolean cloudEnable; + /** * 模板引擎,由 hutool 实现 */ @@ -209,7 +219,11 @@ public class CodegenEngine { config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH); this.templateEngine = new VelocityEngine(config); // 设置 javaxEnable,按照是否使用 JDK17 来判断 - this.jakartaEnable = SystemUtil.getJavaInfo().isJavaVersionAtLeast(1700); // 17.00 * 100 + this.jakartaEnable = SystemUtil.getJavaInfo().isJavaVersionAtLeast(1700) // 17.00 * 100 + && ClassUtils.isPresent("jakarta.annotation.Resource", ClassUtils.getDefaultClassLoader()); + // 设置 cloudEnable,按照是否使用 Spring Cloud 来判断 + this.cloudEnable = ClassUtils.isPresent("cn.iocoder.yudao.module.infra.framework.rpc.config.RpcConfiguration", + ClassUtils.getDefaultClassLoader()); } @PostConstruct @@ -434,6 +448,14 @@ public class CodegenEngine { Map templates = new LinkedHashMap<>(); templates.putAll(SERVER_TEMPLATES); templates.putAll(FRONT_TEMPLATES.row(frontType)); + // 如果是 Boot 项目,则不使用 api/server 模块 + if (Boolean.FALSE.equals(cloudEnable)) { + SERVER_TEMPLATES.forEach((templatePath, filePath) -> { + filePath = StrUtil.replace(filePath, "/yudao-module-${table.moduleName}-api", ""); + filePath = StrUtil.replace(filePath, "/yudao-module-${table.moduleName}-server", ""); + templates.put(templatePath, filePath); + }); + } // 如果禁用单元测试,则移除对应的模版 if (Boolean.FALSE.equals(codegenProperties.getUnitTestEnable())) { templates.remove(javaTemplatePath("test/serviceTest")); @@ -480,16 +502,16 @@ public class CodegenEngine { private static String javaModuleImplVOFilePath(String path) { return javaModuleFilePath("controller/${sceneEnum.basePackage}/${table.businessName}/" + - "vo/${sceneEnum.prefixClass}${table.className}" + path, "biz", "main"); + "vo/${sceneEnum.prefixClass}${table.className}" + path, "server", "main"); } private static String javaModuleImplControllerFilePath() { return javaModuleFilePath("controller/${sceneEnum.basePackage}/${table.businessName}/" + - "${sceneEnum.prefixClass}${table.className}Controller", "biz", "main"); + "${sceneEnum.prefixClass}${table.className}Controller", "server", "main"); } private static String javaModuleImplMainFilePath(String path) { - return javaModuleFilePath(path, "biz", "main"); + return javaModuleFilePath(path, "server", "main"); } private static String javaModuleApiMainFilePath(String path) { @@ -497,7 +519,7 @@ public class CodegenEngine { } private static String javaModuleImplTestFilePath(String path) { - return javaModuleFilePath(path, "biz", "test"); + return javaModuleFilePath(path, "server", "test"); } private static String javaModuleFilePath(String path, String module, String src) { @@ -508,7 +530,7 @@ public class CodegenEngine { private static String mapperXmlFilePath() { return "yudao-module-${table.moduleName}/" + // 顶级模块 - "yudao-module-${table.moduleName}-biz/" + // 子模块 + "yudao-module-${table.moduleName}-server/" + // 子模块 "src/main/resources/mapper/${table.businessName}/${table.className}Mapper.xml"; } diff --git a/yudao-module-infra/src/main/resources/codegen/java/enums/errorcode.vm b/yudao-module-infra/src/main/resources/codegen/java/enums/errorcode.vm index b7e21e6315..0d1343b330 100644 --- a/yudao-module-infra/src/main/resources/codegen/java/enums/errorcode.vm +++ b/yudao-module-infra/src/main/resources/codegen/java/enums/errorcode.vm @@ -1,4 +1,4 @@ -// TODO 待办:请将下面的错误码复制到 yudao-module-${table.moduleName}-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! +// TODO 待办:请将下面的错误码复制到 yudao-module-${table.moduleName} 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! // ========== ${table.classComment} TODO 补充编号 ========== ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); ## 特殊:树表专属逻辑