Commit d9e729e1a832c6a6f20589979b0e0b21ad2c0533

Authored by YunaiV
1 parent f441de53

fix:【framework 框架】

app-api 前缀不生效,都是使用 admin-api
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java
@@ -11,6 +11,7 @@ import io.swagger.v3.oas.models.parameters.Parameter; @@ -11,6 +11,7 @@ import io.swagger.v3.oas.models.parameters.Parameter;
11 import io.swagger.v3.oas.models.security.SecurityRequirement; 11 import io.swagger.v3.oas.models.security.SecurityRequirement;
12 import io.swagger.v3.oas.models.security.SecurityScheme; 12 import io.swagger.v3.oas.models.security.SecurityScheme;
13 import org.springdoc.core.customizers.OpenApiBuilderCustomizer; 13 import org.springdoc.core.customizers.OpenApiBuilderCustomizer;
  14 +import org.springdoc.core.customizers.OperationCustomizer;
14 import org.springdoc.core.customizers.ServerBaseUrlCustomizer; 15 import org.springdoc.core.customizers.ServerBaseUrlCustomizer;
15 import org.springdoc.core.models.GroupedOpenApi; 16 import org.springdoc.core.models.GroupedOpenApi;
16 import org.springdoc.core.properties.SpringDocConfigProperties; 17 import org.springdoc.core.properties.SpringDocConfigProperties;
@@ -127,6 +128,7 @@ public class YudaoSwaggerAutoConfiguration { @@ -127,6 +128,7 @@ public class YudaoSwaggerAutoConfiguration {
127 .addOperationCustomizer((operation, handlerMethod) -> operation 128 .addOperationCustomizer((operation, handlerMethod) -> operation
128 .addParametersItem(buildTenantHeaderParameter()) 129 .addParametersItem(buildTenantHeaderParameter())
129 .addParametersItem(buildSecurityHeaderParameter())) 130 .addParametersItem(buildSecurityHeaderParameter()))
  131 + .addOperationCustomizer(buildOperationIdCustomizer())
130 .build(); 132 .build();
131 } 133 }
132 134
@@ -158,5 +160,26 @@ public class YudaoSwaggerAutoConfiguration { @@ -158,5 +160,26 @@ public class YudaoSwaggerAutoConfiguration {
158 .schema(new StringSchema()._default("Bearer test1").name(HEADER_TENANT_ID).description("认证 Token")); // 默认:使用用户编号为 1 160 .schema(new StringSchema()._default("Bearer test1").name(HEADER_TENANT_ID).description("认证 Token")); // 默认:使用用户编号为 1
159 } 161 }
160 162
  163 + /**
  164 + * 核心:自定义OperationId生成规则,组合「类名前缀 + 方法名」
  165 + *
  166 + * @see <a href="https://github.com/YunaiV/ruoyi-vue-pro/issues/957">app-api 前缀不生效,都是使用 admin-api</a>
  167 + */
  168 + private static OperationCustomizer buildOperationIdCustomizer() {
  169 + return (operation, handlerMethod) -> {
  170 + // 1. 获取控制器类名(如 UserController)
  171 + String className = handlerMethod.getBeanType().getSimpleName();
  172 + // 2. 提取类名前缀(去除 Controller 后缀,如 UserController -> User)
  173 + String classPrefix = className.replaceAll("Controller$", "");
  174 + // 3. 获取方法名(如 list)
  175 + String methodName = handlerMethod.getMethod().getName();
  176 + // 4. 组合生成 operationId(如 User_list)
  177 + String operationId = classPrefix + "_" + methodName;
  178 + // 5. 设置自定义 operationId
  179 + operation.setOperationId(operationId);
  180 + return operation;
  181 + };
  182 + }
  183 +
161 } 184 }
162 185