From 60132e994752712b50501de8a68ee9332c953dd1 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期二, 10 五月 2022 10:24:25 +0800
Subject: [PATCH] fix 修复 update-sql 追加字段因顺序问题导致插入失败
---
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java | 128 +++++++++++++++++++++++++++---------------
1 files changed, 82 insertions(+), 46 deletions(-)
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
index 4a956a2..2424981 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
@@ -7,8 +7,13 @@
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.framework.config.properties.SwaggerProperties;
import io.swagger.models.auth.In;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
+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.util.ReflectionUtils;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
@@ -16,8 +21,11 @@
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 javax.annotation.PostConstruct;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
@@ -26,56 +34,84 @@
*
* @author Lion Li
*/
+@RequiredArgsConstructor
@Configuration
@EnableKnife4j
public class SwaggerConfig {
- @Autowired
- private SwaggerProperties swaggerProperties;
- @Autowired
- private SaTokenConfig saTokenConfig;
+ private final SwaggerProperties swaggerProperties;
+ private final SaTokenConfig saTokenConfig;
+ private final OpenApiExtensionResolver openApiExtensionResolver;
- @Autowired
- private OpenApiExtensionResolver openApiExtensionResolver;
+ /**
+ * 鐢ㄤ簬閫傞厤springboot 2.6
+ */
+ @Bean
+ @SuppressWarnings("all")
+ public 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 <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
+ mappings.removeIf(mapping -> mapping.getPatternParser() != null);
+ }
+
+ private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
+ try {
+ Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+ field.setAccessible(true);
+ return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ };
+ }
/**
* 鍒涘缓API
*/
@PostConstruct
public void createRestApi() {
- for (SwaggerProperties.Groups group : swaggerProperties.getGroups()) {
- String basePackage = group.getBasePackage();
- Docket docket = new Docket(DocumentationType.OAS_30)
- .enable(swaggerProperties.getEnabled())
- // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛�
- .apiInfo(apiInfo())
- // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず
- .select()
- // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲�
- //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ
- .apis(RequestHandlerSelectors.basePackage(basePackage))
- // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any())
- .paths(PathSelectors.any())
- .build()
- .groupName(group.getName())
- // 璁剧疆瀹夊叏妯″紡锛宻wagger鍙互璁剧疆璁块棶token
- .securitySchemes(securitySchemes())
- .securityContexts(securityContexts())
- .extensions(openApiExtensionResolver.buildExtensions(group.getName()))
- .pathMapping(swaggerProperties.getPathMapping());
- String beanName = StringUtils.substringAfterLast(basePackage, ".") + "Docket";
- SpringUtils.registerBean(beanName, docket);
- }
+ for (SwaggerProperties.Groups group : swaggerProperties.getGroups()) {
+ String basePackage = group.getBasePackage();
+ Docket docket = new Docket(DocumentationType.OAS_30)
+ .enable(swaggerProperties.getEnabled())
+ // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛�
+ .apiInfo(apiInfo())
+ // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず
+ .select()
+ // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲�
+ //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+ // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ
+ .apis(RequestHandlerSelectors.basePackage(basePackage))
+ // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any())
+ .paths(PathSelectors.any())
+ .build()
+ .groupName(group.getName())
+ // 璁剧疆瀹夊叏妯″紡锛宻wagger鍙互璁剧疆璁块棶token
+ .securitySchemes(securitySchemes())
+ .securityContexts(securityContexts())
+ .extensions(openApiExtensionResolver.buildExtensions(group.getName()))
+ .pathMapping(swaggerProperties.getPathMapping());
+ String beanName = StringUtils.substringAfterLast(basePackage, ".") + "Docket";
+ SpringUtils.registerBean(beanName, docket);
+ }
}
/**
* 瀹夊叏妯″紡锛岃繖閲屾寚瀹歵oken閫氳繃Authorization澶磋姹傚ご浼犻��
*/
private List<SecurityScheme> securitySchemes() {
- List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
+ List<SecurityScheme> apiKeyList = new ArrayList<>();
String header = saTokenConfig.getTokenName();
- apiKeyList.add(new ApiKey(header, header, In.HEADER.toValue()));
+ apiKeyList.add(new ApiKey(header, header, In.HEADER.toValue()));
return apiKeyList;
}
@@ -85,10 +121,10 @@
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(
- SecurityContext.builder()
- .securityReferences(defaultAuth())
- .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
- .build());
+ SecurityContext.builder()
+ .securityReferences(defaultAuth())
+ .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
+ .build());
return securityContexts;
}
@@ -111,14 +147,14 @@
// 鐢ˋpiInfoBuilder杩涜瀹氬埗
SwaggerProperties.Contact contact = swaggerProperties.getContact();
return new ApiInfoBuilder()
- // 璁剧疆鏍囬
- .title(swaggerProperties.getTitle())
- // 鎻忚堪
- .description(swaggerProperties.getDescription())
- // 浣滆�呬俊鎭�
- .contact(new Contact(contact.getName(), contact.getUrl(), contact.getEmail()))
- // 鐗堟湰
- .version(swaggerProperties.getVersion())
- .build();
+ // 璁剧疆鏍囬
+ .title(swaggerProperties.getTitle())
+ // 鎻忚堪
+ .description(swaggerProperties.getDescription())
+ // 浣滆�呬俊鎭�
+ .contact(new Contact(contact.getName(), contact.getUrl(), contact.getEmail()))
+ // 鐗堟湰
+ .version(swaggerProperties.getVersion())
+ .build();
}
}
--
Gitblit v1.9.3