Explorar o código

新增本地日期转换器

woody hai 1 ano
pai
achega
c18a76966a

+ 25 - 0
framework-base/src/main/java/com/chelvc/framework/base/converter/StringLocalDateConverter.java

@@ -0,0 +1,25 @@
+package com.chelvc.framework.base.converter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.chelvc.framework.common.util.DateUtils;
+import com.chelvc.framework.common.util.ObjectUtils;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.stereotype.Component;
+
+/**
+ * 字符串本地日期转换器
+ *
+ * @author Woody
+ * @date 2024/1/30
+ */
+@Component
+public class StringLocalDateConverter implements Converter<String, LocalDate> {
+    @Override
+    public LocalDate convert(String text) {
+        Date date = DateUtils.parse(text);
+        return ObjectUtils.ifNull(DateUtils.convert(date), LocalDateTime::toLocalDate);
+    }
+}

+ 21 - 0
framework-base/src/main/java/com/chelvc/framework/base/converter/StringLocalDateTimeConverter.java

@@ -0,0 +1,21 @@
+package com.chelvc.framework.base.converter;
+
+import java.time.LocalDateTime;
+
+import com.chelvc.framework.common.util.DateUtils;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.stereotype.Component;
+
+/**
+ * 字符串本地日期时间转换器
+ *
+ * @author Woody
+ * @date 2024/1/30
+ */
+@Component
+public class StringLocalDateTimeConverter implements Converter<String, LocalDateTime> {
+    @Override
+    public LocalDateTime convert(String text) {
+        return DateUtils.convert(DateUtils.parse(text));
+    }
+}

+ 27 - 0
framework-common/src/main/java/com/chelvc/framework/common/util/JacksonUtils.java

@@ -191,6 +191,33 @@ public final class JacksonUtils {
             }
         });
 
+        // 设置本地日期反序列化处理器
+        module.addDeserializer(LocalDate.class, new JsonDeserializer<LocalDate>() {
+            @Override
+            public Class<?> handledType() {
+                return LocalDate.class;
+            }
+
+            @Override
+            public LocalDate deserialize(JsonParser parser, DeserializationContext context) throws IOException {
+                Date date = DateUtils.parse(parser.getValueAsString());
+                return ObjectUtils.ifNull(DateUtils.convert(date), LocalDateTime::toLocalDate);
+            }
+        });
+
+        // 设置本地日期时间反序列化处理器
+        module.addDeserializer(LocalDateTime.class, new JsonDeserializer<LocalDateTime>() {
+            @Override
+            public Class<?> handledType() {
+                return LocalDateTime.class;
+            }
+
+            @Override
+            public LocalDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException {
+                return DateUtils.convert(DateUtils.parse(parser.getValueAsString()));
+            }
+        });
+
         // 设置时间周期反序列化处理器
         module.addDeserializer(Period.class, new JsonDeserializer<Period>() {
             @Override