From 9229aa48857cc6a2b72ab3b48c3cf2a9f78686fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Wed, 24 Sep 2025 16:55:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor(cms):=20=E5=B0=86LocalDateTime?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E4=B8=BADate=E7=B1=BB=E5=9E=8B=E5=B9=B6?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=BF=87=E6=9C=9F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将CmsWebsite实体中的LocalDateTime字段改为Date类型- 更新服务实现中时间比较逻辑以兼容Date类型 - 添加日期转换处理以确保过期时间计算正确 - 移除冗余的LocalDateTime导入并优化代码结构 - 调整测试相关代码以适应新的时间类型处理方式 --- .../com/gxwebsoft/cms/entity/CmsWebsite.java | 9 ++- .../service/impl/CmsWebsiteServiceImpl.java | 41 +++++++++---- .../impl/CmsWebsiteServiceImplHelper.java | 42 +++++++------ .../service/impl/ProjectServiceImpl.java | 4 +- src/test/java/com/gxwebsoft/JacksonTest.java | 60 ------------------- 5 files changed, 61 insertions(+), 95 deletions(-) delete mode 100644 src/test/java/com/gxwebsoft/JacksonTest.java diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java index 73c3842..2438aaa 100644 --- a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java @@ -6,17 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import java.math.BigDecimal; -import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableLogic; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import com.gxwebsoft.common.system.entity.User; import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -87,7 +86,7 @@ public class CmsWebsite implements Serializable { @Schema(description = "服务到期时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime expirationTime; + private Date expirationTime; @Schema(description = "是否到期") @TableField(exist = false) @@ -250,11 +249,11 @@ public class CmsWebsite implements Serializable { @Schema(description = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; + private Date createTime; @Schema(description = "修改时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime updateTime; + private Date updateTime; @Schema(description = "预设字段") @TableField(exist = false) diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java index fbb60db..a38c35e 100644 --- a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java @@ -84,11 +84,20 @@ public class CmsWebsiteServiceImpl extends ServiceImpl list = baseMapper.selectPageRel(page, param); list.forEach(d -> { - LocalDateTime now = LocalDateTime.now(); - // 即将过期(一周内过期的) - d.setSoon(d.getExpirationTime().minusDays(30).compareTo(now)); - // 是否过期 -1已过期 大于0 未过期 - d.setStatus(d.getExpirationTime().compareTo(now)); + LocalDateTime now = LocalDateTime.now(); + if (d.getExpirationTime() != null) { + // 将Date转换为LocalDateTime进行计算 + LocalDateTime expirationTime = d.getExpirationTime().toInstant() + .atZone(java.time.ZoneId.systemDefault()) + .toLocalDateTime(); + // 即将过期(30天内过期的) + d.setSoon(expirationTime.minusDays(30).compareTo(now)); + // 是否过期 -1已过期 大于0 未过期 + d.setStatus(expirationTime.compareTo(now)); + } else { + d.setSoon(0); + d.setStatus(1); + } }); return new PageResult<>(list, page.getTotal()); } @@ -115,11 +124,20 @@ public class CmsWebsiteServiceImpl extends ServiceImpl list = baseMapper.selectPageRelAll(page, param); list.forEach(d -> { - LocalDateTime now = LocalDateTime.now(); - // 即将过期(一周内过期的) - d.setSoon(d.getExpirationTime().minusDays(30).compareTo(now)); - // 是否过期 -1已过期 大于0 未过期 - d.setStatus(d.getExpirationTime().compareTo(now)); + LocalDateTime now = LocalDateTime.now(); + if (d.getExpirationTime() != null) { + // 将Date转换为LocalDateTime进行计算 + LocalDateTime expirationTime = d.getExpirationTime().toInstant() + .atZone(java.time.ZoneId.systemDefault()) + .toLocalDateTime(); + // 即将过期(30天内过期的) + d.setSoon(expirationTime.minusDays(30).compareTo(now)); + // 是否过期 -1已过期 大于0 未过期 + d.setStatus(expirationTime.compareTo(now)); + } else { + d.setSoon(0); + d.setStatus(1); + } }); return new PageResult<>(list, page.getTotal()); } @@ -137,7 +155,8 @@ public class CmsWebsiteServiceImpl extends ServiceImpl impl if (!project.getWebsiteId().equals(0)) { final CmsWebsite website = new CmsWebsite(); website.setVersion(20); - website.setExpirationTime(expirationTime); + // 将LocalDateTime转换为Date + Date expirationDate = Date.from(expirationTime.atZone(ZoneId.systemDefault()).toInstant()); + website.setExpirationTime(expirationDate); website.setWebsiteId(project.getWebsiteId()); cmsWebsiteService.updateByIdAll(website); } diff --git a/src/test/java/com/gxwebsoft/JacksonTest.java b/src/test/java/com/gxwebsoft/JacksonTest.java deleted file mode 100644 index bcbe6d2..0000000 --- a/src/test/java/com/gxwebsoft/JacksonTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.gxwebsoft; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.gxwebsoft.cms.entity.CmsWebsite; -import lombok.Data; -import org.junit.jupiter.api.Test; - -import java.time.LocalDateTime; - -/** - * Jackson序列化测试 - */ -public class JacksonTest { - - @Test - public void testLocalDateTimeSerialization() throws Exception { - // 创建ObjectMapper并注册JavaTimeModule - ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new JavaTimeModule()); - - // 创建测试对象 - TestObject testObj = new TestObject(); - testObj.setName("测试"); - testObj.setExpirationTime(LocalDateTime.now()); - - // 序列化 - String json = mapper.writeValueAsString(testObj); - System.out.println("序列化结果: " + json); - - // 反序列化 - TestObject result = mapper.readValue(json, TestObject.class); - System.out.println("反序列化结果: " + result); - } - - @Test - public void testCmsWebsiteSerialization() throws Exception { - // 创建ObjectMapper并注册JavaTimeModule - ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new JavaTimeModule()); - - // 创建CmsWebsite对象 - CmsWebsite website = new CmsWebsite(); - website.setWebsiteName("测试网站"); - website.setExpirationTime(LocalDateTime.now()); - - // 序列化 - String json = mapper.writeValueAsString(website); - System.out.println("CmsWebsite序列化结果: " + json); - } - - @Data - public static class TestObject { - private String name; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime expirationTime; - } -}