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

- 将CmsWebsite实体中的LocalDateTime字段改为Date类型- 更新服务实现中时间比较逻辑以兼容Date类型
- 添加日期转换处理以确保过期时间计算正确
- 移除冗余的LocalDateTime导入并优化代码结构
- 调整测试相关代码以适应新的时间类型处理方式
This commit is contained in:
2025-09-24 16:55:23 +08:00
parent 1da96e7ff3
commit 9229aa4885
5 changed files with 58 additions and 92 deletions

View File

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

View File

@@ -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());

View File

@@ -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();
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);
// 计算是否即将过期30天内过期
LocalDateTime thirtyDaysLater = now.plusDays(30);
website.setSoon(expirationTime.isBefore(thirtyDaysLater) ? 1 : 0);
// 计算是否已过期
website.setExpired(expirationTime.isBefore(now) ? -1 : 1);
// 计算是否已过期
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);
// 计算剩余天数
long daysBetween = ChronoUnit.DAYS.between(now, expirationTime);
website.setExpiredDays(daysBetween);
} else {
// 没有过期时间的默认值
website.setSoon(0);
website.setExpired(1);
website.setExpiredDays(0L);
}
}
}
/**
* 将实体对象转换为VO对象

View File

@@ -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);
}