refactor(time): 优化时间格式反序列化并统一时间格式- 新增 LocalDateTimeDeserializer 类,用于自定义 LocalDateTime 类型的反序列化逻辑
- 在 MusicDTO、PlaylistDTO、SingerDTO 和 UserDTO 中使用 LocalDateTimeDeserializer -统一时间格式为 "yyyy-MM-dd HH:mm:ss" - 移除了 SaTokenConfig 和 StpInterfaceImpl 中的调试信息打印
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user