fix: 修复音乐编辑时长丢失及日期格式问题
This commit is contained in:
@@ -12,6 +12,7 @@ import java.time.format.DateTimeFormatter;
|
|||||||
@JsonComponent
|
@JsonComponent
|
||||||
public class JacksonConfig {
|
public class JacksonConfig {
|
||||||
|
|
||||||
|
// 全局默认使用短格式(仅日期),避免影响管理后台等只需日期的场景
|
||||||
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
|
||||||
public static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
public static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ public class SingerDTO {
|
|||||||
* 收藏时间
|
* 收藏时间
|
||||||
*/
|
*/
|
||||||
@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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -410,7 +410,10 @@ public class MusicServiceImpl implements MusicService {
|
|||||||
// 更新音乐信息
|
// 更新音乐信息
|
||||||
music.setName(musicDTO.getName());
|
music.setName(musicDTO.getName());
|
||||||
music.setAlbum(musicDTO.getAlbum());
|
music.setAlbum(musicDTO.getAlbum());
|
||||||
music.setDuration(musicDTO.getDuration());
|
// 仅当 DTO 中有值时才覆盖时长,避免编辑时被清空
|
||||||
|
if (musicDTO.getDuration() != null) {
|
||||||
|
music.setDuration(musicDTO.getDuration());
|
||||||
|
}
|
||||||
|
|
||||||
// 更新音乐类型
|
// 更新音乐类型
|
||||||
if (musicDTO.getTypeIds() != null) {
|
if (musicDTO.getTypeIds() != null) {
|
||||||
|
|||||||
@@ -270,7 +270,8 @@ const submitForm = async () => {
|
|||||||
singer: form.value.singer,
|
singer: form.value.singer,
|
||||||
album: form.value.album,
|
album: form.value.album,
|
||||||
typeIds: form.value.types,
|
typeIds: form.value.types,
|
||||||
lyric: form.value.lyric
|
lyric: form.value.lyric,
|
||||||
|
duration: form.value.duration
|
||||||
},
|
},
|
||||||
form.value.file,
|
form.value.file,
|
||||||
form.value.cover
|
form.value.cover
|
||||||
|
|||||||
@@ -13,6 +13,20 @@ const collectMusicList = ref([])
|
|||||||
// 加载状态
|
// 加载状态
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
|
|
||||||
|
// 格式化日期时间,兼容后端返回的多种格式(ISO、yyyy-MM-dd HH:mm:ss、yyyy-MM-dd)
|
||||||
|
const formatDate = (dateStr) => {
|
||||||
|
if (!dateStr) return ''
|
||||||
|
const date = new Date(dateStr)
|
||||||
|
// 检查是否为有效日期
|
||||||
|
if (isNaN(date.getTime())) return dateStr
|
||||||
|
return date.getFullYear() + '-' +
|
||||||
|
String(date.getMonth() + 1).padStart(2, '0') + '-' +
|
||||||
|
String(date.getDate()).padStart(2, '0') + ' ' +
|
||||||
|
String(date.getHours()).padStart(2, '0') + ':' +
|
||||||
|
String(date.getMinutes()).padStart(2, '0') + ':' +
|
||||||
|
String(date.getSeconds()).padStart(2, '0')
|
||||||
|
}
|
||||||
|
|
||||||
// 获取收藏的音乐列表
|
// 获取收藏的音乐列表
|
||||||
const fetchCollectMusic = async () => {
|
const fetchCollectMusic = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
@@ -31,7 +45,7 @@ const fetchCollectMusic = async () => {
|
|||||||
duration: item.duration || 0,
|
duration: item.duration || 0,
|
||||||
cover: processImageUrl(item.cover),
|
cover: processImageUrl(item.cover),
|
||||||
url: item.url,
|
url: item.url,
|
||||||
collectTime: item.collectTime ? new Date(item.collectTime).toLocaleDateString() : '未知'
|
collectTime: item.collectTime ? formatDate(item.collectTime) : '未知'
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(res.message || '获取收藏的音乐列表失败')
|
ElMessage.error(res.message || '获取收藏的音乐列表失败')
|
||||||
|
|||||||
Reference in New Issue
Block a user