Browse Source

refactor(cms): 将LocalDateTime替换为Date类型并调整过期逻辑

- 将CmsWebsite实体中的LocalDateTime字段改为Date类型- 更新服务实现中时间比较逻辑以兼容Date类型
- 添加日期转换处理以确保过期时间计算正确
- 移除冗余的LocalDateTime导入并优化代码结构
- 调整测试相关代码以适应新的时间类型处理方式
dev
科技小王子 5 days ago
parent
commit
9229aa4885
  1. 9
      src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java
  2. 41
      src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java
  3. 42
      src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImplHelper.java
  4. 4
      src/main/java/com/gxwebsoft/project/service/impl/ProjectServiceImpl.java
  5. 60
      src/test/java/com/gxwebsoft/JacksonTest.java

9
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)

41
src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java

@ -84,11 +84,20 @@ public class CmsWebsiteServiceImpl extends ServiceImpl<CmsWebsiteMapper, CmsWebs
page.setDefaultOrder("create_time desc");
List<CmsWebsite> 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<CmsWebsiteMapper, CmsWebs
page.setDefaultOrder("create_time desc");
List<CmsWebsite> 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<CmsWebsiteMapper, CmsWebs
website.setWebsiteType("云·企业官网");
website.setAdminUrl("site.websoft.top");
website.setVersion(10);
website.setExpirationTime(LocalDateTime.now().plusMonths(1));
website.setExpirationTime(java.util.Date.from(LocalDateTime.now().plusMonths(1)
.atZone(java.time.ZoneId.systemDefault()).toInstant()));
website.setUserId(loginUser.getUserId());
website.setDeveloper(loginUser.getNickname());
website.setTenantId(loginUser.getTenantId());

42
src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImplHelper.java

@ -8,6 +8,7 @@ import com.gxwebsoft.shop.vo.ShopVo;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@ -24,25 +25,30 @@ public class CmsWebsiteServiceImplHelper {
public static void processExpirationTime(CmsWebsite website) {
if (website.getExpirationTime() != null) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime expirationTime = website.getExpirationTime();
// 计算是否即将过期(30天内过期)
LocalDateTime thirtyDaysLater = now.plusDays(30);
website.setSoon(expirationTime.isBefore(thirtyDaysLater) ? 1 : 0);
// 计算是否已过期
website.setExpired(expirationTime.isBefore(now) ? -1 : 1);
// 计算剩余天数
long daysBetween = ChronoUnit.DAYS.between(now, expirationTime);
website.setExpiredDays(daysBetween);
} else {
// 没有过期时间的默认值
website.setSoon(0);
website.setExpired(1);
website.setExpiredDays(0L);
Date expirationTimeDate = website.getExpirationTime();
// 将Date转换为LocalDateTime进行计算
LocalDateTime expirationTime = expirationTimeDate.toInstant()
.atZone(java.time.ZoneId.systemDefault())
.toLocalDateTime();
// 计算是否即将过期(30天内过期)
LocalDateTime thirtyDaysLater = now.plusDays(30);
website.setSoon(expirationTime.isBefore(thirtyDaysLater) ? 1 : 0);
// 计算是否已过期
website.setExpired(expirationTime.isBefore(now) ? -1 : 1);
// 计算剩余天数
long daysBetween = ChronoUnit.DAYS.between(now, expirationTime);
website.setExpiredDays(daysBetween);
} else {
// 没有过期时间的默认值
website.setSoon(0);
website.setExpired(1);
website.setExpiredDays(0L);
}
}
}
/**
* 将实体对象转换为VO对象

4
src/main/java/com/gxwebsoft/project/service/impl/ProjectServiceImpl.java

@ -227,7 +227,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> 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);
}

60
src/test/java/com/gxwebsoft/JacksonTest.java

@ -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;
}
}
Loading…
Cancel
Save