diff --git a/README.md b/README.md
index 5149ee4..7d19ecf 100644
--- a/README.md
+++ b/README.md
@@ -17,5 +17,4 @@ axzo-framework-commons是常用基础类库和框架实践。包含子模块如
- axzo-framework-math: 封装科学计算相关工具
- axzo-framework-web: 封装spring-web
- axzo-framework-webmvc: 封装spring-webmvc
-- axzo-framework-dependencies: 管理所有依赖
- . ...
diff --git a/axzo-common-autoconfigure/pom.xml b/axzo-common-autoconfigure/pom.xml
index 1649ad3..20704d6 100644
--- a/axzo-common-autoconfigure/pom.xml
+++ b/axzo-common-autoconfigure/pom.xml
@@ -95,5 +95,4 @@
spring-security-web
-
\ No newline at end of file
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/data/IdAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/data/IdAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/data/IdAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/data/IdAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java
similarity index 92%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java
index 462c833..aede591 100644
--- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java
+++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java
@@ -84,6 +84,11 @@ public class ApplicationReadyInfoAutoConfiguration {
s.append("\tSwaggerUI:\t\t").append(protocol).append("://").append(ip)
.append(":").append(port).append("/swagger-ui.html\n");
}
+ String knife4jPageLocation = "classpath:META-INF/resources/doc.html";
+ if (Seq.of(activeProfiles).contains("swagger") && Resources.exists(knife4jPageLocation)) {
+ s.append("\tSwaggerUI:\t\t").append(protocol).append("://").append(ip)
+ .append(":").append(port).append("/doc.html\n");
+ }
}
s.append("\tProfile(s):\t\t").append(Arrays.toString(activeProfiles)).append("\n");
s.append("----------------------------------------------------------------");
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/BuildInConfigOverridePostProcessor.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/BuildInConfigOverridePostProcessor.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/BuildInConfigOverridePostProcessor.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/BuildInConfigOverridePostProcessor.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonCustomer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonCustomer.java
similarity index 81%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonCustomer.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonCustomer.java
index b37f6b7..d6945f7 100644
--- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonCustomer.java
+++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonCustomer.java
@@ -1,17 +1,18 @@
package cn.axzo.framework.autoconfigure.jackson;
+import static com.fasterxml.jackson.annotation.JsonInclude.Include.USE_DEFAULTS;
+import static com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER;
+import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_FLOAT_AS_INT;
+import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY;
+import static com.fasterxml.jackson.databind.DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS;
+import static com.fasterxml.jackson.databind.MapperFeature.PROPAGATE_TRANSIENT_MARKER;
+import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS;
+
+import java.util.TimeZone;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.core.Ordered;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
-import java.util.TimeZone;
-
-import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_ABSENT;
-import static com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER;
-import static com.fasterxml.jackson.databind.DeserializationFeature.*;
-import static com.fasterxml.jackson.databind.MapperFeature.PROPAGATE_TRANSIENT_MARKER;
-import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS;
-
/**
* @Description
* @Author liyong.tian
@@ -22,7 +23,7 @@ public class JacksonCustomer implements Jackson2ObjectMapperBuilderCustomizer, O
@Override
public void customize(Jackson2ObjectMapperBuilder builder) {
- builder.serializationInclusion(NON_ABSENT);
+ builder.serializationInclusion(USE_DEFAULTS);
builder.timeZone(TimeZone.getDefault());
// disable
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonModuleAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonModuleAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonModuleAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonModuleAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/package-info.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/package-info.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/package-info.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/package-info.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/MethodValidationAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/MethodValidationAutoConfiguration.java
similarity index 73%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/MethodValidationAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/MethodValidationAutoConfiguration.java
index 8259292..7886fe9 100644
--- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/MethodValidationAutoConfiguration.java
+++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/MethodValidationAutoConfiguration.java
@@ -1,11 +1,13 @@
package cn.axzo.framework.autoconfigure.validation;
import lombok.val;
+import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration;
+import org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@@ -28,7 +30,10 @@ public class MethodValidationAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MethodValidationPostProcessor methodValidationPostProcessor(Environment environment, Validator validator) {
- val processor = ValidationAutoConfiguration.methodValidationPostProcessor(environment, validator, null);
+ MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
+ boolean proxyTargetClass = (Boolean)environment.getProperty("spring.aop.proxy-target-class", Boolean.class, true);
+ processor.setProxyTargetClass(proxyTargetClass);
+ processor.setValidator(validator);
processor.setBeforeExistingAdvisors(true);
return processor;
}
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/SpringValidatorAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/SpringValidatorAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/SpringValidatorAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/SpringValidatorAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/FilterAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/FilterAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/FilterAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/FilterAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/PageWebAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/PageWebAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/PageWebAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/PageWebAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/BodyAdviceAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/BodyAdviceAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/BodyAdviceAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/BodyAdviceAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicBodyExtractor.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicBodyExtractor.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicBodyExtractor.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicBodyExtractor.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicResponseBodyAdvice.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicResponseBodyAdvice.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicResponseBodyAdvice.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicResponseBodyAdvice.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/VerboseResultAdvice.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/VerboseResultAdvice.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/VerboseResultAdvice.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/VerboseResultAdvice.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/context/WebMvcAwareAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/context/WebMvcAwareAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/context/WebMvcAwareAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/context/WebMvcAwareAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsProperties.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsProperties.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsProperties.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsProperties.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/RespErrorCodeMappingProperties.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/RespErrorCodeMappingProperties.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/RespErrorCodeMappingProperties.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/RespErrorCodeMappingProperties.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionApiResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionApiResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionApiResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionApiResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/HttpStatusResolver.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/HttpStatusResolver.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/HttpStatusResolver.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/HttpStatusResolver.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalErrorController.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalErrorController.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalErrorController.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalErrorController.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalExceptionHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalExceptionHandler.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalExceptionHandler.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalExceptionHandler.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/Requests.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/Requests.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/Requests.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/Requests.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/AxzoProperties.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/AxzoProperties.java
similarity index 60%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/AxzoProperties.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/AxzoProperties.java
index 52d9b66..7e31f5a 100644
--- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/AxzoProperties.java
+++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/AxzoProperties.java
@@ -16,8 +16,6 @@ public class AxzoProperties {
private Swagger swagger;
- private YApi yApi;
-
@Data
public static class Swagger {
private boolean enabled = false;
@@ -35,32 +33,4 @@ public class AxzoProperties {
private String host = null;
private String[] protocols = new String[0];
}
-
- @Data
- public static class YApi {
- /**
- * 是否同步YApi
- */
- public boolean enabled = false;
-
- /**
- * 数据同步方式 normal"(普通模式) , "good"(智能合并), "merge"(完全覆盖) 三种模式
- */
- private String merge = "normal";
-
- /**
- * 对应文件夹的 token
- */
- private String token;
-
- /**
- * json 数据来源(代替 json 字符串)。
- */
- private String url;
-
- /**
- * 组名称,一般 默认 default
- */
- private String groupName = "default";
- }
}
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/SwaggerAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/SwaggerAutoConfiguration.java
similarity index 87%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/SwaggerAutoConfiguration.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/SwaggerAutoConfiguration.java
index 054860c..e6cf128 100644
--- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/SwaggerAutoConfiguration.java
+++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/SwaggerAutoConfiguration.java
@@ -7,9 +7,9 @@ import cn.axzo.framework.domain.web.result.ApiListResult;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.framework.context.Placeholders;
-import cn.axzo.framework.web.http.ApiEntity;
-import cn.axzo.framework.web.http.ApiListEntity;
-import cn.axzo.framework.web.http.ApiPageEntity;
+import cn.axzo.framework.web.http.ApiResponse;
+import cn.axzo.framework.web.http.ApiListResponse;
+import cn.axzo.framework.web.http.ApiPageResponse;
import com.fasterxml.classmate.TypeResolver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -124,35 +124,35 @@ public class SwaggerAutoConfiguration {
);
}
- @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiEntity")
+ @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiResponse")
@Bean
- public AlternateTypeRule apiEntityAlternateTypeRule(TypeResolver typeResolver) {
+ public AlternateTypeRule apiResponseAlternateTypeRule(TypeResolver typeResolver) {
return AlternateTypeRules.newRule(
- typeResolver.resolve(ApiEntity.class, WildcardType.class),
+ typeResolver.resolve(ApiResponse.class, WildcardType.class),
typeResolver.resolve(ApiResult.class, WildcardType.class)
);
}
- @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiEntity")
+ @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiResponse")
@Bean
- public AlternateTypeRule callableApiEntityAlternateTypeRule(TypeResolver typeResolver) {
+ public AlternateTypeRule callableApiResponseAlternateTypeRule(TypeResolver typeResolver) {
return newRule(
- typeResolver.resolve(Callable.class, typeResolver.resolve(ApiEntity.class, WildcardType.class)),
+ typeResolver.resolve(Callable.class, typeResolver.resolve(ApiResponse.class, WildcardType.class)),
typeResolver.resolve(ApiResult.class, WildcardType.class)
);
}
- @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiListEntity")
+ @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiListResponse")
@Bean
- public AlternateTypeRule apiListEntityAlternateTypeRule(TypeResolver typeResolver) {
- return newRule(typeResolver.resolve(ApiListEntity.class, WildcardType.class),
+ public AlternateTypeRule apiListResponseAlternateTypeRule(TypeResolver typeResolver) {
+ return newRule(typeResolver.resolve(ApiListResponse.class, WildcardType.class),
typeResolver.resolve(ApiListResult.class, WildcardType.class));
}
- @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiPageEntity")
+ @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiPageResponse")
@Bean
- public AlternateTypeRule apiPageEntityAlternateTypeRule(TypeResolver typeResolver) {
- return newRule(typeResolver.resolve(ApiPageEntity.class, WildcardType.class),
+ public AlternateTypeRule apiPageResponseAlternateTypeRule(TypeResolver typeResolver) {
+ return newRule(typeResolver.resolve(ApiPageResponse.class, WildcardType.class),
typeResolver.resolve(ApiPageResult.class, WildcardType.class));
}
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java
diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SwaggerCustomizer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SwaggerCustomizer.java
similarity index 100%
rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SwaggerCustomizer.java
rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SwaggerCustomizer.java
diff --git a/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories b/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories
index ba1b083..8f9a464 100644
--- a/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories
+++ b/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories
@@ -11,8 +11,8 @@ cn.axzo.framework.autoconfigure.data.IdAutoConfiguration,\
cn.axzo.framework.autoconfigure.web.cors.CorsAutoConfiguration,\
cn.axzo.framework.autoconfigure.web.PageWebAutoConfiguration,\
cn.axzo.framework.autoconfigure.web.exception.ExceptionHandlerAutoConfiguration,\
-# cn.axzo.framework.autoconfigure.web.swagger.SwaggerAutoConfiguration,\
cn.axzo.framework.autoconfigure.validation.SpringValidatorAutoConfiguration,\
cn.axzo.framework.autoconfigure.web.advice.BodyAdviceAutoConfiguration,\
cn.axzo.framework.autoconfigure.web.FilterAutoConfiguration,\
cn.axzo.framework.autoconfigure.web.context.WebMvcAwareAutoConfiguration
+# cn.axzo.framework.autoconfigure.web.swagger.SwaggerAutoConfiguration,\
diff --git a/axzo-common-clients/feign-starter/pom.xml b/axzo-common-clients/feign-starter/pom.xml
new file mode 100644
index 0000000..8062c81
--- /dev/null
+++ b/axzo-common-clients/feign-starter/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ axzo-common-clients
+ cn.axzo.framework.client
+ 1.0.0-SNAPSHOT
+
+
+ feign-starter
+ Axzo Common Client Feign Starter
+
+
+
+
+ cn.axzo.framework
+ axzo-common-domain
+
+
+ cn.axzo.framework.jackson
+ jackson-starter
+
+
+ io.github.openfeign
+ feign-core
+
+
+ io.github.openfeign
+ feign-slf4j
+
+
+ io.github.openfeign
+ feign-hystrix
+
+
+ io.github.openfeign
+ feign-okhttp
+
+
+ com.squareup.okhttp3
+ okhttp
+
+
+
+
+ com.squareup.okhttp3
+ okhttp
+
+
+ io.github.openfeign.form
+ feign-form
+
+
+
+
+ io.github.openfeign.form
+ feign-form-spring
+ true
+
+
+
+
\ No newline at end of file
diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/FeignFallback.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/FeignFallback.java
new file mode 100644
index 0000000..28ea106
--- /dev/null
+++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/FeignFallback.java
@@ -0,0 +1,64 @@
+package cn.axzo.framework.client.feign;
+
+import cn.axzo.framework.domain.web.ApiException;
+import cn.axzo.framework.domain.web.code.IRespCode;
+import cn.axzo.framework.domain.web.result.ApiListResult;
+import cn.axzo.framework.domain.web.result.ApiPageResult;
+import cn.axzo.framework.domain.web.result.ApiResult;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.annotation.Nullable;
+
+/**
+ * @author liyong.tian
+ * @since 2022/11/3
+ */
+@RequiredArgsConstructor
+@Getter
+@Slf4j
+public class FeignFallback {
+
+ @Nullable
+ private final Throwable cause;
+
+ private final IRespCode respCode;
+
+ public ApiResult resp() {
+ if (cause != null) {
+ log.error("Enter feign fallback", cause);
+ if (cause instanceof ApiException) {
+ return ApiResult.err(((ApiException) cause).getCode(), cause.getMessage());
+ }
+ return ApiResult.err(respCode, cause.getMessage());
+ }
+ log.error("Enter feign fallback,no cause catch");
+ return ApiResult.err(respCode);
+ }
+
+ public ApiPageResult pageResp() {
+ if (cause != null) {
+ log.error("Enter feign fallback", cause);
+ if (cause instanceof ApiException) {
+ return ApiPageResult.err(((ApiException) cause).getCode(), cause.getMessage());
+ }
+ return ApiPageResult.err(respCode, cause.getMessage());
+ }
+ log.error("Enter feign fallback,no cause catch");
+
+ return ApiPageResult.err(respCode);
+ }
+
+ public ApiListResult listResp() {
+ if (cause != null) {
+ log.error("Enter feign fallback", cause);
+ if (cause instanceof ApiException) {
+ return ApiListResult.err(((ApiException) cause).getCode(), cause.getMessage());
+ }
+ return ApiListResult.err(respCode, cause.getMessage());
+ }
+ log.error("Enter feign fallback,no cause catch");
+ return ApiListResult.err(respCode);
+ }
+}
diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/decoder/ApiResultErrorDecoder.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/decoder/ApiResultErrorDecoder.java
new file mode 100644
index 0000000..7cf339a
--- /dev/null
+++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/decoder/ApiResultErrorDecoder.java
@@ -0,0 +1,64 @@
+package cn.axzo.framework.client.feign.decoder;
+
+import cn.axzo.framework.core.util.ClassUtil;
+import cn.axzo.framework.domain.ServiceException;
+import cn.axzo.framework.domain.web.ApiException;
+import cn.axzo.framework.domain.web.ClientException;
+import cn.axzo.framework.domain.web.code.IRespCode;
+import cn.axzo.framework.domain.web.code.RespCode;
+import cn.axzo.framework.domain.web.http.HttpStatus;
+import cn.axzo.framework.domain.web.result.ApiResult;
+import cn.axzo.framework.jackson.utility.JSON;
+import feign.Response;
+import feign.codec.ErrorDecoder;
+import lombok.extern.slf4j.Slf4j;
+
+import static cn.axzo.framework.core.Constants.CLIENT_MARKER;
+import static cn.axzo.framework.domain.web.code.BaseCode.NOT_FOUND;
+import static java.lang.String.format;
+
+/**
+ * @author liyong.tian
+ * @since 2022/11/3
+ */
+@Slf4j
+public class ApiResultErrorDecoder implements ErrorDecoder {
+
+ private static final boolean isHystrixPresent;
+
+ static {
+ isHystrixPresent = ClassUtil.isPresent(
+ "com.netflix.hystrix.exception.HystrixBadRequestException",
+ ApiResultErrorDecoder.class.getClassLoader()
+ );
+ }
+
+ public ApiResultErrorDecoder() {
+ log.info(format("Add Feign ErrorDecoder: %s, isHystrixPresent: %s", "ApiResultErrorDecoder", isHystrixPresent));
+ }
+
+ @Override
+ public Exception decode(String methodKey, Response response) {
+ try {
+ HttpStatus status = HttpStatus.valueOf(response.status());
+ if (status == HttpStatus.NOT_FOUND) {
+ return new ApiException("url[" + response.request().url() + "] not found", NOT_FOUND);
+ }
+
+ ApiResult> apiResult = JSON.parseObject(response.body().asInputStream(), ApiResult.class);
+ String code = apiResult.getCode();
+ if (code == null) {
+ return new ServiceException("ApiResult code is null");
+ }
+
+ IRespCode respCode = new RespCode(code, apiResult.getMsg());
+ if (isHystrixPresent && status.is4xxClientError()) {
+ return new ClientException(respCode); // 不熔断
+ }
+ return new ApiException(respCode);
+ } catch (Exception e) {
+ log.error(CLIENT_MARKER, format("%s reading %s ", e.getMessage(), methodKey), e);
+ return e;
+ }
+ }
+}
diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/ClientDecorator.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/ClientDecorator.java
new file mode 100644
index 0000000..2e84488
--- /dev/null
+++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/ClientDecorator.java
@@ -0,0 +1,29 @@
+package cn.axzo.framework.client.feign.logger;
+
+import feign.Client;
+import feign.Request;
+import feign.Response;
+
+import java.io.IOException;
+
+/**
+ * @author liyong.tian
+ * @since 2022/11/3
+ */
+public class ClientDecorator implements Client {
+
+ private final Client delegate;
+
+ public ClientDecorator(Client delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public Response execute(Request request, Request.Options options) throws RequestIOException {
+ try {
+ return delegate.execute(request, options);
+ } catch (IOException e) {
+ throw new RequestIOException(request, e);
+ }
+ }
+}
diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/FeignLogger.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/FeignLogger.java
new file mode 100644
index 0000000..c3b70d1
--- /dev/null
+++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/FeignLogger.java
@@ -0,0 +1,179 @@
+package cn.axzo.framework.client.feign.logger;
+
+import com.google.common.base.Joiner;
+import cn.axzo.framework.domain.http.*;
+import cn.axzo.framework.domain.web.http.HttpStatus;
+import feign.Request;
+import feign.Response;
+import feign.Util;
+import feign.slf4j.Slf4jLogger;
+import lombok.val;
+import org.javatuples.Pair;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+
+import static cn.axzo.framework.core.Constants.CLIENT_MARKER;
+import static java.nio.charset.Charset.defaultCharset;
+import static java.util.stream.Collectors.toList;
+import static jodd.util.StringPool.*;
+
+/**
+ * @author liyong.tian
+ * @since 2022/11/2
+ */
+@SuppressWarnings("WeakerAccess")
+public class FeignLogger extends Slf4jLogger {
+
+ private final Logger log;
+
+ private final HttpLogFormatter formatter;
+
+ public FeignLogger(Class> clazz) {
+ this(clazz, JsonHttpLogFormatter.INSTANCE);
+ }
+
+ public FeignLogger(Class> clazz, HttpLogFormatter formatter) {
+ super(clazz);
+ this.log = LoggerFactory.getLogger(clazz);
+ if (formatter == null) {
+ this.formatter = JsonHttpLogFormatter.INSTANCE;
+ } else {
+ this.formatter = formatter;
+ }
+ }
+
+ @Override
+ protected void log(String configKey, String format, Object... args) {
+ IllegalStateException exception = new IllegalStateException("this method may not be invoked");
+ log.error("will not happen", exception);
+ throw exception;
+ }
+
+ @Override
+ protected void logRequest(String configKey, Level logLevel, Request request) {
+ // do nothing
+ }
+
+ @Override
+ protected IOException logIOException(String configKey, Level logLevel, IOException ioe, long elapsedTime) {
+ if (logLevel == Level.NONE || !(ioe instanceof RequestIOException)) {
+ //响应日志
+ HttpResponseLog responseLog = _responseLog(configKey, ioe, elapsedTime);
+
+ //打印响应日志
+ log.error(CLIENT_MARKER, formatter.format(responseLog), ioe);
+ return ioe;
+ }
+
+ Request request = ((RequestIOException) ioe).getRequest();
+
+ //请求日志
+ HttpRequestLog requestLog = _requestLog(request);
+
+ //响应日志
+ HttpResponseLog responseLog = _responseLog(request.url(), ioe, elapsedTime);
+
+ //打印完整的请求响应日志
+ log.error(CLIENT_MARKER, formatter.format(requestLog, responseLog), ioe);
+ return ioe;
+ }
+
+ @Override
+ protected void logRetry(String configKey, Level logLevel) {
+ log.info(CLIENT_MARKER, methodTag(configKey) + "---> RETRYING");
+ }
+
+ @Override
+ protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime)
+ throws IOException {
+ if (logLevel == Level.NONE) {
+ return response;
+ }
+
+ //请求日志
+ val requestLog = _requestLog(response.request());
+
+ //响应日志
+ val responsePair = _responseLog(response, elapsedTime);
+
+ //打印完整的请求响应日志
+ log.info(CLIENT_MARKER, formatter.format(requestLog, responsePair.getValue0()));
+ return responsePair.getValue1();
+ }
+
+ private HttpRequestLog _requestLog(Request request) {
+ Objects.requireNonNull(request, "request cannot be null");
+
+ val logBuilder = HttpRequestLog.builder();
+
+ //protocol
+ logBuilder.protocol("HTTP/1.1");
+
+ //method
+ logBuilder.method(request.method());
+
+ //url
+ logBuilder.url(request.url());
+
+ //headers
+ List requestHeaders = request.headers().entrySet().stream()
+ .map(entry -> entry.getKey() + COLON + SPACE + Joiner.on(COMMA + SPACE).join(entry.getValue()))
+ .collect(toList());
+ logBuilder.headers(requestHeaders);
+
+ //body
+ if (!HttpHeaderUtil.isMultipartRequest(requestHeaders)) {
+ logBuilder.body(request.body() == null ? null : new String(request.body()));
+ }
+
+ return logBuilder.build();
+ }
+
+ private Pair _responseLog(Response response, long elapsedTime) throws IOException {
+ val logBuilder = HttpResponseLog.builder();
+
+ HttpStatus status = HttpStatus.valueOf(response.status());
+ List responseHeaders = response.headers().entrySet().stream()
+ .map(entry -> entry.getKey() + COLON + SPACE + Joiner.on(COMMA + SPACE).join(entry.getValue()))
+ .collect(toList());
+ //url
+ logBuilder.url(response.request().url());
+
+ //status
+ logBuilder.status(status.value());
+
+ //msg
+ logBuilder.msg(status.getReasonPhrase());
+
+ //headers
+ logBuilder.headers(responseHeaders);
+
+ //tookMs
+ logBuilder.tookMs(elapsedTime);
+
+ //body
+ boolean canReadBody = response.body() != null && !HttpHeaderUtil.isDownloadResponse(responseHeaders);
+ if (canReadBody) {
+ byte[] bodyBytes = Util.toByteArray(response.body().asInputStream());
+ logBuilder.body(new String(bodyBytes, defaultCharset()));
+ //流只能读一次,需要把响应重新构造一次
+ response = response.toBuilder().body(bodyBytes).build();
+ } else {
+ logBuilder.body(EMPTY);
+ }
+
+ return Pair.with(logBuilder.build(), response);
+ }
+
+ private HttpResponseLog _responseLog(String url, IOException ioe, long elapsedTime) {
+ return HttpResponseLog.builder()
+ .url(url)
+ .tookMs(elapsedTime)
+ .errorMsg(ioe.getClass().getSimpleName() + ": " + ioe.getMessage())
+ .build();
+ }
+}
diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/RequestIOException.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/RequestIOException.java
new file mode 100644
index 0000000..38e96a6
--- /dev/null
+++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/RequestIOException.java
@@ -0,0 +1,24 @@
+package cn.axzo.framework.client.feign.logger;
+
+import feign.Request;
+import lombok.Getter;
+
+import java.io.IOException;
+
+/**
+ * @author liyong.tian
+ * @since 2022/11/2
+ */
+public class RequestIOException extends IOException {
+
+ @Getter
+ private final Request request;
+
+ private final IOException exception;
+
+ public RequestIOException(Request request, IOException cause) {
+ super(cause instanceof RequestIOException ? ((RequestIOException) cause).exception : cause);
+ this.request = request;
+ this.exception = cause;
+ }
+}
diff --git a/axzo-common-clients/pom.xml b/axzo-common-clients/pom.xml
index be6b81a..4ee445d 100644
--- a/axzo-common-clients/pom.xml
+++ b/axzo-common-clients/pom.xml
@@ -17,5 +17,6 @@
retrofit-starter
+ feign-starter
\ No newline at end of file
diff --git a/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java b/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java
index 4de9a36..d2f0331 100644
--- a/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java
+++ b/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java
@@ -1,5 +1,6 @@
package cn.axzo.framework.client.retrofit;
+import cn.axzo.framework.core.net.FilterUtil;
import cn.axzo.framework.domain.http.*;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
@@ -11,6 +12,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import static cn.axzo.framework.core.Constants.CLIENT_MARKER;
+import static java.lang.System.nanoTime;
+import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static okhttp3.Protocol.HTTP_1_1;
/**
@@ -46,7 +50,33 @@ public class HttpLogInterceptor implements Interceptor {
@Override
@ParametersAreNonnullByDefault
public Response intercept(Chain chain) throws IOException {
- return null;
+ //0.判断该请求是否要打日志
+ Request request = chain.request();
+ if (FilterUtil.matchFiltersURL(request.url().encodedPath(), ignoreUrlPatterns)) {
+ return chain.proceed(request);
+ }
+
+ // 1.请求日志
+ HttpRequestLog requestLog = _requestLog(chain.connection(), request);
+
+ // 2.发送请求, 接收响应
+ long startNs = nanoTime();
+ Response response;
+ try {
+ response = chain.proceed(request);
+ } catch (Exception e) {
+ // 3.异常响应日志
+ long tookMs = NANOSECONDS.toMillis(nanoTime() - startNs);
+ HttpResponseLog responseLog = _responseLog(request, tookMs, e);
+ log.error(CLIENT_MARKER, formatter.format(requestLog, responseLog), e);
+ throw e;
+ }
+
+ // 3.正常响应日志
+ long tookMs = NANOSECONDS.toMillis(nanoTime() - startNs);
+ HttpResponseLog responseLog = _responseLog(response, tookMs);
+ log.info(CLIENT_MARKER, formatter.format(requestLog, responseLog));
+ return response;
}
/**
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/pom.xml b/axzo-common-datas/axzo-data-mybatis-plus/pom.xml
new file mode 100644
index 0000000..0aff5f7
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+
+
+ axzo-common-datas
+ cn.axzo.framework.data
+ 1.0.0-SNAPSHOT
+
+
+ axzo-data-mybatis-plus
+ Axzo Common Data Mybatis Plus
+
+
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+
+ org.springframework
+ spring-context
+
+
+ org.springframework
+ spring-tx
+
+
+
+
+ com.baomidou
+ mybatis-plus-core
+
+
+ com.baomidou
+ mybatis-plus-extension
+
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
\ No newline at end of file
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java
new file mode 100644
index 0000000..22ab002
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java
@@ -0,0 +1,56 @@
+package cn.axzo.framework.data.mybatisplus.config;
+
+import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
+import cn.axzo.framework.data.mybatisplus.model.BaseOwnEntity;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+
+import java.util.Date;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/11/4 11:34
+ * @Description:
+ */
+public class EntityMetaObjectHandler implements MetaObjectHandler {
+
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ Object entity = metaObject.getOriginalObject();
+ if (entity instanceof BaseEntity) {
+ //默认有值不覆盖
+ this.fillStrategy(metaObject, "createAt", new Date());
+ this.fillStrategy(metaObject, "updateAt", new Date());
+ }
+
+ if (entity instanceof BaseOwnEntity) {
+ //默认有值不覆盖
+ this.fillStrategy(metaObject, "createBy", getAcctId());
+ this.fillStrategy(metaObject, "updateBy", getAcctId());
+ }
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ Object entity = metaObject.getOriginalObject();
+ if (entity instanceof BaseEntity) {
+ //强制覆盖
+ this.setFieldValByName("updateAt", new Date(), metaObject);
+ }
+
+ if (entity instanceof BaseOwnEntity) {
+ //强制覆盖
+ this.setFieldValByName("updateBy", getAcctId(), metaObject);
+ }
+ }
+
+ /**
+ * 获取当前用户账户id
+ *
+ * @return
+ */
+ private Long getAcctId() {
+ return 1L;
+ }
+
+}
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java
new file mode 100644
index 0000000..f364bee
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java
@@ -0,0 +1,30 @@
+package cn.axzo.framework.data.mybatisplus.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/11/4 10:40
+ * @Description:
+ */
+@EnableTransactionManagement
+@Configuration
+public class MybatisPlusAutoConfiguration {
+
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+
+ @Bean
+ public EntityMetaObjectHandler EntityMetaObjectHandler () {
+ return new EntityMetaObjectHandler();
+ }
+}
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java
new file mode 100644
index 0000000..c538d6b
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java
@@ -0,0 +1,12 @@
+package cn.axzo.framework.data.mybatisplus.model;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/11/4 10:29
+ * @Description: 支持类
+ */
+public abstract class BaseDataEntity > extends BaseEntity{
+
+}
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java
new file mode 100644
index 0000000..61e6653
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java
@@ -0,0 +1,41 @@
+package cn.axzo.framework.data.mybatisplus.model;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/11/4 10:26
+ * @Description: 实体基础类
+ */
+@Data
+public abstract class BaseEntity> extends Model {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 是否删除:0否 1是
+ */
+ @TableField(value = "is_delete", fill = FieldFill.INSERT)
+ private Integer isDelete = 0;
+
+ /**
+ * 创建时间
+ */
+ @TableField(value = "create_at", fill = FieldFill.INSERT)
+ private Date createAt;
+
+ /**
+ * 修改时间
+ */
+ @TableField(value = "update_at", fill = FieldFill.INSERT_UPDATE)
+ private Date updateAt;
+}
+
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java
new file mode 100644
index 0000000..9198296
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java
@@ -0,0 +1,27 @@
+package cn.axzo.framework.data.mybatisplus.model;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/11/4 10:30
+ * @Description: 支持类
+ */
+@Data
+public abstract class BaseOwnEntity> extends BaseDataEntity {
+
+ /**
+ * 创建人
+ */
+ @TableField(fill = FieldFill.INSERT)
+ protected Long createBy;
+
+ /**
+ * 修改人
+ */
+ @TableField(fill = FieldFill.UPDATE)
+ protected Long updateBy;
+}
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java
new file mode 100644
index 0000000..e8ecbca
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java
@@ -0,0 +1 @@
+package cn.axzo.framework.data.mybatisplus;
\ No newline at end of file
diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories b/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..19e86e6
--- /dev/null
+++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+cn.axzo.framework.data.mybatisplus.config.MybatisPlusAutoConfiguration
\ No newline at end of file
diff --git a/axzo-common-datas/pom.xml b/axzo-common-datas/pom.xml
new file mode 100644
index 0000000..79cf886
--- /dev/null
+++ b/axzo-common-datas/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+
+ axzo-framework-commons
+ cn.axzo.framework
+ 1.0.0-SNAPSHOT
+
+
+ cn.axzo.framework.data
+ axzo-common-datas
+ pom
+ Axzo Common Data Parent
+
+
+ axzo-data-mybatis-plus
+
+
\ No newline at end of file
diff --git a/axzo-common-dependencies/pom.xml b/axzo-common-dependencies/pom.xml
deleted file mode 100644
index ff78714..0000000
--- a/axzo-common-dependencies/pom.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
- 4.0.0
-
-
- cn.axzo.infra
- axzo-dependencies
- 2.0.0-SNAPSHOT
-
-
-
- axzo-common-dependencies
- 1.0.0-SNAPSHOT
- pom
- Axzo Common Dependencies
-
-
- 1.0.0-SNAPSHOT
-
-
-
-
-
-
- cn.axzo.framework
- axzo-common-core
- ${axzo.commons.version}
-
-
- cn.axzo.framework
- axzo-common-math
- ${axzo.commons.version}
-
-
- cn.axzo.framework
- axzo-common-validator
- ${axzo.commons.version}
-
-
- cn.axzo.framework
- axzo-common-domain
- ${axzo.commons.version}
-
-
-
- cn.axzo.framework.framework
- axzo-common-context
- ${axzo.commons.version}
-
-
- cn.axzo.framework
- axzo-common-boot
- ${axzo.commons.version}
-
-
- cn.axzo.framework
- axzo-common-web
- ${axzo.commons.version}
-
-
- cn.axzo.framework
- axzo-common-webmvc
- ${axzo.commons.version}
-
-
-
-
- cn.axzo.framework.logging
- log4j2-starter
- ${axzo.commons.version}
-
-
- cn.axzo.framework.logging
- logback-starter
- ${axzo.commons.version}
-
-
-
-
- cn.axzo.framework.client
- retrofit-starter
- ${axzo.commons.version}
-
-
-
-
- cn.axzo.framework.jackson
- jackson-datatype-enumstd
- ${axzo.commons.version}
-
-
- cn.axzo.framework.jackson
- jackson-datatype-fraction
- ${axzo.commons.version}
-
-
- cn.axzo.framework.jackson
- jackson-datatype-period
- ${axzo.commons.version}
-
-
- cn.axzo.framework.jackson
- jackson-datatype-string-trim
- ${axzo.commons.version}
-
-
- cn.axzo.framework.jackson
- jackson-utility
- ${axzo.commons.version}
-
-
- cn.axzo.framework.jackson
- jackson-starter
- ${axzo.commons.version}
-
-
-
-
\ No newline at end of file
diff --git a/axzo-common-domain/pom.xml b/axzo-common-domain/pom.xml
index b818aa2..cdda956 100644
--- a/axzo-common-domain/pom.xml
+++ b/axzo-common-domain/pom.xml
@@ -97,5 +97,10 @@
mybatis-plus-core
provided
+
+ com.baomidou
+ mybatis-plus-extension
+ provided
+
\ No newline at end of file
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java
index aae6f97..018fb70 100644
--- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java
@@ -1,6 +1,5 @@
package cn.axzo.framework.domain.page;
-
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java
index d253ba6..0514b5c 100644
--- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java
@@ -49,7 +49,6 @@ public class PageImpl implements Page {
}
return new PageImpl<>(result, current, total);
}
-
@Nonnull
@Override
public Page mapAll(Function, List> mapper) {
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageQO.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageQO.java
new file mode 100644
index 0000000..9301eb4
--- /dev/null
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageQO.java
@@ -0,0 +1,49 @@
+package cn.axzo.framework.domain.page;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/10/28
+ * @Description: 基于mybatis-plus封装分页请求类
+ */
+@Data
+public class PageQO {
+
+ @ApiModelProperty("当前页")
+ private Long page = 1L;
+
+ @ApiModelProperty("每页大小")
+ private Long pageSize = 10L;
+
+ //排序字段
+ private String sortType;
+ //排序类型,(desc 降序,asc 升序)
+ private String sortDirection;
+
+ //是否查询详情
+ private boolean needDetail = true;
+
+ public PageQO() {
+ }
+
+ public Page toPage() {
+ if (this.page != null && this.page == -1L) {
+ this.page = 1L;
+ this.pageSize = 9999L;
+ return new Page(this.page, this.pageSize);
+ } else {
+ if (this.page == null || this.page == 0L) {
+ this.page = 1L;
+ }
+
+ if (this.pageSize == null || this.pageSize == 0L) {
+ this.pageSize = 20L;
+ }
+
+ return new Page(this.page, this.pageSize);
+ }
+ }
+}
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageResp.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageResp.java
new file mode 100644
index 0000000..9ebfe75
--- /dev/null
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageResp.java
@@ -0,0 +1,67 @@
+package cn.axzo.framework.domain.page;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.springframework.util.CollectionUtils;
+
+/**
+ * @Author: liyong.tian
+ * @Date: 2022/10/28
+ * @Description: 基于mybatis-plus封装分页返回类
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PageResp {
+
+ /**
+ * 页码(从第1页开始)
+ */
+ private Long page;
+
+ /**
+ * 每页条数
+ */
+ private Long pageSize;
+
+ /**
+ * 总记录数
+ */
+ private Long totalCount;
+
+ private List list;
+
+ public static PageResp zero(Long pageNum, Long pageSize) {
+ return new PageResp(pageNum, pageSize, 0L, new ArrayList<>());
+ }
+
+ public static PageResp list(Long pageNum, Long pageSize, Long totalCount, List data) {
+ if (CollectionUtils.isEmpty(data)) {
+ return zero(pageNum, pageSize);
+ }
+ return new PageResp(pageNum, pageSize, totalCount, data);
+ }
+
+ public static PageResp list(IPage> page, List data) {
+ if (CollectionUtils.isEmpty(data)) {
+ return zero(page.getCurrent(), page.getSize());
+ }
+ return new PageResp(page.getCurrent(), page.getSize(), page.getTotal(), data);
+ }
+
+ public static PageResp list(PageQO page, Long totalCount, List data) {
+ if (CollectionUtils.isEmpty(data)) {
+ return zero(page.getPage(), page.getPageSize());
+ }
+ return new PageResp(page.getPage(), page.getPageSize(), totalCount, data);
+
+ }
+}
\ No newline at end of file
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java
index 39915e8..f9c42ea 100644
--- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java
@@ -16,10 +16,10 @@ import java.util.stream.Stream;
@Description("基础错误码")
public enum BaseCode implements IModuleRespCode{
- SUCCESS("000", "成功", 200) {
+ SUCCESS("000", "success", 200) {
@Override
public String getRespCode() {
- return "0";
+ return "200";
}
},
BAD_REQUEST("400", "请求参数错误", 400),
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java
index 75874e5..d906334 100644
--- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java
@@ -10,7 +10,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.beans.Transient;
-import java.util.LinkedHashMap;
+import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -23,8 +23,8 @@ import static jodd.util.StringUtil.isNotBlank;
* @Date 2020/9/7 20:28
**/
@Data
-@AllArgsConstructor
@NoArgsConstructor
+@AllArgsConstructor
@JsonPropertyOrder({"code", "msg", "data"})
public abstract class ApiCoreResult implements Result {
@@ -74,7 +74,7 @@ public abstract class ApiCoreResult implements Result {
@Override
public Map toMap() {
- Map map = new LinkedHashMap<>();
+ Map map = new HashMap<>();
map.put("code", code);
map.put("msg", msg);
map.put("data", data);
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java
index f1598d6..69afa73 100644
--- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java
@@ -60,7 +60,7 @@ public class ApiListResult extends ApiCoreResult> {
return new ApiListResult<>(code, message, data);
}
- @ConstructorProperties({"code", "message", "data"})
+ @ConstructorProperties({"code", "msg", "data"})
public ApiListResult(String code, String message, List data) {
super(code, message, data);
}
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java
index 02d756f..45037d9 100644
--- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java
@@ -1,17 +1,12 @@
package cn.axzo.framework.domain.web.result;
-import cn.axzo.framework.domain.page.Page;
-import cn.axzo.framework.domain.page.PageImpl;
-import cn.axzo.framework.domain.page.PageVerbose;
-import cn.axzo.framework.domain.page.Pageable;
+import cn.axzo.framework.domain.page.*;
import cn.axzo.framework.domain.web.code.IRespCode;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.beans.ConstructorProperties;
@@ -28,22 +23,9 @@ import static com.google.common.collect.Lists.newArrayList;
* @Date 2020/9/7 20:32
**/
@Data
-@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
-@JsonPropertyOrder({"total", "code", "msg", "data", "pageNum", "pageSize", "verbose"})
-public class ApiPageResult extends ApiCoreResult> {
-
- @ApiModelProperty(value = "总记录数", position = 101, required = true)
- private final Long total;
-
- @ApiModelProperty(value = "当前页", position = 102)
- private final Integer pageNum;
-
- @ApiModelProperty(value = "每页显示数量", position = 103)
- private final Integer pageSize;
-
- @ApiModelProperty(value = "分页冗余信息", position = 104)
- private final PageVerbose verbose;
+@JsonPropertyOrder({"code", "msg", "data"})
+public class ApiPageResult extends ApiCoreResult>{
public static ApiPageResult empty() {
return ok(newArrayList(), 0L);
@@ -83,9 +65,13 @@ public class ApiPageResult extends ApiCoreResult> {
return ok(page.getRecords(), page.getTotal(), (int)page.getCurrent(), (int)page.getSize());
}
+ public static ApiPageResult ok(PageResp page) {
+ return ok(page.getList(), page.getTotalCount(), page.getPage().intValue(), page.getPageSize().intValue());
+ }
+
public static ApiPageResult ok(List data, Long total) {
return build(total, SUCCESS.getRespCode(), SUCCESS.getMessage(), data,
- null, null, null);
+ null, null, null);
}
public static ApiPageResult ok(List data, Long total, Integer pageNumber, Integer pageSize) {
@@ -93,7 +79,7 @@ public class ApiPageResult extends ApiCoreResult> {
}
public static ApiPageResult ok(List data, Long total, Integer pageNumber, Integer pageSize,
- PageVerbose verbose) {
+ PageVerbose verbose) {
return build(total, SUCCESS.getRespCode(), SUCCESS.getMessage(), data, pageNumber, pageSize, verbose);
}
@@ -114,28 +100,31 @@ public class ApiPageResult extends ApiCoreResult> {
}
public static ApiPageResult build(Long total, IRespCode code, List data,
- Integer pageNum, Integer pageSize) {
+ Integer pageNum, Integer pageSize) {
return build(total, code.getRespCode(), code.getMessage(), data, pageNum, pageSize, null);
}
public static ApiPageResult build(Long total, String code, String message, List data,
- Integer pageNum, Integer pageSize) {
+ Integer pageNum, Integer pageSize) {
return new ApiPageResult<>(total, code, message, data, pageNum, pageSize, null);
}
public static ApiPageResult build(Long total, String code, String message, List data,
- Integer pageNum, Integer pageSize, PageVerbose verbose) {
+ Integer pageNum, Integer pageSize, PageVerbose verbose) {
return new ApiPageResult<>(total, code, message, data, pageNum, pageSize, verbose);
}
- @ConstructorProperties({"total", "code", "message", "data", "pageNum", "pageSize", "verbose"})
- public ApiPageResult(Long total, String code, String message, List data, Integer pageNum, Integer pageSize,
+ @ConstructorProperties({"code", "msg", "data"})
+ public ApiPageResult(Long total, String code, String message, List list, Integer pageNum, Integer pageSize,
PageVerbose verbose) {
- super(code, message, data);
- this.total = total;
- this.pageNum = pageNum;
- this.pageSize = pageSize;
- this.verbose = verbose;
+ PageData data = new PageData();
+ data.setList(list);
+ data.setTotalCount(total);
+ data.setPage(pageNum);
+ data.setPageSize(pageSize);
+ this.code = code;
+ this.msg = message;
+ this.data = data;
}
@Override
@@ -143,15 +132,15 @@ public class ApiPageResult extends ApiCoreResult> {
Map map = new LinkedHashMap<>();
map.put("code", code);
map.put("msg", msg);
- map.put("total", total);
map.put("data", data);
- map.put("pageNum", pageNum);
- map.put("pageSize", pageSize);
- map.put("verbose", verbose);
return map;
}
public Page toPage(Pageable pageable) {
- return new PageImpl<>(data == null ? Lists.newArrayList() : data, pageable, total);
+ return new PageImpl<>(data == null ? Lists.newArrayList() : data.getList(), pageable, data.getTotalCount());
+ }
+
+ public PageResp toPage() {
+ return new PageResp(data.getPage().longValue(), data.getPageSize().longValue(), data.getTotalCount(), data.getList() == null ? Lists.newArrayList() : data.getList());
}
}
diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/PageData.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/PageData.java
new file mode 100644
index 0000000..8cdad01
--- /dev/null
+++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/PageData.java
@@ -0,0 +1,33 @@
+package cn.axzo.framework.domain.web.result;
+
+import cn.axzo.framework.domain.page.PageVerbose;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PageData {
+
+ @ApiModelProperty(value = "列表", position = 100, required = true)
+ private List list;
+
+ @ApiModelProperty(value = "总记录数", position = 101, required = true)
+ private Long totalCount;
+
+ @ApiModelProperty(value = "当前页", position = 102)
+ private Integer page;
+
+ @ApiModelProperty(value = "每页显示数量", position = 103)
+ private Integer pageSize;
+
+// @ApiModelProperty(value = "分页冗余信息", position = 104)
+// private PageVerbose verbose;
+
+}
diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java
index 409c616..dd2126b 100644
--- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java
+++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java
@@ -20,7 +20,7 @@ import static jodd.util.StringPool.COMMA;
* 1/100
* [1,100]
*
- * @author jearton
+ * @author liyong.tian
* @since 2017/3/3
*/
public class BigFractionDeserializer extends JsonDeserializer {
diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java
index f2c3c90..42bf3ac 100644
--- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java
+++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java
@@ -20,7 +20,7 @@ import static jodd.util.StringPool.COMMA;
* 1/100
* [1,100]
*
- * @author jearton
+ * @author liyong.tian
* @since 2017/3/2
*/
public class FractionDeserializer extends JsonDeserializer {
diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java
index 7ad1e13..a68b1b9 100644
--- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java
+++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java
@@ -14,7 +14,7 @@ import java.io.IOException;
* 1/100
* [1,100]
*
- * @author jearton
+ * @author liyong.tian
* @since 2017/3/2
*/
public class BigFractionSerializer extends JsonSerializer {
diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java
index 175772d..9b2b9ae 100644
--- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java
+++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java
@@ -14,7 +14,7 @@ import java.io.IOException;
* 1/100
* [1,100]
*
- * @author jearton
+ * @author liyong.tian
* @since 2017/3/2
*/
public class FractionSerializer extends JsonSerializer {
diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java
index eccd074..c533f11 100644
--- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java
+++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java
@@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
import static cn.axzo.framework.jackson.datatype.string.PackageVersion.VERSION;
/**
- * @author jearton
+ * @author liyong.tian
* @since 2017/1/6
*/
public class TrimModule extends SimpleModule {
diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java
index d70dfe0..a14ef4b 100644
--- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java
+++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java
@@ -8,7 +8,7 @@ import com.fasterxml.jackson.databind.deser.std.StringDeserializer;
import java.io.IOException;
/**
- * @author jearton
+ * @author liyong.tian
* @since 2017/1/6
*/
public class TrimDeserializer extends StdScalarDeserializer {
diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java
index 89a5b1a..0021139 100644
--- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java
+++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java
@@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;
import com.fasterxml.jackson.databind.deser.std.StringDeserializer;
/**
- * @author jearton
+ * @author liyong.tian
* @since 2017/1/6
*/
public class TrimDeserializerModifier extends BeanDeserializerModifier {
diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java
index 1e3bf33..7f4d871 100644
--- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java
+++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java
@@ -12,7 +12,7 @@ import java.io.IOException;
import java.lang.reflect.Type;
/**
- * @author jearton
+ * @author liyong.tian
* @since 2017/1/6
*/
public class TrimSerializer extends StdScalarSerializer {
diff --git a/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator b/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator
index b9d5920..a28d4da 100644
--- a/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator
+++ b/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator
@@ -1,22 +1,22 @@
# Assuming a custom constraint annotation @FractionMax
-FractionMaxConstraintValidator
-BigFractionMaxConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.FractionMaxConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.BigFractionMaxConstraintValidator
# Assuming a custom constraint annotation @FractionMin
-FractionMinConstraintValidator
-BigFractionMinConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.FractionMinConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.BigFractionMinConstraintValidator
# Assuming a custom constraint annotation @PeriodMax
-PeriodMaxConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.PeriodMaxConstraintValidator
# Assuming a custom constraint annotation @PeriodMin
-PeriodMinConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.PeriodMinConstraintValidator
# Assuming a custom constraint annotation @SizeIn
-SizeInConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.SizeInConstraintValidator
# Assuming a custom constraint annotation @ASCII
-ASCIIConstraintValidator
+cn.axzo.framework.validator.constraintvalidators.ASCIIConstraintValidator
# Assuming a custom constraint annotation @UTF8
-UTF8ConstraintValidator
\ No newline at end of file
+cn.axzo.framework.validator.constraintvalidators.UTF8ConstraintValidator
\ No newline at end of file
diff --git a/axzo-common-web/pom.xml b/axzo-common-web/pom.xml
index 56d5ced..6176422 100644
--- a/axzo-common-web/pom.xml
+++ b/axzo-common-web/pom.xml
@@ -37,13 +37,11 @@
com.github.pagehelper
pagehelper
- provided
com.baomidou
mybatis-plus-core
- provided
\ No newline at end of file
diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreResponse.java
similarity index 94%
rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreEntity.java
rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreResponse.java
index baa17c2..0e832f3 100644
--- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreEntity.java
+++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreResponse.java
@@ -18,7 +18,7 @@ import java.util.Set;
*/
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
-public abstract class ApiCoreEntity> extends HttpEntity {
+public abstract class ApiCoreResponse> extends HttpEntity {
private final Object status;
@@ -29,7 +29,7 @@ public abstract class ApiCoreEntity> extends HttpE
* @param headers the entity headers
* @param status the status code
*/
- public ApiCoreEntity(R body, MultiValueMap headers, HttpStatus status) {
+ public ApiCoreResponse(R body, MultiValueMap headers, HttpStatus status) {
super(body, headers);
Assert.notNull(status, "HttpStatus must not be null");
this.status = status;
diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListResponse.java
similarity index 61%
rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListEntity.java
rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListResponse.java
index b831541..34a657f 100644
--- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListEntity.java
+++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListResponse.java
@@ -16,7 +16,7 @@ import java.util.List;
* @author liyong.tian
* @since 2017/11/14 下午8:00
*/
-public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
+public class ApiListResponse extends ApiCoreResponse, ApiListResult> {
/**
* Create a new {@code HttpEntity} with the given body, headers, and status code.
@@ -25,7 +25,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @param headers the entity headers
* @param status the status code
*/
- ApiListEntity(ApiListResult body, MultiValueMap headers, HttpStatus status) {
+ ApiListResponse(ApiListResult body, MultiValueMap headers, HttpStatus status) {
super(body, headers, status);
}
@@ -35,7 +35,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiListEntity ok() {
+ public static ApiListResponse ok() {
return status(HttpStatus.OK).ok();
}
@@ -46,20 +46,20 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @return the created {@code ResponseEntity}
* @since 4.1
*/
- public static ApiListEntity ok(List data) {
+ public static ApiListResponse ok(List data) {
return status(HttpStatus.OK).ok(data);
}
- public static ApiListEntityBuilder status(@Nonnull HttpStatus status) {
+ public static ApiListResponseBuilder status(@Nonnull HttpStatus status) {
Assert.notNull(status, "HttpStatus must not be null");
- return new ApiListEntityBuilder(status);
+ return new ApiListResponseBuilder(status);
}
- public static ApiListEntityBuilder header(String headerName, String... headerValues) {
+ public static ApiListResponseBuilder header(String headerName, String... headerValues) {
return status(HttpStatus.OK).header(headerName, headerValues);
}
- public static ApiListEntityBuilder headers(HttpHeaders headers) {
+ public static ApiListResponseBuilder headers(HttpHeaders headers) {
return status(HttpStatus.OK).headers(headers);
}
@@ -71,11 +71,11 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiListEntityBuilder created(URI location) {
+ public static ApiListResponseBuilder created(URI location) {
return status(HttpStatus.CREATED).location(location);
}
- public static ApiListEntityBuilder created(String location) {
+ public static ApiListResponseBuilder created(String location) {
return status(HttpStatus.CREATED).location(Nets.uri(location));
}
@@ -85,7 +85,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiListEntityBuilder accepted() {
+ public static ApiListResponseBuilder accepted() {
return status(HttpStatus.ACCEPTED);
}
@@ -95,7 +95,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiListEntityBuilder badRequest() {
+ public static ApiListResponseBuilder badRequest() {
return status(HttpStatus.BAD_REQUEST);
}
@@ -105,58 +105,58 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiListEntityBuilder notFound() {
+ public static ApiListResponseBuilder notFound() {
return status(HttpStatus.NOT_FOUND);
}
- public static class ApiListEntityBuilder extends AbstractBodySetter {
+ public static class ApiListResponseBuilder extends AbstractBodySetter {
- private ApiListEntityBuilder(HttpStatus status) {
+ private ApiListResponseBuilder(HttpStatus status) {
super(status);
}
- public ApiListEntity ok() {
+ public ApiListResponse ok() {
return wrapper(ApiListResult.ok());
}
- public ApiListEntity ok(List data) {
+ public ApiListResponse ok(List data) {
return wrapper(ApiListResult.ok(data));
}
- public ApiListEntity err(IRespCode code) {
+ public ApiListResponse err(IRespCode code) {
return wrapper(ApiListResult.err(code));
}
- public ApiListEntity err(IRespCode code, String message) {
+ public ApiListResponse err(IRespCode code, String message) {
return wrapper(ApiListResult.err(code, message));
}
- public ApiListEntity err(String message) {
+ public ApiListResponse err(String message) {
return wrapper(ApiListResult.err(message));
}
- public ApiListEntity err(IRespCode code, List data) {
+ public ApiListResponse err(IRespCode code, List data) {
return wrapper(ApiListResult.err(code, data));
}
- public ApiListEntity err(String code, String message) {
+ public ApiListResponse err(String code, String message) {
return wrapper(ApiListResult.err(code, message));
}
- public ApiListEntity build(IRespCode code) {
+ public ApiListResponse build(IRespCode code) {
return wrapper(ApiListResult.build(code));
}
- public ApiListEntity build(IRespCode code, List data) {
+ public ApiListResponse build(IRespCode code, List data) {
return wrapper(ApiListResult.build(code, data));
}
- public ApiListEntity build(String code, String message, List data) {
+ public ApiListResponse build(String code, String message, List data) {
return wrapper(ApiListResult.build(code, message, data));
}
- private ApiListEntity wrapper(ApiListResult result) {
- return new ApiListEntity<>(result, super.headers, super.status);
+ private ApiListResponse wrapper(ApiListResult result) {
+ return new ApiListResponse<>(result, super.headers, super.status);
}
}
}
diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageResponse.java
similarity index 58%
rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageEntity.java
rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageResponse.java
index d2cdcf7..a5f6f0c 100644
--- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageEntity.java
+++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageResponse.java
@@ -1,5 +1,7 @@
package cn.axzo.framework.web.http;
+import cn.axzo.framework.domain.page.PageResp;
+import cn.axzo.framework.domain.web.result.PageData;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import cn.axzo.framework.core.net.Nets;
@@ -19,7 +21,7 @@ import java.util.List;
* @author liyong.tian
* @since 2017/11/14 下午7:52
*/
-public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> {
+public class ApiPageResponse extends ApiCoreResponse, ApiPageResult> {
/**
* Create a new {@code HttpEntity} with the given body, headers, and status code.
@@ -28,7 +30,7 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> {
* @param headers the entity headers
* @param status the status code
*/
- public ApiPageEntity(ApiPageResult body, MultiValueMap headers, HttpStatus status) {
+ public ApiPageResponse(ApiPageResult body, MultiValueMap headers, HttpStatus status) {
super(body, headers, status);
}
@@ -38,7 +40,7 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiPageEntity empty() {
+ public static ApiPageResponse empty() {
return status(HttpStatus.OK).empty();
}
@@ -49,32 +51,32 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> {
* @return the created {@code ResponseEntity}
* @since 4.1
*/
- public static ApiPageEntity ok(Page page) {
+ public static ApiPageResponse ok(Page page) {
return status(HttpStatus.OK).ok(page);
}
- public static ApiPageEntity ok(org.springframework.data.domain.Page page) {
+ public static ApiPageResponse ok(org.springframework.data.domain.Page page) {
return status(HttpStatus.OK).ok(page);
}
-// public static ApiPageEntity ok(PageInfo pageInfo) {
-// return status(HttpStatus.OK).ok(pageInfo);
-// }
+ public static ApiPageResponse ok(PageInfo pageInfo) {
+ return status(HttpStatus.OK).ok(pageInfo);
+ }
- public static ApiPageEntity ok(IPage page) {
+ public static ApiPageResponse ok(PageResp page) {
return status(HttpStatus.OK).ok(page);
}
- public static ApiPageEntityBuilder status(@Nonnull HttpStatus status) {
+ public static ApiPageResponseBuilder status(@Nonnull HttpStatus status) {
Assert.notNull(status, "HttpStatus must not be null");
- return new ApiPageEntityBuilder(status);
+ return new ApiPageResponseBuilder(status);
}
- public static ApiPageEntityBuilder header(String headerName, String... headerValues) {
+ public static ApiPageResponseBuilder header(String headerName, String... headerValues) {
return status(HttpStatus.OK).header(headerName, headerValues);
}
- public static ApiPageEntityBuilder headers(HttpHeaders headers) {
+ public static ApiPageResponseBuilder headers(HttpHeaders headers) {
return status(HttpStatus.OK).headers(headers);
}
@@ -86,11 +88,11 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> {
* @return the created builder
* @since 4.1
*/
- public static ApiPageEntityBuilder created(URI location) {
+ public static ApiPageResponseBuilder created(URI location) {
return status(HttpStatus.CREATED).location(location);
}
- public static ApiPageEntityBuilder created(String location) {
+ public static ApiPageResponseBuilder created(String location) {
return status(HttpStatus.CREATED).location(Nets.uri(location));
}
@@ -100,7 +102,7 @@ public class ApiPageEntity extends ApiCoreEntity