diff --git a/jeecg-boot/jeecg-boot-base-core/pom.xml b/jeecg-boot/jeecg-boot-base-core/pom.xml
index c4ae57e1..491b364c 100644
--- a/jeecg-boot/jeecg-boot-base-core/pom.xml
+++ b/jeecg-boot/jeecg-boot-base-core/pom.xml
@@ -173,7 +173,7 @@
DmDialect-for-hibernate5.0
${dm8.version}
-
+
org.springframework.boot
@@ -211,14 +211,9 @@
-
com.github.xiaoymin
- knife4j-openapi2-spring-boot-starter
+ knife4j-openapi3-spring-boot-starter
${knife4j-spring-boot-starter.version}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
index e45570e4..484624b9 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
@@ -1,188 +1,182 @@
-package org.jeecg.config;
-
-
-import io.swagger.annotations.ApiOperation;
-import org.jeecg.common.constant.CommonConstant;
-import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
-import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.*;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
-import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @Author scott
- */
-@Configuration
-@EnableSwagger2WebMvc
-@Import(BeanValidatorPluginsConfiguration.class)
-public class Swagger2Config implements WebMvcConfigurer {
-
- /**
- *
- * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
- *
- * @param registry
- */
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
-
- /**
- * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
- *
- * @return Docket
- */
- @Bean(value = "defaultApi2")
- public Docket defaultApi2() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- //此包路径下的类,才生成接口文档
- .apis(RequestHandlerSelectors.basePackage("org.jeecg"))
- //加了ApiOperation注解的类,才生成接口文档
- .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- .paths(PathSelectors.any())
- .build()
- .securitySchemes(Collections.singletonList(securityScheme()))
- .securityContexts(securityContexts())
- .globalOperationParameters(setHeaderToken());
- }
-
- /***
- * oauth2配置
- * 需要增加swagger授权回调地址
- * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html
- * @return
- */
- @Bean
- SecurityScheme securityScheme() {
- return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header");
- }
- /**
- * JWT token
- * @return
- */
- private List setHeaderToken() {
- ParameterBuilder tokenPar = new ParameterBuilder();
- List pars = new ArrayList<>();
- tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
- pars.add(tokenPar.build());
- //update-begin-author:liusq---date:2024-08-15--for: 开启多租户时,全局参数增加租户id
- if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){
- ParameterBuilder tenantPar = new ParameterBuilder();
- tenantPar.name(CommonConstant.TENANT_ID).description("租户ID").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
- pars.add(tenantPar.build());
- }
- //update-end-author:liusq---date:2024-08-15--for: 开启多租户时,全局参数增加租户id
-
- return pars;
- }
-
- /**
- * api文档的详细信息函数,注意这里的注解引用的是哪个
- *
- * @return
- */
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- // //大标题
- .title("JeecgBoot 后台服务API接口文档")
- // 版本号
- .version("1.0")
-// .termsOfServiceUrl("NO terms of service")
- // 描述
- .description("后台API接口")
- // 作者
- .contact(new Contact("北京国炬信息技术有限公司","www.jeccg.com","jeecgos@163.com"))
- .license("The Apache License, Version 2.0")
- .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
- .build();
- }
-
- /**
- * 新增 securityContexts 保持登录状态
- */
- private List securityContexts() {
- return new ArrayList(
- Collections.singleton(SecurityContext.builder()
- .securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex("^(?!auth).*$"))
- .build())
- );
- }
-
- private List defaultAuth() {
- AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
- authorizationScopes[0] = authorizationScope;
- return new ArrayList(
- Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
- }
-
- /**
- * 解决springboot2.6 和springfox不兼容问题
- * @return
- */
- @Bean
- public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
- return new BeanPostProcessor() {
-
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- if (bean instanceof WebMvcRequestHandlerProvider) {
- customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
- }
- return bean;
- }
-
- private void customizeSpringfoxHandlerMappings(List mappings) {
- List copy = mappings.stream()
- .filter(mapping -> mapping.getPatternParser() == null)
- .collect(Collectors.toList());
- mappings.clear();
- mappings.addAll(copy);
- }
-
- @SuppressWarnings("unchecked")
- private List getHandlerMappings(Object bean) {
- try {
- Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
- field.setAccessible(true);
- return (List) field.get(bean);
- } catch (IllegalArgumentException | IllegalAccessException e) {
- throw new IllegalStateException(e);
- }
- }
- };
- }
-
-
-}
+//package org.jeecg.config;
+//
+//
+//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+//import org.jeecg.common.constant.CommonConstant;
+//import org.springframework.beans.BeansException;
+//import org.springframework.beans.factory.config.BeanPostProcessor;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.context.annotation.Import;
+//import org.springframework.util.ReflectionUtils;
+//import org.springframework.web.bind.annotation.RestController;
+//import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+//import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
+//import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.ParameterBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.oas.annotations.EnableOpenApi;
+//import springfox.documentation.schema.ModelRef;
+//import springfox.documentation.service.*;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spi.service.contexts.SecurityContext;
+//import springfox.documentation.spring.web.plugins.Docket;
+//import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+//import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
+//import springfox.documentation.swagger2.annotations.EnableSwagger2;
+//
+//import java.lang.reflect.Field;
+//import java.util.ArrayList;
+//import java.util.Collections;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * @Author scott
+// */
+//@Configuration
+//@EnableSwagger2 //开启 Swagger2
+//@EnableKnife4j //开启 knife4j,可以不写
+//@Import(BeanValidatorPluginsConfiguration.class)
+//public class Swagger2Config implements WebMvcConfigurer {
+//
+// /**
+// *
+// * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
+// *
+// * @param registry
+// */
+// @Override
+// public void addResourceHandlers(ResourceHandlerRegistry registry) {
+// registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+// registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
+// registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+// }
+//
+// /**
+// * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
+// *
+// * @return Docket
+// */
+// @Bean(value = "defaultApi2")
+// public Docket defaultApi2() {
+// return new Docket(DocumentationType.SWAGGER_2)
+// .apiInfo(apiInfo())
+// .select()
+// //此包路径下的类,才生成接口文档
+// .apis(RequestHandlerSelectors.basePackage("org.jeecg"))
+// //加了ApiOperation注解的类,才生成接口文档
+// .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
+// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+// .paths(PathSelectors.any())
+// .build()
+// .securitySchemes(Collections.singletonList(securityScheme()))
+// .securityContexts(securityContexts())
+// .globalOperationParameters(setHeaderToken());
+// }
+//
+// /***
+// * oauth2配置
+// * 需要增加swagger授权回调地址
+// * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html
+// * @return
+// */
+// @Bean
+// SecurityScheme securityScheme() {
+// return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header");
+// }
+// /**
+// * JWT token
+// * @return
+// */
+// private List setHeaderToken() {
+// ParameterBuilder tokenPar = new ParameterBuilder();
+// List pars = new ArrayList<>();
+// tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+// pars.add(tokenPar.build());
+// return pars;
+// }
+//
+// /**
+// * api文档的详细信息函数,注意这里的注解引用的是哪个
+// *
+// * @return
+// */
+// private ApiInfo apiInfo() {
+// return new ApiInfoBuilder()
+// // //大标题
+// .title("JeecgBoot 后台服务API接口文档")
+// // 版本号
+// .version("1.0")
+//// .termsOfServiceUrl("NO terms of service")
+// // 描述
+// .description("后台API接口")
+// // 作者
+// .contact(new Contact("北京国炬信息技术有限公司","www.jeccg.com","jeecgos@163.com"))
+// .license("The Apache License, Version 2.0")
+// .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
+// .build();
+// }
+//
+// /**
+// * 新增 securityContexts 保持登录状态
+// */
+// private List securityContexts() {
+// return new ArrayList(
+// Collections.singleton(SecurityContext.builder()
+// .securityReferences(defaultAuth())
+// .forPaths(PathSelectors.regex("^(?!auth).*$"))
+// .build())
+// );
+// }
+//
+// private List defaultAuth() {
+// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+// authorizationScopes[0] = authorizationScope;
+// return new ArrayList(
+// Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
+// }
+//
+// /**
+// * 解决springboot2.6 和springfox不兼容问题
+// * @return
+// */
+// @Bean
+// public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+// return new BeanPostProcessor() {
+//
+// @Override
+// public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+// if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+// customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+// }
+// return bean;
+// }
+//
+// private void customizeSpringfoxHandlerMappings(List mappings) {
+// List copy = mappings.stream()
+// .filter(mapping -> mapping.getPatternParser() == null)
+// .collect(Collectors.toList());
+// mappings.clear();
+// mappings.addAll(copy);
+// }
+//
+// @SuppressWarnings("unchecked")
+// private List getHandlerMappings(Object bean) {
+// try {
+// Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+// field.setAccessible(true);
+// return (List) field.get(bean);
+// } catch (IllegalArgumentException | IllegalAccessException e) {
+// throw new IllegalStateException(e);
+// }
+// }
+// };
+// }
+//
+//
+//}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java
new file mode 100644
index 00000000..ed3880b9
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java
@@ -0,0 +1,109 @@
+package org.jeecg.config;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.Paths;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import io.swagger.v3.oas.models.security.SecurityRequirement;
+import io.swagger.v3.oas.models.security.SecurityScheme;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.constant.CommonConstant;
+import org.springdoc.core.GroupedOpenApi;
+import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author eightmonth
+ */
+@Slf4j
+@Configuration
+public class Swagger3Config implements WebMvcConfigurer {
+ // 定义不需要注入安全要求的路径集合
+ Set excludedPaths = new HashSet<>(Arrays.asList(
+ "/sys/randomImage/{key}",
+ "/sys/login",
+ "/sys/phoneLogin",
+ "/sys/mLogin",
+ "/sys/sms",
+ "/sys/cas/client/validateLogin",
+ "/test/jeecgDemo/demo3",
+ "/sys/thirdLogin/**",
+ "/sys/user/register"
+ ));
+
+ /**
+ *
+ * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
+ *
+ * @param registry
+ */
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+ }
+
+ @Bean
+ public GroupedOpenApi swaggerOpenApi() {
+ return GroupedOpenApi.builder()
+ .group("default")
+ .packagesToScan("org.jeecg")
+ // 剔除以下几个包路径的接口生成文档
+ .packagesToExclude("org.jeecg.modules.drag", "org.jeecg.modules.online", "org.jeecg.modules.jmreport")
+ // 加了Operation注解的方法,才生成接口文档
+ .addOpenApiMethodFilter(method -> method.isAnnotationPresent(Operation.class))
+ .addOpenApiCustomiser(globalOpenApiCustomizer())
+ .build();
+ }
+
+ @Bean
+ public GlobalOpenApiCustomizer globalOpenApiCustomizer() {
+ return openApi -> {
+ // 全局添加鉴权参数
+ if (openApi.getPaths() != null) {
+ openApi.getPaths().forEach((path, pathItem) -> {
+ log.info("path: {}", path);
+ // 检查当前路径是否在排除列表中
+ boolean isExcluded = excludedPaths.stream().anyMatch(excludedPath ->
+ excludedPath.equals(path) ||
+ (excludedPath.endsWith("**") && path.startsWith(excludedPath.substring(0, excludedPath.length() - 2)))
+ );
+
+ if (!isExcluded) {
+ // 接口添加鉴权参数
+ pathItem.readOperations()
+ .forEach(operation ->
+ operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN))
+ );
+ }
+ });
+ }
+ };
+ }
+
+ @Bean
+ public OpenAPI customOpenAPI() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("JeecgBoot 后台服务API接口文档")
+ .version("3.7.4")
+ .contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com"))
+ .description( "后台API接口")
+ .termsOfService("NO terms of service")
+ .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html")))
+ .addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN))
+ .components(new Components().addSecuritySchemes(CommonConstant.X_ACCESS_TOKEN,
+ new SecurityScheme().name(CommonConstant.X_ACCESS_TOKEN).type(SecurityScheme.Type.HTTP)));
+ }
+}
\ No newline at end of file
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
index 82c02a7d..e2a68a96 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -134,7 +134,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/swagger**/**", "anon");
filterChainDefinitionMap.put("/webjars/**", "anon");
- filterChainDefinitionMap.put("/v2/**", "anon");
+ filterChainDefinitionMap.put("/v3/**", "anon");
// update-begin--Author:sunjianlei Date:20210510 for:排除消息通告查看详情页面(用于第三方APP)
filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon");
@@ -320,7 +320,7 @@ public class ShiroConfig {
return sentinelManager;
}
-
+
// redis 单机支持,在集群为空,或者集群无机器时候使用 add by jzyadmin@163.com
if (lettuceConnectionFactory.getClusterConfiguration() == null || lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().isEmpty()) {
RedisManager redisManager = new RedisManager();
diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/gpt/service/impl/ChatServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/gpt/service/impl/ChatServiceImpl.java
index c22ace48..c24b0dce 100644
--- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/gpt/service/impl/ChatServiceImpl.java
+++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/gpt/service/impl/ChatServiceImpl.java
@@ -9,7 +9,7 @@ import com.unfbx.chatgpt.entity.chat.Message;
import com.unfbx.chatgpt.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
-import org.jeecg.chatgpt.prop.AiChatProperties;
+import org.jeecg.ai.prop.AiChatProperties;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml b/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml
index 8fae6e58..117ad135 100644
--- a/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml
+++ b/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml
@@ -73,7 +73,7 @@
com.github.xiaoymin
- knife4j-openapi2-spring-boot-starter
+ knife4j-gateway-spring-boot-starter
${knife4j-spring-boot-starter.version}
diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml b/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
index 6a1c4922..310f3f21 100644
--- a/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
+++ b/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
@@ -1,6 +1,15 @@
server:
port: 9999
+knife4j:
+ gateway:
+ enabled: true
+ strategy: discover
+ discover:
+ excluded-services: ${spring.application.name}
+ enabled: true
+ version: OpenAPI3
+
spring:
application:
name: jeecg-gateway
diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml b/jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml
index 53f5eed6..9841caa3 100644
--- a/jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml
+++ b/jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/application.yml
@@ -1,6 +1,11 @@
server:
port: 7001
-
+
+springdoc:
+ packages-to-exclude:
+ - org.jeecg.modules.drag
+ - org.jeecg.modules.online
+ - org.jeecg.modules.jmreport
spring:
application:
name: jeecg-system