From 8cd212cb93f0ca712331f965740356e0b838e313 Mon Sep 17 00:00:00 2001
From: gaoqr <13665037151@163.com>
Date: Mon, 13 Oct 2025 16:47:15 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=96=B0=E5=A2=9E=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E6=9C=89=E6=95=88=E6=97=B6=E9=97=B4=E5=8F=8D=E5=BA=8F?=
=?UTF-8?q?=E5=88=97=E5=8C=96=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../core/databind/LocalDateDeserializer.java | 25 +++++++++++++++++++
.../admin/organ/vo/organ/OrganSaveReqVO.java | 3 +++
2 files changed, 28 insertions(+)
create mode 100644 cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/jackson/core/databind/LocalDateDeserializer.java
diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/jackson/core/databind/LocalDateDeserializer.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/jackson/core/databind/LocalDateDeserializer.java
new file mode 100644
index 000000000..1f0299b4f
--- /dev/null
+++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/jackson/core/databind/LocalDateDeserializer.java
@@ -0,0 +1,25 @@
+package com.cf.imes.framework.jackson.core.databind;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+
+import java.io.IOException;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.ZoneId;
+
+/**
+ * LocalDate反序列化规则
+ *
+ * 会将毫秒级时间戳反序列化为LocalDate
+ */
+public class LocalDateDeserializer extends JsonDeserializer {
+
+ public static final LocalDateDeserializer INSTANCE = new LocalDateDeserializer();
+
+ @Override
+ public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ return LocalDate.ofInstant(Instant.ofEpochMilli(p.getValueAsLong()), ZoneId.systemDefault());
+ }
+}
diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganSaveReqVO.java
index b21ddc814..122492335 100644
--- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganSaveReqVO.java
+++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganSaveReqVO.java
@@ -2,7 +2,9 @@ package com.cf.imes.module.system.controller.admin.organ.vo.organ;
import com.cf.imes.framework.common.validation.Mobile;
import com.cf.imes.framework.common.validation.NumberValid;
+import com.cf.imes.framework.jackson.core.databind.LocalDateDeserializer;
import com.cf.imes.module.system.validation.common.CommonStatus;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import lombok.Data;
@@ -49,6 +51,7 @@ public class OrganSaveReqVO {
@Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "过期时间不能为空")
+ @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate expireTime;
@Schema(description = "账号数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")