diff --git a/sqlrest-common/src/main/java/org/dromara/sqlrest/common/enums/DataTypeFormatEnum.java b/sqlrest-common/src/main/java/org/dromara/sqlrest/common/enums/DataTypeFormatEnum.java index 6cacb7b232998ebcb9cd77052c8c2724d049b21a..a0093bb29570733410e1a0da91521288d3e8abbc 100644 --- a/sqlrest-common/src/main/java/org/dromara/sqlrest/common/enums/DataTypeFormatEnum.java +++ b/sqlrest-common/src/main/java/org/dromara/sqlrest/common/enums/DataTypeFormatEnum.java @@ -21,6 +21,9 @@ public enum DataTypeFormatEnum { TIMESTAMP(java.sql.Timestamp.class.getName(), DatePattern.NORM_DATETIME_PATTERN), BIG_DECIMAL(java.math.BigDecimal.class.getName(), 6), + + // 系统返回格式配置:true=返回完整ResultEntity,false=只返回data属性 + USE_SYSTEM_RESPONSE_FORMAT("系统返回格式配置:true=返回完整ResultEntity,false=只返回data属性", "true"), ; private String className; diff --git a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/DateValueSerializer.java b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/DateValueSerializer.java index 16da45e4286ec4a736897b00a3518e0cec23de1d..a48922eec28d1b5440e7bac12e4917f177052796 100644 --- a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/DateValueSerializer.java +++ b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/DateValueSerializer.java @@ -16,7 +16,9 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; import java.sql.Date; import java.text.SimpleDateFormat; +import java.util.TimeZone; import org.apache.commons.lang3.StringUtils; +import org.dromara.sqlrest.core.util.JacksonUtils; public class DateValueSerializer extends StdSerializer { @@ -34,6 +36,8 @@ public class DateValueSerializer extends StdSerializer { throws IOException { if (value != null) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); + // 从配置文件读取时区设置,如果未配置则使用默认值Asia/Shanghai + sdf.setTimeZone(TimeZone.getTimeZone(JacksonUtils.getTimezone())); jsonGenerator.writeString(sdf.format(value)); } } diff --git a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateTimeValueSerializer.java b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateTimeValueSerializer.java index 04871517d715e0e2f1cac996d6c57c39fe507ba3..ba96edeead3a17c32ba73a39068689ff33995881 100644 --- a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateTimeValueSerializer.java +++ b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateTimeValueSerializer.java @@ -14,9 +14,11 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import org.apache.commons.lang3.StringUtils; +import org.dromara.sqlrest.core.util.JacksonUtils; public class LocalDateTimeValueSerializer extends StdSerializer { @@ -33,8 +35,11 @@ public class LocalDateTimeValueSerializer extends StdSerializer { public void serialize(LocalDateTime value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (value != null) { - SimpleDateFormat sdf = new SimpleDateFormat(pattern); - jsonGenerator.writeString(sdf.format(value)); + // 对于LocalDateTime,使用DateTimeFormatter而不是SimpleDateFormat + // 从配置文件读取时区设置,如果未配置则使用默认值Asia/Shanghai + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern) + .withZone(ZoneId.of(JacksonUtils.getTimezone())); + jsonGenerator.writeString(value.format(DateTimeFormatter.ofPattern(pattern))); } } } diff --git a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateValueSerializer.java b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateValueSerializer.java index d00365a881f2d1e517bcf629d8db041e649e3427..99a6e611d72a771a53fad84f1e714d28a7931249 100644 --- a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateValueSerializer.java +++ b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/LocalDateValueSerializer.java @@ -14,8 +14,8 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; -import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import org.apache.commons.lang3.StringUtils; public class LocalDateValueSerializer extends StdSerializer { @@ -33,8 +33,9 @@ public class LocalDateValueSerializer extends StdSerializer { public void serialize(LocalDate value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (value != null) { - SimpleDateFormat sdf = new SimpleDateFormat(pattern); - jsonGenerator.writeString(sdf.format(value)); + // 对于LocalDate,使用DateTimeFormatter而不是SimpleDateFormat + // 从配置文件读取时区设置,如果未配置则使用默认值Asia/Shanghai + jsonGenerator.writeString(value.format(DateTimeFormatter.ofPattern(pattern))); } } } diff --git a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/TimeValueSerializer.java b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/TimeValueSerializer.java index 77a4cf23de31154aa36f378e92213cbfefa06920..eaba1c251aa17e58c8923df3fc8d15ba5225403e 100644 --- a/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/TimeValueSerializer.java +++ b/sqlrest-core/src/main/java/org/dromara/sqlrest/core/serdes/datetime/TimeValueSerializer.java @@ -16,7 +16,9 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer; import java.io.IOException; import java.sql.Time; import java.text.SimpleDateFormat; +import java.util.TimeZone; import org.apache.commons.lang3.StringUtils; +import org.dromara.sqlrest.core.util.JacksonUtils; public class TimeValueSerializer extends StdSerializer