diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 61da91543..e38ec9cb8 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -16,7 +16,7 @@ 1.6.2-snapshot - 2.6.8 + 2.6.9 2021.0.1 2021.0.1.0 @@ -53,7 +53,7 @@ 3.0.4 1.18.20 1.4.1.Final - 5.6.1 + 5.7.22 2.2.7 2.2 1.0.5 diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java index f41234736..0be190942 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java @@ -41,11 +41,6 @@ public class JsonUtils { JsonUtils.objectMapper = objectMapper; } - @SneakyThrows - public static String toJsonPrettyString(Object object) { - return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object); - } - @SneakyThrows public static String toJsonString(Object object) { return objectMapper.writeValueAsString(object); @@ -56,6 +51,10 @@ public class JsonUtils { return objectMapper.writeValueAsBytes(object); } + @SneakyThrows + public static String toJsonPrettyString(Object object) { + return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object); + } public static T parseObject(String text, Class clazz) { if (StrUtil.isEmpty(text)) { @@ -137,7 +136,7 @@ public class JsonUtils { } public static boolean isJson(String text) { - return JSONUtil.isJson(text); + return JSONUtil.isTypeJSON(text); } } diff --git a/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java b/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java index 7300352de..3c3b9f3bb 100644 --- a/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java +++ b/yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java @@ -38,7 +38,7 @@ public class BizTraceAspect { String operationName = getOperationName(joinPoint, trace); Span span = tracer.buildSpan(operationName) .withTag(Tags.COMPONENT.getKey(), "biz") - .startManual(); + .start(); try { // 执行原有方法 return joinPoint.proceed(); diff --git a/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java b/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java index d2703a0e7..d41c3951e 100644 --- a/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java @@ -40,7 +40,7 @@ public class RandomUtils { // Integer PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Integer.class, (dataProviderStrategy, attributeMetadata, map) -> { // 如果是 status 的字段,返回 0 或 1 - if (attributeMetadata.getAttributeName().equals("status")) { + if ("status".equals(attributeMetadata.getAttributeName())) { return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus(); } // 如果是 type、status 结尾的字段,返回 tinyint 范围 @@ -53,7 +53,7 @@ public class RandomUtils { // Boolean PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> { // 如果是 deleted 的字段,返回非删除 - if (attributeMetadata.getAttributeName().equals("deleted")) { + if ("deleted".equals(attributeMetadata.getAttributeName())) { return false; } return RandomUtil.randomBoolean(); diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java index 8b0815b73..dbd490888 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java @@ -3,7 +3,6 @@ package cn.iocoder.yudao.framework.swagger.config; import cn.iocoder.yudao.framework.swagger.core.SpringFoxHandlerProviderBeanPostProcessor; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -22,6 +21,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.Collections; import java.util.List; +import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID; import static springfox.documentation.builders.RequestHandlerSelectors.basePackage; /** @@ -44,27 +44,22 @@ public class YudaoSwaggerAutoConfiguration { } @Bean - @ConditionalOnMissingBean - public SwaggerProperties swaggerProperties() { - return new SwaggerProperties(); - } - - @Bean - public Docket createRestApi() { - SwaggerProperties properties = swaggerProperties(); + public Docket createRestApi(SwaggerProperties properties) { // 创建 Docket 对象 return new Docket(DocumentationType.SWAGGER_2) - // 用来创建该 API 的基本信息,展示在文档的页面中(自定义展示的信息) + // ① 用来创建该 API 的基本信息,展示在文档的页面中(自定义展示的信息) .apiInfo(apiInfo(properties)) - // 设置扫描指定 package 包下的 + // ② 设置扫描指定 package 包下的 .select() .apis(basePackage(properties.getBasePackage())) // .apis(basePackage("cn.iocoder.yudao.module.system")) // 可用于 swagger 无法展示时使用 .paths(PathSelectors.any()) .build() + // ③ 安全上下文(认证) .securitySchemes(securitySchemes()) - .globalRequestParameters(globalRequestParameters()) - .securityContexts(securityContexts()); + .securityContexts(securityContexts()) + // ④ 全局参数(多租户 header) + .globalRequestParameters(globalRequestParameters()); } // ========== apiInfo ========== @@ -99,7 +94,8 @@ public class YudaoSwaggerAutoConfiguration { private static List securityContexts() { return Collections.singletonList(SecurityContext.builder() .securityReferences(securityReferences()) - .forPaths(PathSelectors.regex("^(?!auth).*$")) + // 通过 PathSelectors.regex("^(?!auth).*$"),排除包含 "auth" 的接口不需要使用securitySchemes + .operationSelector(o -> o.requestMappingPattern().matches("^(?!auth).*$")) .build()); } @@ -114,7 +110,8 @@ public class YudaoSwaggerAutoConfiguration { // ========== globalRequestParameters ========== private static List globalRequestParameters() { - RequestParameterBuilder tenantParameter = new RequestParameterBuilder().name("tenant-id").description("租户编号") + RequestParameterBuilder tenantParameter = new RequestParameterBuilder() + .name(HEADER_TENANT_ID).description("租户编号") .in(ParameterType.HEADER).example(new ExampleBuilder().value(1L).build()); return Collections.singletonList(tenantParameter.build()); }