refactor(time): 优化时间格式反序列化并统一时间格式- 新增 LocalDateTimeDeserializer 类,用于自定义 LocalDateTime 类型的反序列化逻辑

- 在 MusicDTO、PlaylistDTO、SingerDTO 和 UserDTO 中使用 LocalDateTimeDeserializer
-统一时间格式为 "yyyy-MM-dd HH:mm:ss"
- 移除了 SaTokenConfig 和 StpInterfaceImpl 中的调试信息打印
This commit is contained in:
ikmkj
2025-08-10 14:42:23 +08:00
parent bf27209022
commit e30011cee2
7 changed files with 60 additions and 9 deletions

View File

@@ -0,0 +1,38 @@
package com.test.musichouduan.config;
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.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
private static final DateTimeFormatter FORMATTER_DATETIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter FORMATTER_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
String str = p.getText().trim();
if (str.isEmpty()) {
return null;
}
try {
// 尝试解析 "yyyy-MM-dd HH:mm:ss" 格式
return LocalDateTime.parse(str, FORMATTER_DATETIME);
} catch (DateTimeParseException e) {
// 如果失败,尝试解析 "yyyy-MM-dd" 格式
try {
LocalDate date = LocalDate.parse(str, FORMATTER_DATE);
return date.atStartOfDay();
} catch (DateTimeParseException e2) {
throw new IOException(e2);
}
}
}
}

View File

@@ -19,16 +19,10 @@ public class SaTokenConfig implements WebMvcConfigurer {
// 注册Sa-Token拦截器打开注解式鉴权功能 // 注册Sa-Token拦截器打开注解式鉴权功能
registry.addInterceptor(new SaInterceptor(handle -> { registry.addInterceptor(new SaInterceptor(handle -> {
// 打印调试信息 // 打印调试信息
System.out.println("\n=== Sa-Token 拦截器检查登录状态 ===\n");
// 获取当前登录用户ID // 获取当前登录用户ID
Object loginId = StpUtil.getLoginIdDefaultNull(); Object loginId = StpUtil.getLoginIdDefaultNull();
System.out.println("当前登录用户ID: " + loginId);
// 获取当前用户角色 // 获取当前用户角色
List<String> roleList = StpUtil.getRoleList(); List<String> roleList = StpUtil.getRoleList();
System.out.println("当前用户角色: " + roleList);
// 检查登录状态 // 检查登录状态
StpUtil.checkLogin(); StpUtil.checkLogin();
})) }))

View File

@@ -45,9 +45,6 @@ public class StpInterfaceImpl implements StpInterface {
} else { } else {
roles.add("user"); roles.add("user");
} }
// 打印调试信息
System.out.println("用户ID: " + userId + ", 角色: " + roles);
}); });
return roles; return roles;

View File

@@ -1,6 +1,8 @@
package com.test.musichouduan.dto; package com.test.musichouduan.dto;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.test.musichouduan.config.LocalDateTimeDeserializer;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -101,6 +103,7 @@ public class MusicDTO {
* 发行日期 * 发行日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime releaseDate; private LocalDateTime releaseDate;
/** /**
@@ -117,12 +120,14 @@ public class MusicDTO {
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
* 收藏时间 * 收藏时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime collectTime; private LocalDateTime collectTime;
/** /**

View File

@@ -1,5 +1,8 @@
package com.test.musichouduan.dto; package com.test.musichouduan.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.test.musichouduan.config.LocalDateTimeDeserializer;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import lombok.Data; import lombok.Data;
@@ -92,6 +95,8 @@ public class PlaylistDTO {
/** /**
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
@@ -102,5 +107,7 @@ public class PlaylistDTO {
/** /**
* 收藏时间 * 收藏时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime collectTime; private LocalDateTime collectTime;
} }

View File

@@ -1,5 +1,8 @@
package com.test.musichouduan.dto; package com.test.musichouduan.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.test.musichouduan.config.LocalDateTimeDeserializer;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import lombok.Data; import lombok.Data;
@@ -70,6 +73,8 @@ public class SingerDTO {
/** /**
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**

View File

@@ -1,5 +1,8 @@
package com.test.musichouduan.dto; package com.test.musichouduan.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.test.musichouduan.config.LocalDateTimeDeserializer;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -63,6 +66,8 @@ public class UserDTO {
/** /**
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**