diff --git a/cloud-auth/pom.xml b/cloud-auth/pom.xml
index 09495d2..0a76aae 100644
--- a/cloud-auth/pom.xml
+++ b/cloud-auth/pom.xml
@@ -52,6 +52,12 @@
cloud-common-security
+
+
+ com.muyu
+ cloud-common-api-doc
+
+
diff --git a/cloud-common/cloud-common-swagger/pom.xml b/cloud-common/cloud-common-api-doc/pom.xml
similarity index 52%
rename from cloud-common/cloud-common-swagger/pom.xml
rename to cloud-common/cloud-common-api-doc/pom.xml
index b4804c8..261e760 100644
--- a/cloud-common/cloud-common-swagger/pom.xml
+++ b/cloud-common/cloud-common-api-doc/pom.xml
@@ -9,10 +9,10 @@
4.0.0
- cloud-common-swagger
+ cloud-common-api-doc
- cloud-common-swagger系统接口
+ cloud-common-api-doc系统接口
@@ -23,22 +23,10 @@
spring-boot-starter-web
-
-
+
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
- 2.5.0
-
-
- slf4j-api
- org.slf4j
-
-
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
diff --git a/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java b/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java
new file mode 100644
index 0000000..08d7bff
--- /dev/null
+++ b/cloud-common/cloud-common-api-doc/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java
@@ -0,0 +1,34 @@
+package com.muyu.common.api.doc.config;
+
+import io.swagger.v3.oas.models.ExternalDocumentation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SpringDocConfig {
+
+ @Value("${spring.application.name}")
+ private String applicationName;
+
+ private Info info(){
+ return new Info()
+ .title(String.format("%S-微服务接口文档", applicationName))
+ .description("微服务接口文档,根据此接口文档可以进行前后端功能对接/联调")
+ .version("v1.0.0");
+ }
+ private ExternalDocumentation externalDocumentation() {
+ return new ExternalDocumentation()
+ .description("服务总站")
+ .url("https://gitea.qinmian.online");
+ }
+
+ @Bean
+ public OpenAPI springShopOpenAPI() {
+ return new OpenAPI()
+ .info(info())
+ .externalDocs(externalDocumentation());
+ }
+}
diff --git a/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..4b1b17b
--- /dev/null
+++ b/cloud-common/cloud-common-api-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.muyu.common.api.doc.config.SpringDocConfig
\ No newline at end of file
diff --git a/cloud-common/cloud-common-core/pom.xml b/cloud-common/cloud-common-core/pom.xml
index cd7b8d1..57cf128 100644
--- a/cloud-common/cloud-common-core/pom.xml
+++ b/cloud-common/cloud-common-core/pom.xml
@@ -142,12 +142,6 @@
javax.annotation-api
-
-
- io.swagger
- swagger-annotations
-
-
org.projectlombok
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java
deleted file mode 100644
index 8b56946..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/annotation/EnableCustomSwagger2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.muyu.common.swagger.annotation;
-
-import com.muyu.common.swagger.config.SwaggerAutoConfiguration;
-import org.springframework.context.annotation.Import;
-
-import java.lang.annotation.*;
-
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-@Import({SwaggerAutoConfiguration.class})
-public @interface EnableCustomSwagger2 {
-
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java
deleted file mode 100644
index a58a108..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerAutoConfiguration.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.*;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Predicate;
-
-@Configuration
-@EnableSwagger2
-@EnableConfigurationProperties(SwaggerProperties.class)
-@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
-@Import({SwaggerBeanPostProcessor.class, SwaggerWebConfiguration.class})
-public class SwaggerAutoConfiguration {
- /**
- * 默认的排除路径,排除Spring Boot默认的错误处理路径和端点
- */
- private static final List DEFAULT_EXCLUDE_PATH = Arrays.asList("/error", "/actuator/**");
-
- private static final String BASE_PATH = "/**";
-
- @Bean
- public Docket api (SwaggerProperties swaggerProperties) {
- // base-path处理
- if (swaggerProperties.getBasePath().isEmpty()) {
- swaggerProperties.getBasePath().add(BASE_PATH);
- }
- // noinspection unchecked
- List> basePath = new ArrayList>();
- swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path)));
-
- // exclude-path处理
- if (swaggerProperties.getExcludePath().isEmpty()) {
- swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
- }
-
- List> excludePath = new ArrayList<>();
- swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
-
- ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
- .apiInfo(apiInfo(swaggerProperties)).select()
- .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()));
-
- swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p)));
- swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate()));
-
- return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/");
- }
-
- /**
- * 安全模式,这里指定token通过Authorization头请求头传递
- */
- private List securitySchemes () {
- List apiKeyList = new ArrayList();
- apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
- return apiKeyList;
- }
-
- /**
- * 安全上下文
- */
- private List securityContexts () {
- List securityContexts = new ArrayList<>();
- securityContexts.add(
- SecurityContext.builder()
- .securityReferences(defaultAuth())
- .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
- .build());
- return securityContexts;
- }
-
- /**
- * 默认的全局鉴权策略
- *
- * @return
- */
- private List defaultAuth () {
- AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
- authorizationScopes[0] = authorizationScope;
- List securityReferences = new ArrayList<>();
- securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
- return securityReferences;
- }
-
- private ApiInfo apiInfo (SwaggerProperties swaggerProperties) {
- return new ApiInfoBuilder()
- .title(swaggerProperties.getTitle())
- .description(swaggerProperties.getDescription())
- .license(swaggerProperties.getLicense())
- .licenseUrl(swaggerProperties.getLicenseUrl())
- .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl())
- .contact(new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail()))
- .version(swaggerProperties.getVersion())
- .build();
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java
deleted file mode 100644
index 13d252f..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerBeanPostProcessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
-import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
-import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
-
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * swagger 在 springboot 2.6.x 不兼容问题的处理
- *
- * @author muyu
- */
-public class SwaggerBeanPostProcessor implements 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/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java
deleted file mode 100644
index a0dac64..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerProperties.java
+++ /dev/null
@@ -1,296 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@ConfigurationProperties("swagger")
-public class SwaggerProperties {
- /**
- * 是否开启swagger
- */
- private Boolean enabled;
-
- /**
- * swagger会解析的包路径
- **/
- private String basePackage = "";
-
- /**
- * swagger会解析的url规则
- **/
- private List basePath = new ArrayList<>();
-
- /**
- * 在basePath基础上需要排除的url规则
- **/
- private List excludePath = new ArrayList<>();
-
- /**
- * 标题
- **/
- private String title = "";
-
- /**
- * 描述
- **/
- private String description = "";
-
- /**
- * 版本
- **/
- private String version = "";
-
- /**
- * 许可证
- **/
- private String license = "";
-
- /**
- * 许可证URL
- **/
- private String licenseUrl = "";
-
- /**
- * 服务条款URL
- **/
- private String termsOfServiceUrl = "";
-
- /**
- * host信息
- **/
- private String host = "";
-
- /**
- * 联系人信息
- */
- private Contact contact = new Contact();
-
- /**
- * 全局统一鉴权配置
- **/
- private Authorization authorization = new Authorization();
-
- public Boolean getEnabled () {
- return enabled;
- }
-
- public void setEnabled (Boolean enabled) {
- this.enabled = enabled;
- }
-
- public String getBasePackage () {
- return basePackage;
- }
-
- public void setBasePackage (String basePackage) {
- this.basePackage = basePackage;
- }
-
- public List getBasePath () {
- return basePath;
- }
-
- public void setBasePath (List basePath) {
- this.basePath = basePath;
- }
-
- public List getExcludePath () {
- return excludePath;
- }
-
- public void setExcludePath (List excludePath) {
- this.excludePath = excludePath;
- }
-
- public String getTitle () {
- return title;
- }
-
- public void setTitle (String title) {
- this.title = title;
- }
-
- public String getDescription () {
- return description;
- }
-
- public void setDescription (String description) {
- this.description = description;
- }
-
- public String getVersion () {
- return version;
- }
-
- public void setVersion (String version) {
- this.version = version;
- }
-
- public String getLicense () {
- return license;
- }
-
- public void setLicense (String license) {
- this.license = license;
- }
-
- public String getLicenseUrl () {
- return licenseUrl;
- }
-
- public void setLicenseUrl (String licenseUrl) {
- this.licenseUrl = licenseUrl;
- }
-
- public String getTermsOfServiceUrl () {
- return termsOfServiceUrl;
- }
-
- public void setTermsOfServiceUrl (String termsOfServiceUrl) {
- this.termsOfServiceUrl = termsOfServiceUrl;
- }
-
- public String getHost () {
- return host;
- }
-
- public void setHost (String host) {
- this.host = host;
- }
-
- public Contact getContact () {
- return contact;
- }
-
- public void setContact (Contact contact) {
- this.contact = contact;
- }
-
- public Authorization getAuthorization () {
- return authorization;
- }
-
- public void setAuthorization (Authorization authorization) {
- this.authorization = authorization;
- }
-
- public static class Contact {
- /**
- * 联系人
- **/
- private String name = "";
- /**
- * 联系人url
- **/
- private String url = "";
- /**
- * 联系人email
- **/
- private String email = "";
-
- public String getName () {
- return name;
- }
-
- public void setName (String name) {
- this.name = name;
- }
-
- public String getUrl () {
- return url;
- }
-
- public void setUrl (String url) {
- this.url = url;
- }
-
- public String getEmail () {
- return email;
- }
-
- public void setEmail (String email) {
- this.email = email;
- }
- }
-
- public static class Authorization {
- /**
- * 鉴权策略ID,需要和SecurityReferences ID保持一致
- */
- private String name = "";
-
- /**
- * 需要开启鉴权URL的正则
- */
- private String authRegex = "^.*$";
-
- /**
- * 鉴权作用域列表
- */
- private List authorizationScopeList = new ArrayList<>();
-
- private List tokenUrlList = new ArrayList<>();
-
- public String getName () {
- return name;
- }
-
- public void setName (String name) {
- this.name = name;
- }
-
- public String getAuthRegex () {
- return authRegex;
- }
-
- public void setAuthRegex (String authRegex) {
- this.authRegex = authRegex;
- }
-
- public List getAuthorizationScopeList () {
- return authorizationScopeList;
- }
-
- public void setAuthorizationScopeList (List authorizationScopeList) {
- this.authorizationScopeList = authorizationScopeList;
- }
-
- public List getTokenUrlList () {
- return tokenUrlList;
- }
-
- public void setTokenUrlList (List tokenUrlList) {
- this.tokenUrlList = tokenUrlList;
- }
- }
-
- public static class AuthorizationScope {
- /**
- * 作用域名称
- */
- private String scope = "";
-
- /**
- * 作用域描述
- */
- private String description = "";
-
- public String getScope () {
- return scope;
- }
-
- public void setScope (String scope) {
- this.scope = scope;
- }
-
- public String getDescription () {
- return description;
- }
-
- public void setDescription (String description) {
- this.description = description;
- }
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java b/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java
deleted file mode 100644
index 48d66f6..0000000
--- a/cloud-common/cloud-common-swagger/src/main/java/com/muyu/common/swagger/config/SwaggerWebConfiguration.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.muyu.common.swagger.config;
-
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * swagger 资源映射路径
- *
- * @author muyu
- */
-public class SwaggerWebConfiguration implements WebMvcConfigurer {
- @Override
- public void addResourceHandlers (ResourceHandlerRegistry registry) {
- /** swagger-ui 地址 */
- registry.addResourceHandler("/swagger-ui/**")
- .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
- }
-}
diff --git a/cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index b15b749..0000000
--- a/cloud-common/cloud-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1,3 +0,0 @@
-# com.muyu.common.swagger.config.SwaggerAutoConfiguration
-# com.muyu.common.swagger.config.SwaggerWebConfiguration
-# com.muyu.common.swagger.config.SwaggerBeanPostProcessor
diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml
index 5b03fd4..0d57a4e 100644
--- a/cloud-common/pom.xml
+++ b/cloud-common/pom.xml
@@ -13,7 +13,7 @@
cloud-common-core
cloud-common-redis
cloud-common-seata
- cloud-common-swagger
+ cloud-common-api-doc
cloud-common-security
cloud-common-datascope
cloud-common-datasource
diff --git a/cloud-gateway/pom.xml b/cloud-gateway/pom.xml
index ab86356..106c740 100644
--- a/cloud-gateway/pom.xml
+++ b/cloud-gateway/pom.xml
@@ -76,16 +76,10 @@
cloud-common-redis
-
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
- io.springfox
- springfox-swagger2
- ${swagger.fox.version}
+ com.github.xiaoymin
+ knife4j-gateway-spring-boot-starter
+ 4.5.0
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java b/cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java
deleted file mode 100644
index c048db8..0000000
--- a/cloud-gateway/src/main/java/com/muyu/gateway/config/SwaggerProvider.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.muyu.gateway.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.gateway.config.GatewayProperties;
-import org.springframework.cloud.gateway.route.RouteLocator;
-import org.springframework.cloud.gateway.support.NameUtils;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-import org.springframework.web.reactive.config.ResourceHandlerRegistry;
-import org.springframework.web.reactive.config.WebFluxConfigurer;
-import springfox.documentation.swagger.web.SwaggerResource;
-import springfox.documentation.swagger.web.SwaggerResourcesProvider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 聚合系统接口
- *
- * @author muyu
- */
-@Component
-public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer {
- /**
- * Swagger2默认的url后缀
- */
- public static final String SWAGGER2URL = "/v2/api-docs";
-
- /**
- * 网关路由
- */
- @Lazy
- @Autowired
- private RouteLocator routeLocator;
-
- @Autowired
- private GatewayProperties gatewayProperties;
-
- /**
- * 聚合其他服务接口
- *
- * @return
- */
- @Override
- public List get () {
- List resourceList = new ArrayList<>();
- List routes = new ArrayList<>();
- // 获取网关中配置的route
- routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
- gatewayProperties.getRoutes().stream()
- .filter(routeDefinition -> routes
- .contains(routeDefinition.getId()))
- .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
- .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName()))
- .filter(predicateDefinition -> !"cloud-auth".equalsIgnoreCase(routeDefinition.getId()))
- .forEach(predicateDefinition -> resourceList
- .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs()
- .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL)))));
- return resourceList;
- }
-
- private SwaggerResource swaggerResource (String name, String location) {
- SwaggerResource swaggerResource = new SwaggerResource();
- swaggerResource.setName(name);
- swaggerResource.setLocation(location);
- swaggerResource.setSwaggerVersion("2.0");
- return swaggerResource;
- }
-
- @Override
- public void addResourceHandlers (ResourceHandlerRegistry registry) {
- /** swagger-ui 地址 */
- registry.addResourceHandler("/swagger-ui/**")
- .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
- }
-}
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLogFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java
similarity index 99%
rename from cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLogFilter.java
rename to cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java
index 6307684..9ceec12 100644
--- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLogFilter.java
+++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AccessLogFilter.java
@@ -1,8 +1,9 @@
-package com.muyu.gateway.filter.log;
+package com.muyu.gateway.filter;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.alibaba.nacos.common.utils.StringUtils;
import com.muyu.common.core.constant.SecurityConstants;
+import com.muyu.gateway.model.AccessLog;
import com.muyu.gateway.utils.WebFrameworkUtils;
import lombok.extern.log4j.Log4j2;
import org.reactivestreams.Publisher;
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java b/cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java
deleted file mode 100644
index c2a7b67..0000000
--- a/cloud-gateway/src/main/java/com/muyu/gateway/handler/SwaggerHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.muyu.gateway.handler;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import reactor.core.publisher.Mono;
-import springfox.documentation.swagger.web.*;
-
-import java.util.Optional;
-
-@RestController
-@RequestMapping("/swagger-resources")
-public class SwaggerHandler {
- private final SwaggerResourcesProvider swaggerResources;
- @Autowired(required = false)
- private SecurityConfiguration securityConfiguration;
- @Autowired(required = false)
- private UiConfiguration uiConfiguration;
-
- @Autowired
- public SwaggerHandler (SwaggerResourcesProvider swaggerResources) {
- this.swaggerResources = swaggerResources;
- }
-
- @GetMapping("/configuration/security")
- public Mono> securityConfiguration () {
- return Mono.just(new ResponseEntity<>(
- Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()),
- HttpStatus.OK));
- }
-
- @GetMapping("/configuration/ui")
- public Mono> uiConfiguration () {
- return Mono.just(new ResponseEntity<>(
- Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK));
- }
-
- @SuppressWarnings("rawtypes")
- @GetMapping("")
- public Mono swaggerResources () {
- return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
- }
-}
diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLog.java b/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java
similarity index 95%
rename from cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLog.java
rename to cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java
index a6bb706..b52eb3e 100644
--- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/log/AccessLog.java
+++ b/cloud-gateway/src/main/java/com/muyu/gateway/model/AccessLog.java
@@ -1,6 +1,5 @@
-package com.muyu.gateway.filter.log;
+package com.muyu.gateway.model;
-import com.alibaba.cloud.commons.io.StringBuilderWriter;
import com.muyu.common.core.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -9,7 +8,6 @@ import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.cloud.gateway.route.Route;
-import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.util.MultiValueMap;
diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml
index 6cc9f34..73409c9 100644
--- a/cloud-gateway/src/main/resources/bootstrap.yml
+++ b/cloud-gateway/src/main/resources/bootstrap.yml
@@ -61,3 +61,15 @@ spring:
namespace: ${nacos.namespace}
data-type: json
rule-type: gw-flow
+knife4j:
+ gateway:
+ enabled: true
+ # 指定服务发现的模式聚合微服务文档,并且是默认`default`分组
+ strategy: discover
+ discover:
+ enabled: true
+ # 指定版本号(Swagger2|OpenAPI3)
+ version : openapi3
+ # 需要排除的微服务(eg:网关服务)
+ excluded-services:
+ - cloud-monitor
diff --git a/cloud-modules/cloud-modules-file/pom.xml b/cloud-modules/cloud-modules-file/pom.xml
index 11f3860..e151176 100644
--- a/cloud-modules/cloud-modules-file/pom.xml
+++ b/cloud-modules/cloud-modules-file/pom.xml
@@ -48,22 +48,16 @@
${minio.version}
-
-
-
com.muyu
cloud-common-system
+
- org.springframework.boot
- spring-boot-starter-web
+ com.muyu
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-gen/pom.xml b/cloud-modules/cloud-modules-gen/pom.xml
index 30b0d48..32c6fa3 100644
--- a/cloud-modules/cloud-modules-gen/pom.xml
+++ b/cloud-modules/cloud-modules-gen/pom.xml
@@ -41,13 +41,6 @@
spring-boot-starter-actuator
-
-
-
org.apache.velocity
@@ -66,15 +59,10 @@
cloud-common-log
-
-
-
+
- org.springframework.boot
- spring-boot-starter-web
+ com.muyu
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java
index 4868540..da3eb43 100644
--- a/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java
+++ b/cloud-modules/cloud-modules-gen/src/main/java/com/muyu/gen/CloudGenApplication.java
@@ -2,7 +2,6 @@ package com.muyu.gen;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
-//import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @author muyu
*/
@EnableCustomConfig
-//@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class CloudGenApplication {
diff --git a/cloud-modules/cloud-modules-job/pom.xml b/cloud-modules/cloud-modules-job/pom.xml
index 2676963..69ed8ee 100644
--- a/cloud-modules/cloud-modules-job/pom.xml
+++ b/cloud-modules/cloud-modules-job/pom.xml
@@ -41,13 +41,6 @@
spring-boot-starter-actuator
-
-
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
org.quartz-scheduler
@@ -72,15 +65,10 @@
cloud-common-log
-
-
-
+
- org.springframework.boot
- spring-boot-starter-web
+ com.muyu
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
index fcb8d9b..b8342e3 100644
--- a/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
+++ b/cloud-modules/cloud-modules-job/src/main/java/com/muyu/job/CloudJobApplication.java
@@ -2,7 +2,6 @@ package com.muyu.job;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
-//import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @author muyu
*/
@EnableCustomConfig
-//@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class CloudJobApplication {
diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml
index 43f0b1f..f1e7d98 100644
--- a/cloud-modules/cloud-modules-system/pom.xml
+++ b/cloud-modules/cloud-modules-system/pom.xml
@@ -41,13 +41,6 @@
spring-boot-starter-actuator
-
-
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
com.mysql
@@ -72,21 +65,10 @@
cloud-common-log
-
-
+
com.muyu
- cloud-common-swagger
- -->
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
- 2.6.0
+ cloud-common-api-doc
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java
index 8d86380..b01e5db 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/CloudSystemApplication.java
@@ -2,7 +2,6 @@ package com.muyu.system;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
-//import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java
index 5d97890..3bced52 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysConfigController.java
@@ -10,11 +10,13 @@ import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.system.domain.SysConfig;
import com.muyu.system.service.SysConfigService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import jakarta.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
@@ -25,6 +27,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/config")
+@Tag(name = "SysConfigController", description = "系统参数配置")
public class SysConfigController extends BaseController {
@Autowired
@@ -35,6 +38,7 @@ public class SysConfigController extends BaseController {
*/
@RequiresPermissions("system:config:list")
@GetMapping("/list")
+ @Operation(summary = "查询集合", description = "更新水果信息")
public Result> list (SysConfig config) {
startPage();
List list = configService.pageQuery(config);
diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
index b57c6de..d31aae7 100644
--- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
@@ -8,10 +8,6 @@ nacos:
user-name: nacos
password: nacos
namespace: muyu-cloud
-# swagger-ui custom path
-springdoc:
- swagger-ui:
- path: /swagger-ui.html
# Spring
spring:
@@ -53,4 +49,4 @@ spring:
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging:
level:
- com.muyu.system.mapper: DEBUG
+ com.muyu.system.mapper: DEBUG
\ No newline at end of file
diff --git a/init-file/cloud-system.sql b/init-file/cloud-system.sql
index 9621a73..0eb4e54 100644
--- a/init-file/cloud-system.sql
+++ b/init-file/cloud-system.sql
@@ -303,7 +303,7 @@ INSERT INTO `sys_menu` VALUES (112, 'Nacos控制台', 2, 4, 'http://localhost:88
INSERT INTO `sys_menu` VALUES (113, 'Admin控制台', 2, 5, 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', '2024-05-23 15:08:18', '', NULL, '服务监控菜单');
INSERT INTO `sys_menu` VALUES (114, '表单构建', 3, 1, 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', '2024-05-23 15:08:18', '', NULL, '表单构建菜单');
INSERT INTO `sys_menu` VALUES (115, '代码生成', 3, 2, 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', '2024-05-23 15:08:18', '', NULL, '代码生成菜单');
-INSERT INTO `sys_menu` VALUES (116, '系统接口', 3, 3, 'http://localhost:8080/swagger-ui/index.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', '2024-05-23 15:08:18', '', NULL, '系统接口菜单');
+INSERT INTO `sys_menu` VALUES (116, '系统接口', 3, 3, 'http://localhost:8080/doc.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', '2024-05-23 15:08:18', '', NULL, '系统接口菜单');
INSERT INTO `sys_menu` VALUES (500, '操作日志', 108, 1, 'operlog', 'system/operlog/index', '', 1, 0, 'C', '0', '0', 'system:operlog:list', 'form', 'admin', '2024-05-23 15:08:18', '', NULL, '操作日志菜单');
INSERT INTO `sys_menu` VALUES (501, '登录日志', 108, 2, 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor', 'admin', '2024-05-23 15:08:18', '', NULL, '登录日志菜单');
INSERT INTO `sys_menu` VALUES (1000, '用户查询', 100, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin', '2024-05-23 15:08:18', '', NULL, '');
diff --git a/init-file/nacos_config.zip b/init-file/nacos_config.zip
index 437ec19..047c1ae 100644
Binary files a/init-file/nacos_config.zip and b/init-file/nacos_config.zip differ
diff --git a/pom.xml b/pom.xml
index d730315..56712c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,7 @@
6.1.0-M2
1.3.2
5.8.27
+ 4.1.0
@@ -86,6 +87,13 @@
${apm-logback.version}
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+ ${knife4j-openapi3.version}
+
+
jakarta.servlet
@@ -184,7 +192,7 @@
com.muyu
- cloud-common-swagger
+ cloud-common-api-doc
${muyu.version}