From 65202db94c18e205b4a2f596d21d51b4f98f6b37 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Thu, 14 Sep 2023 17:59:26 +0800 Subject: [PATCH] Refactor datetime converters to support both long and string --- .../com/schbrain/common/util/PageUtils.java | 5 +- .../com/schbrain/common/util/StreamUtils.java | 4 +- .../common/util/support/ValidateSupport.java | 2 +- .../common/util/support/trace/TraceParam.java | 2 +- .../common/annotation/IgnoreLogin.java | 2 +- .../common/entity/PaginationInfo.java | 5 +- .../common/module/tree/TreeNodeProcessor.java | 2 +- .../web/ServletComponentConfiguration.java | 7 -- .../web/WebCommonAutoConfiguration.java | 6 +- .../web/annotation/ResponseWrapOption.java | 2 +- .../BodyParamMethodArgumentResolver.java | 12 +-- .../web/exception/GlobalExceptionHandler.java | 6 +- .../web/servlet/RequestLoggingFilter.java | 3 +- .../web/servlet/RequestWrapperFilter.java | 31 ------ .../support/converter/Jsr310Converters.java | 95 ------------------- .../Jsr310DateTimeWebMvcConfigurer.java | 17 ---- .../DateTimeConditionalConverter.java | 84 ++++++++++++++++ .../DateTimeConvertersWebMvcConfigurer.java | 20 ++++ .../datetime/StringToDateConverter.java | 26 +++++ .../datetime/StringToLocalDateConverter.java | 32 +++++++ .../StringToLocalDateTimeConverter.java | 26 +++++ .../datetime/StringToLocalTimeConverter.java | 32 +++++++ ...bstractSignatureValidationInterceptor.java | 81 ---------------- .../support/signature/SignatureContext.java | 12 --- .../signature/SignatureContextUtil.java | 47 --------- .../SignatureValidationException.java | 22 ----- .../web/utils/RequestContentCachingUtils.java | 23 ++--- pom.xml | 6 +- ...onInitializerEnvironmentPostProcessor.java | 3 +- .../ConfigurationPropertiesRegistry.java | 6 +- .../apollo/util/PropertySourceOrderUtils.java | 5 +- .../dubbo/filter/TraceConsumerRpcFilter.java | 2 +- .../dubbo/filter/TraceProviderRpcFilter.java | 2 +- .../apollo/LoggingLevelChangeListener.java | 3 +- .../mybatis/base/BaseServiceImpl.java | 3 +- .../mybatis/biz/BizIdColumnField.java | 4 +- .../constraint/IgnoreConstraintCheck.java | 2 +- .../injector/DefaultMethodSqlInjector.java | 4 +- .../autoconfigure/oss/util/OssUtils.java | 6 +- .../dao/mybatis/annotation/MapperConfig.java | 2 +- ...ultPropertiesEnvironmentPostProcessor.java | 4 +- 41 files changed, 268 insertions(+), 390 deletions(-) delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestWrapperFilter.java delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310Converters.java delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310DateTimeWebMvcConfigurer.java create mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConditionalConverter.java create mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConvertersWebMvcConfigurer.java create mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToDateConverter.java create mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateConverter.java create mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateTimeConverter.java create mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalTimeConverter.java delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContext.java delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContextUtil.java delete mode 100644 commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureValidationException.java diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/PageUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/PageUtils.java index 7b4a7c5..3cadcb6 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/PageUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/PageUtils.java @@ -9,8 +9,7 @@ import java.util.Collections; import java.util.List; import java.util.function.Function; -import static com.schbrain.common.constants.PageConstants.DEFAULT_SEARCH_COUNT; -import static com.schbrain.common.constants.PageConstants.DEFAULT_TOTAL_COUNT; +import static com.schbrain.common.constants.PageConstants.*; /** * @author liaozan @@ -71,4 +70,4 @@ public class PageUtils { return pageParam; } -} \ No newline at end of file +} diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java index 469cef4..b229baf 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java @@ -14,9 +14,7 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; import static java.util.Collections.emptyList; -import static java.util.stream.Collectors.groupingBy; -import static java.util.stream.Collectors.joining; -import static java.util.stream.Collectors.mapping; +import static java.util.stream.Collectors.*; /** * @author liaozan diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/support/ValidateSupport.java b/commons/common-util/src/main/java/com/schbrain/common/util/support/ValidateSupport.java index dade63c..74c4714 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/support/ValidateSupport.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/support/ValidateSupport.java @@ -77,4 +77,4 @@ public interface ValidateSupport { return value != null ? value : defaultValueSupplier.get(); } -} \ No newline at end of file +} diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/support/trace/TraceParam.java b/commons/common-util/src/main/java/com/schbrain/common/util/support/trace/TraceParam.java index bf41f41..11a5a8d 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/support/trace/TraceParam.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/support/trace/TraceParam.java @@ -47,4 +47,4 @@ public @interface TraceParam { protected abstract String format0(Map argsMap); } -} \ No newline at end of file +} diff --git a/commons/common/src/main/java/com/schbrain/common/annotation/IgnoreLogin.java b/commons/common/src/main/java/com/schbrain/common/annotation/IgnoreLogin.java index 9f06148..485159c 100644 --- a/commons/common/src/main/java/com/schbrain/common/annotation/IgnoreLogin.java +++ b/commons/common/src/main/java/com/schbrain/common/annotation/IgnoreLogin.java @@ -15,4 +15,4 @@ public @interface IgnoreLogin { */ boolean ignore() default true; -} \ No newline at end of file +} diff --git a/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java b/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java index 586d21f..646f561 100644 --- a/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java +++ b/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java @@ -6,10 +6,7 @@ import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.List; -import static com.schbrain.common.constants.PageConstants.DEFAULT_PAGE_INDEX; -import static com.schbrain.common.constants.PageConstants.DEFAULT_PAGE_SIZE; -import static com.schbrain.common.constants.PageConstants.DEFAULT_TOTAL_COUNT; -import static com.schbrain.common.constants.PageConstants.DEFAULT_TOTAL_PAGE_COUNT; +import static com.schbrain.common.constants.PageConstants.*; /** * @author liaozan diff --git a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java index 52cc7dc..c638cf1 100644 --- a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java +++ b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java @@ -419,4 +419,4 @@ public class TreeNodeProcessor { node.setRgt(null); } -} \ No newline at end of file +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/ServletComponentConfiguration.java b/commons/web-common/src/main/java/com/schbrain/common/web/ServletComponentConfiguration.java index b6da03f..34c48d2 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/ServletComponentConfiguration.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/ServletComponentConfiguration.java @@ -3,7 +3,6 @@ package com.schbrain.common.web; import com.schbrain.common.web.properties.WebProperties; import com.schbrain.common.web.servlet.CharacterEncodingServletContextInitializer; import com.schbrain.common.web.servlet.RequestLoggingFilter; -import com.schbrain.common.web.servlet.RequestWrapperFilter; import com.schbrain.common.web.servlet.TraceIdInitializeServletListener; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -39,12 +38,6 @@ public class ServletComponentConfiguration { return requestContextFilter; } - @Bean - @ConditionalOnMissingBean - public RequestWrapperFilter requestWrapperFilter() { - return new RequestWrapperFilter(); - } - @Bean @ConditionalOnMissingBean @ConditionalOnProperty(value = "schbrain.web.enable-request-logging", havingValue = "true", matchIfMissing = true) diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java b/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java index 74d0d8a..e3c2590 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java @@ -3,7 +3,7 @@ package com.schbrain.common.web; import com.schbrain.common.web.argument.BodyParamArgumentResolverWebMvcConfigurer; import com.schbrain.common.web.properties.WebProperties; import com.schbrain.common.web.result.ResponseBodyHandler; -import com.schbrain.common.web.support.converter.Jsr310DateTimeWebMvcConfigurer; +import com.schbrain.common.web.support.converter.datetime.DateTimeConvertersWebMvcConfigurer; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigurationPackages; @@ -43,8 +43,8 @@ public class WebCommonAutoConfiguration { @Bean @ConditionalOnMissingBean - public Jsr310DateTimeWebMvcConfigurer defaultJsr310DateTimeWebMvcConfigurer() { - return new Jsr310DateTimeWebMvcConfigurer(); + public DateTimeConvertersWebMvcConfigurer defaultDateTimeConvertersWebMvcConfigurer() { + return new DateTimeConvertersWebMvcConfigurer(); } @Bean diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/annotation/ResponseWrapOption.java b/commons/web-common/src/main/java/com/schbrain/common/web/annotation/ResponseWrapOption.java index 37392cc..9323a79 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/annotation/ResponseWrapOption.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/annotation/ResponseWrapOption.java @@ -22,4 +22,4 @@ public @interface ResponseWrapOption { */ boolean ignoreException() default true; -} \ No newline at end of file +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/argument/BodyParamMethodArgumentResolver.java b/commons/web-common/src/main/java/com/schbrain/common/web/argument/BodyParamMethodArgumentResolver.java index ed6c79b..efe5368 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/argument/BodyParamMethodArgumentResolver.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/argument/BodyParamMethodArgumentResolver.java @@ -64,18 +64,14 @@ public class BodyParamMethodArgumentResolver extends AbstractNamedValueMethodArg return objectMapper.constructType(parameterType); } - private JsonNode getRequestBody(NativeWebRequest nativeWebRequest) throws IOException { - JsonNode requestBody = (JsonNode) nativeWebRequest.getAttribute(REQUEST_BODY_CACHE, SCOPE_REQUEST); + private JsonNode getRequestBody(NativeWebRequest webRequest) throws IOException { + JsonNode requestBody = (JsonNode) webRequest.getAttribute(REQUEST_BODY_CACHE, SCOPE_REQUEST); if (requestBody == null) { - HttpServletRequest request = wrapRequest(nativeWebRequest); + HttpServletRequest request = wrapIfRequired(webRequest.getNativeRequest(HttpServletRequest.class)); requestBody = objectMapper.readTree(request.getInputStream()); - nativeWebRequest.setAttribute(REQUEST_BODY_CACHE, requestBody, SCOPE_REQUEST); + webRequest.setAttribute(REQUEST_BODY_CACHE, requestBody, SCOPE_REQUEST); } return requestBody; } - private HttpServletRequest wrapRequest(NativeWebRequest request) { - return wrapIfRequired(request.getNativeRequest(HttpServletRequest.class)); - } - } diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionHandler.java b/commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionHandler.java index 5de368f..8b40794 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionHandler.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionHandler.java @@ -28,10 +28,8 @@ import java.sql.SQLException; import java.util.Arrays; import java.util.List; -import static com.schbrain.common.constants.ResponseCodeConstants.PARAM_INVALID; -import static com.schbrain.common.constants.ResponseCodeConstants.SERVER_ERROR; -import static com.schbrain.common.util.support.ValidationMessageBuilder.buildBindingErrorMsg; -import static com.schbrain.common.util.support.ValidationMessageBuilder.buildConstraintViolationErrorMsg; +import static com.schbrain.common.constants.ResponseCodeConstants.*; +import static com.schbrain.common.util.support.ValidationMessageBuilder.*; /** * @author liaozan diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestLoggingFilter.java b/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestLoggingFilter.java index cf57678..bfd0454 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestLoggingFilter.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestLoggingFilter.java @@ -14,8 +14,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import static com.schbrain.common.web.utils.RequestContentCachingUtils.getRequestBody; -import static com.schbrain.common.web.utils.RequestContentCachingUtils.wrapIfRequired; +import static com.schbrain.common.web.utils.RequestContentCachingUtils.*; /** * 请求日志拦截器 diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestWrapperFilter.java b/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestWrapperFilter.java deleted file mode 100644 index 59c0a84..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/servlet/RequestWrapperFilter.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.schbrain.common.web.servlet; - -import org.springframework.boot.web.servlet.filter.OrderedFilter; -import org.springframework.core.Ordered; -import org.springframework.web.filter.OncePerRequestFilter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -import static com.schbrain.common.web.utils.RequestContentCachingUtils.wrapIfRequired; - -/** - * @author liaozan - * @since 2023/8/20 - */ -public class RequestWrapperFilter extends OncePerRequestFilter implements OrderedFilter { - - @Override - public int getOrder() { - return Ordered.HIGHEST_PRECEDENCE; - } - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { - chain.doFilter(wrapIfRequired(request), response); - } - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310Converters.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310Converters.java deleted file mode 100644 index 1b88cfd..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310Converters.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.schbrain.common.web.support.converter; - -import org.springframework.core.convert.converter.Converter; - -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.util.ArrayList; -import java.util.List; - -import static java.time.LocalDateTime.ofInstant; -import static java.time.ZoneId.systemDefault; - -/** - * @author liaozan - * @since 2023/8/16 - */ -public class Jsr310Converters { - - public static List> getConverters() { - List> converters = new ArrayList<>(); - - converters.add(LongToLocalDateConverter.INSTANCE); - converters.add(LongToLocalTimeConverter.INSTANCE); - converters.add(LongToLocalDateTimeConverter.INSTANCE); - - converters.add(StringToLocalDateConverter.INSTANCE); - converters.add(StringToLocalTimeConverter.INSTANCE); - converters.add(StringToLocalDateTimeConverter.INSTANCE); - - return converters; - } - - public enum LongToLocalDateConverter implements Converter { - - INSTANCE; - - @Override - public LocalDate convert(Long source) { - return LongToLocalDateTimeConverter.INSTANCE.convert(source).toLocalDate(); - } - } - - public enum LongToLocalTimeConverter implements Converter { - - INSTANCE; - - @Override - public LocalTime convert(Long source) { - return LongToLocalDateTimeConverter.INSTANCE.convert(source).toLocalTime(); - } - } - - public enum LongToLocalDateTimeConverter implements Converter { - - INSTANCE; - - @Override - public LocalDateTime convert(Long source) { - return ofInstant(Instant.ofEpochMilli(source), systemDefault()); - } - } - - public enum StringToLocalDateConverter implements Converter { - - INSTANCE; - - @Override - public LocalDate convert(String source) { - return StringToLocalDateTimeConverter.INSTANCE.convert(source).toLocalDate(); - } - } - - public enum StringToLocalTimeConverter implements Converter { - - INSTANCE; - - @Override - public LocalTime convert(String source) { - return StringToLocalDateTimeConverter.INSTANCE.convert(source).toLocalTime(); - } - } - - public enum StringToLocalDateTimeConverter implements Converter { - - INSTANCE; - - @Override - public LocalDateTime convert(String source) { - return ofInstant(Instant.ofEpochMilli(Long.parseLong(source)), systemDefault()); - } - } - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310DateTimeWebMvcConfigurer.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310DateTimeWebMvcConfigurer.java deleted file mode 100644 index 4033ae8..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/Jsr310DateTimeWebMvcConfigurer.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.schbrain.common.web.support.converter; - -import org.springframework.format.FormatterRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * @author liaozan - * @since 2023/8/16 - */ -public class Jsr310DateTimeWebMvcConfigurer implements WebMvcConfigurer { - - @Override - public void addFormatters(FormatterRegistry registry) { - Jsr310Converters.getConverters().forEach(registry::addConverter); - } - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConditionalConverter.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConditionalConverter.java new file mode 100644 index 0000000..45e54bb --- /dev/null +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConditionalConverter.java @@ -0,0 +1,84 @@ +package com.schbrain.common.web.support.converter.datetime; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.util.NumberUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.core.ResolvableType; +import org.springframework.core.convert.TypeDescriptor; +import org.springframework.core.convert.converter.ConditionalGenericConverter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.format.DateTimeFormatter; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author liaozan + * @since 2023/9/16 + */ +abstract class DateTimeConditionalConverter implements ConditionalGenericConverter { + + private final TypeDescriptor targetType; + private final TypeDescriptor stringType = TypeDescriptor.valueOf(String.class); + private final Map formatters = new ConcurrentHashMap<>(); + + public DateTimeConditionalConverter() { + this.targetType = TypeDescriptor.valueOf(ResolvableType.forClass(getClass()).getSuperType().getGeneric(0).getRawClass()); + } + + @Override + public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) { + return sourceType.isAssignableTo(stringType) && targetType.isAssignableTo(this.targetType); + } + + @Override + public Set getConvertibleTypes() { + return Set.of(new ConvertiblePair(String.class, targetType.getObjectType())); + } + + @Override + public T convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { + if (source == null) { + return null; + } + return convert((String) source, targetType); + } + + protected final T convert(String source, TypeDescriptor targetType) { + if (StringUtils.isBlank(source)) { + return null; + } + if (NumberUtil.isLong(source)) { + return doConvert(Long.parseLong(source)); + } else { + DateTimeFormatter formatter = ofPattern(determinePattern(targetType)); + return doConvert(source, formatter); + } + } + + protected String determinePattern(TypeDescriptor targetType) { + DateTimeFormat annotation = targetType.getAnnotation(DateTimeFormat.class); + String pattern = null; + if (annotation != null) { + pattern = annotation.pattern(); + } + if (StringUtils.isBlank(pattern)) { + pattern = defaultPattern(); + } + return pattern; + } + + protected String defaultPattern() { + return DatePattern.NORM_DATETIME_PATTERN; + } + + protected DateTimeFormatter ofPattern(String pattern) { + return formatters.computeIfAbsent(pattern, ignore -> DatePattern.createFormatter(pattern)); + } + + protected abstract T doConvert(Long source); + + protected abstract T doConvert(String source, DateTimeFormatter formatter); + +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConvertersWebMvcConfigurer.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConvertersWebMvcConfigurer.java new file mode 100644 index 0000000..e61d120 --- /dev/null +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/DateTimeConvertersWebMvcConfigurer.java @@ -0,0 +1,20 @@ +package com.schbrain.common.web.support.converter.datetime; + +import org.springframework.format.FormatterRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @author liaozan + * @since 2023/8/16 + */ +public class DateTimeConvertersWebMvcConfigurer implements WebMvcConfigurer { + + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addConverter(StringToDateConverter.INSTANCE); + registry.addConverter(StringToLocalTimeConverter.INSTANCE); + registry.addConverter(StringToLocalDateConverter.INSTANCE); + registry.addConverter(StringToLocalDateTimeConverter.INSTANCE); + } + +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToDateConverter.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToDateConverter.java new file mode 100644 index 0000000..8bf9680 --- /dev/null +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToDateConverter.java @@ -0,0 +1,26 @@ +package com.schbrain.common.web.support.converter.datetime; + +import cn.hutool.core.date.DateUtil; + +import java.time.format.DateTimeFormatter; +import java.util.Date; + +/** + * @author liaozan + * @since 2023/9/16 + */ +class StringToDateConverter extends DateTimeConditionalConverter { + + static final StringToDateConverter INSTANCE = new StringToDateConverter(); + + @Override + protected Date doConvert(Long source) { + return DateUtil.date(source); + } + + @Override + protected Date doConvert(String source, DateTimeFormatter formatter) { + return DateUtil.parse(source, formatter); + } + +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateConverter.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateConverter.java new file mode 100644 index 0000000..be04396 --- /dev/null +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateConverter.java @@ -0,0 +1,32 @@ +package com.schbrain.common.web.support.converter.datetime; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * @author liaozan + * @since 2023/9/16 + */ +class StringToLocalDateConverter extends DateTimeConditionalConverter { + + static final StringToLocalDateConverter INSTANCE = new StringToLocalDateConverter(); + + @Override + protected String defaultPattern() { + return DatePattern.NORM_DATE_PATTERN; + } + + @Override + protected LocalDate doConvert(Long source) { + return LocalDateTimeUtil.of(source).toLocalDate(); + } + + @Override + protected LocalDate doConvert(String source, DateTimeFormatter formatter) { + return LocalDate.parse(source, formatter); + } + +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateTimeConverter.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateTimeConverter.java new file mode 100644 index 0000000..35ef259 --- /dev/null +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalDateTimeConverter.java @@ -0,0 +1,26 @@ +package com.schbrain.common.web.support.converter.datetime; + +import cn.hutool.core.date.LocalDateTimeUtil; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author liaozan + * @since 2023/9/16 + */ +class StringToLocalDateTimeConverter extends DateTimeConditionalConverter { + + static final StringToLocalDateTimeConverter INSTANCE = new StringToLocalDateTimeConverter(); + + @Override + protected LocalDateTime doConvert(Long source) { + return LocalDateTimeUtil.of(source); + } + + @Override + protected LocalDateTime doConvert(String source, DateTimeFormatter formatter) { + return LocalDateTime.parse(source, formatter); + } + +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalTimeConverter.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalTimeConverter.java new file mode 100644 index 0000000..a17ff66 --- /dev/null +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/converter/datetime/StringToLocalTimeConverter.java @@ -0,0 +1,32 @@ +package com.schbrain.common.web.support.converter.datetime; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; + +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +/** + * @author liaozan + * @since 2023/9/16 + */ +class StringToLocalTimeConverter extends DateTimeConditionalConverter { + + static final StringToLocalTimeConverter INSTANCE = new StringToLocalTimeConverter(); + + @Override + protected String defaultPattern() { + return DatePattern.NORM_TIME_PATTERN; + } + + @Override + protected LocalTime doConvert(Long source) { + return LocalDateTimeUtil.of(source).toLocalTime(); + } + + @Override + protected LocalTime doConvert(String source, DateTimeFormatter formatter) { + return LocalTime.parse(source, formatter); + } + +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java deleted file mode 100644 index d9d9e51..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.schbrain.common.web.support.signature; - -import cn.hutool.crypto.digest.DigestUtil; -import com.schbrain.common.util.StreamUtils; -import com.schbrain.common.util.TraceIdUtils; -import com.schbrain.common.web.support.BaseHandlerInterceptor; -import org.apache.commons.lang3.StringUtils; -import org.springframework.web.method.HandlerMethod; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; - -import static cn.hutool.core.text.StrPool.UNDERLINE; -import static com.schbrain.common.web.utils.RequestContentCachingUtils.getRequestBody; - -public abstract class AbstractSignatureValidationInterceptor extends BaseHandlerInterceptor { - - private static final String SCH_APP_KEY = "Sch-App-Key"; - private static final String SCH_TIMESTAMP = "Sch-Timestamp"; - private static final String SCH_SIGNATURE = "Sch-Signature"; - private static final String SCH_EXPIRE_TIME = "Sch-Expire-Time"; - - @Override - protected boolean preHandle(HttpServletRequest request, HttpServletResponse response, HandlerMethod handler) { - String appKey = request.getHeader(SCH_APP_KEY); - String timestamp = request.getHeader(SCH_TIMESTAMP); - String signature = request.getHeader(SCH_SIGNATURE); - String expireTime = request.getHeader(SCH_EXPIRE_TIME); - - String traceId = request.getHeader(TraceIdUtils.TRACE_ID); - if (StringUtils.isNotBlank(traceId)) { - TraceIdUtils.set(traceId); - } - - // 空校验 - if (StringUtils.isAnyBlank(appKey, timestamp, signature, expireTime)) { - throw new SignatureValidationException("签名参数为空!"); - } - - // 过期校验 - if (System.currentTimeMillis() > Long.parseLong(expireTime)) { - throw new SignatureValidationException("请求信息已过期!"); - } - - // 获取appSecret - SignatureContext context = getSignatureContext(appKey); - if (null == context || StringUtils.isBlank(context.getAppSecret())) { - throw new SignatureValidationException("appSecret不存在!"); - } - - String requestUri = request.getRequestURI(); - String queryString = request.getQueryString(); - String requestBody = getRequestBody(request); - - // 校验签名 - String calculatedSignature = signParams(requestUri, queryString, requestBody, timestamp, appKey, context.getAppSecret()); - if (!Objects.equals(signature, calculatedSignature)) { - throw new SignatureValidationException(); - } - - SignatureContextUtil.set(context); - return true; - } - - @Override - protected void afterCompletion(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod, Exception ex) { - SignatureContextUtil.clear(); - } - - protected String signParams(String requestUri, String queryString, String bodyString, String timestamp, String appKey, String appSecret) { - List params = StreamUtils.filterToList(Arrays.asList(requestUri, queryString, bodyString, timestamp, appKey, appSecret), StringUtils::isNotBlank); - String toSign = StreamUtils.join(params, UNDERLINE); - return DigestUtil.sha256Hex(toSign); - } - - protected abstract T getSignatureContext(String appKey); - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContext.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContext.java deleted file mode 100644 index ae96b64..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContext.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.schbrain.common.web.support.signature; - -import lombok.Data; - -@Data -public class SignatureContext { - - private String appKey; - - private String appSecret; - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContextUtil.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContextUtil.java deleted file mode 100644 index ebc16b0..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureContextUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.schbrain.common.web.support.signature; - -import java.util.Optional; -import java.util.function.Supplier; - -public class SignatureContextUtil { - - private static final ThreadLocal LOCAL = new InheritableThreadLocal<>(); - - private static final Supplier EXCEPTION_SUPPLIER = SignatureValidationException::new; - - /** - * 取值 - */ - public static T get(Class type) { - return type.cast(Optional.ofNullable(LOCAL.get()).orElseThrow(EXCEPTION_SUPPLIER)); - } - - /** - * 获取appKey - */ - public static String getAppKey() { - return get(SignatureContext.class).getAppKey(); - } - - /** - * 获取appSecret - */ - public static String getAppSecret() { - return get(SignatureContext.class).getAppSecret(); - } - - /** - * 赋值 - */ - public static void set(T signatureContext) { - LOCAL.set(signatureContext); - } - - /** - * 移除 - */ - public static void clear() { - LOCAL.remove(); - } - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureValidationException.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureValidationException.java deleted file mode 100644 index 51e6142..0000000 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/SignatureValidationException.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.schbrain.common.web.support.signature; - -import com.schbrain.common.exception.BaseException; - -import static com.schbrain.common.constants.ResponseActionConstants.ALERT; -import static com.schbrain.common.constants.ResponseCodeConstants.PARAM_INVALID; - -public class SignatureValidationException extends BaseException { - - private static final long serialVersionUID = 7564001466173362458L; - - private static final String DEFAULT_ERR_MSG = "签名验证异常"; - - public SignatureValidationException() { - this(DEFAULT_ERR_MSG); - } - - public SignatureValidationException(String message) { - super(message, PARAM_INVALID, ALERT); - } - -} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/utils/RequestContentCachingUtils.java b/commons/web-common/src/main/java/com/schbrain/common/web/utils/RequestContentCachingUtils.java index 0e0f5d2..339fff9 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/utils/RequestContentCachingUtils.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/utils/RequestContentCachingUtils.java @@ -1,15 +1,13 @@ package com.schbrain.common.web.utils; import com.schbrain.common.util.ValidateUtils; -import com.schbrain.common.web.servlet.ContentCachingRequest; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; +import org.springframework.web.util.ContentCachingRequestWrapper; import javax.annotation.Nullable; import javax.servlet.http.HttpServletRequest; +import java.nio.charset.Charset; -import static org.springframework.http.HttpMethod.POST; -import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; import static org.springframework.web.util.WebUtils.getNativeRequest; /** @@ -24,10 +22,10 @@ public class RequestContentCachingUtils { */ public static HttpServletRequest wrapIfRequired(HttpServletRequest request) { ValidateUtils.notNull(request, "request must not be null"); - if (request instanceof ContentCachingRequest || !isJsonPostRequest(request)) { + if (request instanceof ContentCachingRequestWrapper) { return request; } else { - return new ContentCachingRequest(request); + return new ContentCachingRequestWrapper(request); } } @@ -36,23 +34,20 @@ public class RequestContentCachingUtils { */ @Nullable public static String getRequestBody(HttpServletRequest request) { - return getRequestBody(request, request.getCharacterEncoding()); + return getRequestBody(request, Charset.forName(request.getCharacterEncoding())); } /** * Get request body content */ @Nullable - public static String getRequestBody(HttpServletRequest request, String characterEncoding) { - ContentCachingRequest requestToUse = getNativeRequest(request, ContentCachingRequest.class); + public static String getRequestBody(HttpServletRequest request, Charset characterEncoding) { + ContentCachingRequestWrapper requestToUse = getNativeRequest(request, ContentCachingRequestWrapper.class); if (requestToUse == null) { return null; } - return requestToUse.getContentAsString(characterEncoding); - } - - private static boolean isJsonPostRequest(HttpServletRequest request) { - return POST.matches(request.getMethod()) && StringUtils.contains(request.getContentType(), APPLICATION_JSON_VALUE); + byte[] content = requestToUse.getContentAsByteArray(); + return new String(content, characterEncoding); } } diff --git a/pom.xml b/pom.xml index 93905f3..b41941f 100644 --- a/pom.xml +++ b/pom.xml @@ -100,8 +100,8 @@ 3.17.1 - 0.2.0-beta - 0.2.0-beta + 0.2.1-beta + 0.2.1-beta 1.0.3 1.0.2 1.0.6 @@ -110,7 +110,7 @@ 2.0.0 1.0.2-RELEASE - 2.0.35 + 2.0.36 true diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java index 34ebfd8..f4bdecc 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java @@ -17,8 +17,7 @@ import java.util.Map; import static com.ctrip.framework.apollo.core.ApolloClientSystemConsts.*; import static com.ctrip.framework.apollo.core.ConfigConsts.APOLLO_META_KEY; -import static com.ctrip.framework.apollo.spring.config.PropertySourcesConstants.APOLLO_BOOTSTRAP_EAGER_LOAD_ENABLED; -import static com.ctrip.framework.apollo.spring.config.PropertySourcesConstants.APOLLO_BOOTSTRAP_ENABLED; +import static com.ctrip.framework.apollo.spring.config.PropertySourcesConstants.*; /** * @author liaozan diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurationPropertiesRegistry.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurationPropertiesRegistry.java index 9bd651e..a77a7f4 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurationPropertiesRegistry.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurationPropertiesRegistry.java @@ -18,9 +18,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Map; -import static org.springframework.beans.factory.config.PlaceholderConfigurerSupport.DEFAULT_PLACEHOLDER_PREFIX; -import static org.springframework.beans.factory.config.PlaceholderConfigurerSupport.DEFAULT_PLACEHOLDER_SUFFIX; -import static org.springframework.beans.factory.config.PlaceholderConfigurerSupport.DEFAULT_VALUE_SEPARATOR; +import static org.springframework.beans.factory.config.PlaceholderConfigurerSupport.*; /** * @author liaozan @@ -70,4 +68,4 @@ public class ConfigurationPropertiesRegistry implements SmartInitializingSinglet return !Modifier.isFinal(field.getModifiers()); } -} \ No newline at end of file +} diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/util/PropertySourceOrderUtils.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/util/PropertySourceOrderUtils.java index c1b0a18..42d93e5 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/util/PropertySourceOrderUtils.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/util/PropertySourceOrderUtils.java @@ -11,8 +11,7 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import static com.ctrip.framework.apollo.spring.config.PropertySourcesConstants.APOLLO_BOOTSTRAP_PROPERTY_SOURCE_NAME; -import static com.ctrip.framework.apollo.spring.config.PropertySourcesConstants.APOLLO_PROPERTY_SOURCE_NAME; +import static com.ctrip.framework.apollo.spring.config.PropertySourcesConstants.*; /** * @author liaozan @@ -51,4 +50,4 @@ public class PropertySourceOrderUtils { DefaultPropertiesPropertySource.moveToEnd(environment); } -} \ No newline at end of file +} diff --git a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceConsumerRpcFilter.java b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceConsumerRpcFilter.java index b7a2404..11afad3 100644 --- a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceConsumerRpcFilter.java +++ b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceConsumerRpcFilter.java @@ -19,4 +19,4 @@ public class TraceConsumerRpcFilter implements Filter { return invoker.invoke(invocation); } -} \ No newline at end of file +} diff --git a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceProviderRpcFilter.java b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceProviderRpcFilter.java index fc3b6f5..1f85469 100644 --- a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceProviderRpcFilter.java +++ b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/filter/TraceProviderRpcFilter.java @@ -19,4 +19,4 @@ public class TraceProviderRpcFilter implements Filter { return invoker.invoke(invocation); } -} \ No newline at end of file +} diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/LoggingLevelChangeListener.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/LoggingLevelChangeListener.java index 9d42bbd..e584472 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/LoggingLevelChangeListener.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/LoggingLevelChangeListener.java @@ -11,8 +11,7 @@ import org.springframework.boot.logging.LoggingSystem; import java.util.Set; -import static com.ctrip.framework.apollo.enums.PropertyChangeType.ADDED; -import static com.ctrip.framework.apollo.enums.PropertyChangeType.MODIFIED; +import static com.ctrip.framework.apollo.enums.PropertyChangeType.*; import static org.springframework.boot.logging.LoggingSystem.ROOT_LOGGER_NAME; /** diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseServiceImpl.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseServiceImpl.java index d1a776e..4dc657e 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseServiceImpl.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/base/BaseServiceImpl.java @@ -25,8 +25,7 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; -import static java.util.Collections.emptyList; -import static java.util.Collections.emptyMap; +import static java.util.Collections.*; /** * @author liaozan diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java index 035484e..20b761b 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdColumnField.java @@ -7,9 +7,7 @@ import lombok.Getter; import java.lang.invoke.MethodHandle; import java.lang.reflect.Field; -import static java.lang.invoke.MethodHandles.Lookup; -import static java.lang.invoke.MethodHandles.lookup; -import static java.lang.invoke.MethodHandles.privateLookupIn; +import static java.lang.invoke.MethodHandles.*; /** * @author liaozan diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/IgnoreConstraintCheck.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/IgnoreConstraintCheck.java index ee11635..04adb75 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/IgnoreConstraintCheck.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/IgnoreConstraintCheck.java @@ -11,4 +11,4 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) public @interface IgnoreConstraintCheck { -} \ No newline at end of file +} diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/sql/injector/DefaultMethodSqlInjector.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/sql/injector/DefaultMethodSqlInjector.java index a69b22e..06cc345 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/sql/injector/DefaultMethodSqlInjector.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/sql/injector/DefaultMethodSqlInjector.java @@ -14,9 +14,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.Set; -import static com.schbrain.framework.autoconfigure.mybatis.constant.MybatisConstants.CREATE_TIME; -import static com.schbrain.framework.autoconfigure.mybatis.constant.MybatisConstants.DELETE_VERSION; -import static com.schbrain.framework.autoconfigure.mybatis.constant.MybatisConstants.MODIFY_TIME; +import static com.schbrain.framework.autoconfigure.mybatis.constant.MybatisConstants.*; /** * @author liaozan diff --git a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java index f463bb3..244efb8 100644 --- a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java +++ b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java @@ -21,6 +21,7 @@ import com.schbrain.framework.autoconfigure.oss.bean.*; import com.schbrain.framework.autoconfigure.oss.exception.OssException; import com.schbrain.framework.autoconfigure.oss.properties.OssProperties; import com.schbrain.framework.autoconfigure.oss.properties.OssProperties.StsProperties; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -47,6 +48,7 @@ public class OssUtils { private static DefaultAcsClient stsAcsClient; + @Getter private static OssProperties ossProperties; private static StsProperties stsProperties; @@ -72,10 +74,6 @@ public class OssUtils { } } - public static OssProperties getOssProperties() { - return ossProperties; - } - public static OSSClient getOssClient() { if (ossClient == null) { throw new OssException("Oss client is null"); diff --git a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/annotation/MapperConfig.java b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/annotation/MapperConfig.java index d7dd032..25aa4b4 100644 --- a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/annotation/MapperConfig.java +++ b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/annotation/MapperConfig.java @@ -16,4 +16,4 @@ public @interface MapperConfig { String tableName(); -} \ No newline at end of file +} diff --git a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/env/DefaultPropertiesEnvironmentPostProcessor.java b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/env/DefaultPropertiesEnvironmentPostProcessor.java index 09ad12e..2817ee1 100644 --- a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/env/DefaultPropertiesEnvironmentPostProcessor.java +++ b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/env/DefaultPropertiesEnvironmentPostProcessor.java @@ -58,8 +58,8 @@ public class DefaultPropertiesEnvironmentPostProcessor extends LoggerAwareEnviro // mvc defaultProperties.put("spring.mvc.throw-exception-if-no-handler-found", true); // datetime - defaultProperties.put("spring.mvc.format.date", DatePattern.NORM_DATE_PATTERN); - defaultProperties.put("spring.mvc.format.time", DatePattern.NORM_TIME_PATTERN); + defaultProperties.put("spring.mvc.format.date", DatePattern.NORM_DATETIME_PATTERN); + defaultProperties.put("spring.mvc.format.time", DatePattern.NORM_DATETIME_PATTERN); defaultProperties.put("spring.mvc.format.date-time", DatePattern.NORM_DATETIME_PATTERN); defaultProperties.put("spring.jackson.date-format", DatePattern.NORM_DATETIME_PATTERN); defaultProperties.put("spring.jackson.time-zone", TimeZone.getDefault().getID()); -- GitLab