update: springboot 2.6.8 ==> 2.6.9
update: hutool 5.6.1 ==> 5.7.22
This commit is contained in:
parent
1b84f3f1ea
commit
9b785369ab
@ -16,7 +16,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<revision>1.6.2-snapshot</revision>
|
<revision>1.6.2-snapshot</revision>
|
||||||
<!-- 统一依赖管理 -->
|
<!-- 统一依赖管理 -->
|
||||||
<spring.boot.version>2.6.8</spring.boot.version>
|
<spring.boot.version>2.6.9</spring.boot.version>
|
||||||
<spring.cloud.version>2021.0.1</spring.cloud.version>
|
<spring.cloud.version>2021.0.1</spring.cloud.version>
|
||||||
<spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
|
<spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
|
||||||
<!-- Web 相关 -->
|
<!-- Web 相关 -->
|
||||||
@ -53,7 +53,7 @@
|
|||||||
<jasypt-spring-boot-starter.version>3.0.4</jasypt-spring-boot-starter.version>
|
<jasypt-spring-boot-starter.version>3.0.4</jasypt-spring-boot-starter.version>
|
||||||
<lombok.version>1.18.20</lombok.version>
|
<lombok.version>1.18.20</lombok.version>
|
||||||
<mapstruct.version>1.4.1.Final</mapstruct.version>
|
<mapstruct.version>1.4.1.Final</mapstruct.version>
|
||||||
<hutool.version>5.6.1</hutool.version>
|
<hutool.version>5.7.22</hutool.version>
|
||||||
<easyexcel.verion>2.2.7</easyexcel.verion>
|
<easyexcel.verion>2.2.7</easyexcel.verion>
|
||||||
<velocity.version>2.2</velocity.version>
|
<velocity.version>2.2</velocity.version>
|
||||||
<screw.version>1.0.5</screw.version>
|
<screw.version>1.0.5</screw.version>
|
||||||
|
@ -41,11 +41,6 @@ public class JsonUtils {
|
|||||||
JsonUtils.objectMapper = objectMapper;
|
JsonUtils.objectMapper = objectMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
|
||||||
public static String toJsonPrettyString(Object object) {
|
|
||||||
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public static String toJsonString(Object object) {
|
public static String toJsonString(Object object) {
|
||||||
return objectMapper.writeValueAsString(object);
|
return objectMapper.writeValueAsString(object);
|
||||||
@ -56,6 +51,10 @@ public class JsonUtils {
|
|||||||
return objectMapper.writeValueAsBytes(object);
|
return objectMapper.writeValueAsBytes(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public static String toJsonPrettyString(Object object) {
|
||||||
|
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
|
||||||
|
}
|
||||||
|
|
||||||
public static <T> T parseObject(String text, Class<T> clazz) {
|
public static <T> T parseObject(String text, Class<T> clazz) {
|
||||||
if (StrUtil.isEmpty(text)) {
|
if (StrUtil.isEmpty(text)) {
|
||||||
@ -137,7 +136,7 @@ public class JsonUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isJson(String text) {
|
public static boolean isJson(String text) {
|
||||||
return JSONUtil.isJson(text);
|
return JSONUtil.isTypeJSON(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class BizTraceAspect {
|
|||||||
String operationName = getOperationName(joinPoint, trace);
|
String operationName = getOperationName(joinPoint, trace);
|
||||||
Span span = tracer.buildSpan(operationName)
|
Span span = tracer.buildSpan(operationName)
|
||||||
.withTag(Tags.COMPONENT.getKey(), "biz")
|
.withTag(Tags.COMPONENT.getKey(), "biz")
|
||||||
.startManual();
|
.start();
|
||||||
try {
|
try {
|
||||||
// 执行原有方法
|
// 执行原有方法
|
||||||
return joinPoint.proceed();
|
return joinPoint.proceed();
|
||||||
|
@ -40,7 +40,7 @@ public class RandomUtils {
|
|||||||
// Integer
|
// Integer
|
||||||
PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Integer.class, (dataProviderStrategy, attributeMetadata, map) -> {
|
PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Integer.class, (dataProviderStrategy, attributeMetadata, map) -> {
|
||||||
// 如果是 status 的字段,返回 0 或 1
|
// 如果是 status 的字段,返回 0 或 1
|
||||||
if (attributeMetadata.getAttributeName().equals("status")) {
|
if ("status".equals(attributeMetadata.getAttributeName())) {
|
||||||
return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus();
|
return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus();
|
||||||
}
|
}
|
||||||
// 如果是 type、status 结尾的字段,返回 tinyint 范围
|
// 如果是 type、status 结尾的字段,返回 tinyint 范围
|
||||||
@ -53,7 +53,7 @@ public class RandomUtils {
|
|||||||
// Boolean
|
// Boolean
|
||||||
PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> {
|
PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> {
|
||||||
// 如果是 deleted 的字段,返回非删除
|
// 如果是 deleted 的字段,返回非删除
|
||||||
if (attributeMetadata.getAttributeName().equals("deleted")) {
|
if ("deleted".equals(attributeMetadata.getAttributeName())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return RandomUtil.randomBoolean();
|
return RandomUtil.randomBoolean();
|
||||||
|
@ -3,7 +3,6 @@ package cn.iocoder.yudao.framework.swagger.config;
|
|||||||
import cn.iocoder.yudao.framework.swagger.core.SpringFoxHandlerProviderBeanPostProcessor;
|
import cn.iocoder.yudao.framework.swagger.core.SpringFoxHandlerProviderBeanPostProcessor;
|
||||||
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
|
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
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.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@ -22,6 +21,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID;
|
||||||
import static springfox.documentation.builders.RequestHandlerSelectors.basePackage;
|
import static springfox.documentation.builders.RequestHandlerSelectors.basePackage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,27 +44,22 @@ public class YudaoSwaggerAutoConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
public Docket createRestApi(SwaggerProperties properties) {
|
||||||
public SwaggerProperties swaggerProperties() {
|
|
||||||
return new SwaggerProperties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Docket createRestApi() {
|
|
||||||
SwaggerProperties properties = swaggerProperties();
|
|
||||||
// 创建 Docket 对象
|
// 创建 Docket 对象
|
||||||
return new Docket(DocumentationType.SWAGGER_2)
|
return new Docket(DocumentationType.SWAGGER_2)
|
||||||
// 用来创建该 API 的基本信息,展示在文档的页面中(自定义展示的信息)
|
// ① 用来创建该 API 的基本信息,展示在文档的页面中(自定义展示的信息)
|
||||||
.apiInfo(apiInfo(properties))
|
.apiInfo(apiInfo(properties))
|
||||||
// 设置扫描指定 package 包下的
|
// ② 设置扫描指定 package 包下的
|
||||||
.select()
|
.select()
|
||||||
.apis(basePackage(properties.getBasePackage()))
|
.apis(basePackage(properties.getBasePackage()))
|
||||||
// .apis(basePackage("cn.iocoder.yudao.module.system")) // 可用于 swagger 无法展示时使用
|
// .apis(basePackage("cn.iocoder.yudao.module.system")) // 可用于 swagger 无法展示时使用
|
||||||
.paths(PathSelectors.any())
|
.paths(PathSelectors.any())
|
||||||
.build()
|
.build()
|
||||||
|
// ③ 安全上下文(认证)
|
||||||
.securitySchemes(securitySchemes())
|
.securitySchemes(securitySchemes())
|
||||||
.globalRequestParameters(globalRequestParameters())
|
.securityContexts(securityContexts())
|
||||||
.securityContexts(securityContexts());
|
// ④ 全局参数(多租户 header)
|
||||||
|
.globalRequestParameters(globalRequestParameters());
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== apiInfo ==========
|
// ========== apiInfo ==========
|
||||||
@ -99,7 +94,8 @@ public class YudaoSwaggerAutoConfiguration {
|
|||||||
private static List<SecurityContext> securityContexts() {
|
private static List<SecurityContext> securityContexts() {
|
||||||
return Collections.singletonList(SecurityContext.builder()
|
return Collections.singletonList(SecurityContext.builder()
|
||||||
.securityReferences(securityReferences())
|
.securityReferences(securityReferences())
|
||||||
.forPaths(PathSelectors.regex("^(?!auth).*$"))
|
// 通过 PathSelectors.regex("^(?!auth).*$"),排除包含 "auth" 的接口不需要使用securitySchemes
|
||||||
|
.operationSelector(o -> o.requestMappingPattern().matches("^(?!auth).*$"))
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +110,8 @@ public class YudaoSwaggerAutoConfiguration {
|
|||||||
// ========== globalRequestParameters ==========
|
// ========== globalRequestParameters ==========
|
||||||
|
|
||||||
private static List<RequestParameter> globalRequestParameters() {
|
private static List<RequestParameter> 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());
|
.in(ParameterType.HEADER).example(new ExampleBuilder().value(1L).build());
|
||||||
return Collections.singletonList(tenantParameter.build());
|
return Collections.singletonList(tenantParameter.build());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user