From 395c75d3fb5adcf14c9a7b42500f8e36b195ef40 Mon Sep 17 00:00:00 2001 From: ikmkj Date: Thu, 9 Apr 2026 20:17:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=9F=B3=E4=B9=90?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=97=B6=E9=95=BF=E4=B8=A2=E5=A4=B1=E5=8F=8A?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/musichouduan/config/JacksonConfig.java | 1 + .../com/test/musichouduan/dto/SingerDTO.java | 1 + .../service/impl/MusicServiceImpl.java | 5 ++++- music-qianduan/src/views/admin/Music.vue | 3 ++- music-qianduan/src/views/user/CollectMusic.vue | 16 +++++++++++++++- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/music-houduan/src/main/java/com/test/musichouduan/config/JacksonConfig.java b/music-houduan/src/main/java/com/test/musichouduan/config/JacksonConfig.java index a115fbd..00a78e2 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/config/JacksonConfig.java +++ b/music-houduan/src/main/java/com/test/musichouduan/config/JacksonConfig.java @@ -12,6 +12,7 @@ import java.time.format.DateTimeFormatter; @JsonComponent public class JacksonConfig { + // 全局默认使用短格式(仅日期),避免影响管理后台等只需日期的场景 private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); public static class LocalDateTimeSerializer extends JsonSerializer { diff --git a/music-houduan/src/main/java/com/test/musichouduan/dto/SingerDTO.java b/music-houduan/src/main/java/com/test/musichouduan/dto/SingerDTO.java index 9187fba..92f1af8 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/dto/SingerDTO.java +++ b/music-houduan/src/main/java/com/test/musichouduan/dto/SingerDTO.java @@ -74,6 +74,7 @@ public class SingerDTO { * 收藏时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) private LocalDateTime collectTime; /** diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java index b126784..1918732 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java @@ -410,7 +410,10 @@ public class MusicServiceImpl implements MusicService { // 更新音乐信息 music.setName(musicDTO.getName()); music.setAlbum(musicDTO.getAlbum()); - music.setDuration(musicDTO.getDuration()); + // 仅当 DTO 中有值时才覆盖时长,避免编辑时被清空 + if (musicDTO.getDuration() != null) { + music.setDuration(musicDTO.getDuration()); + } // 更新音乐类型 if (musicDTO.getTypeIds() != null) { diff --git a/music-qianduan/src/views/admin/Music.vue b/music-qianduan/src/views/admin/Music.vue index a99c911..0654a1c 100644 --- a/music-qianduan/src/views/admin/Music.vue +++ b/music-qianduan/src/views/admin/Music.vue @@ -270,7 +270,8 @@ const submitForm = async () => { singer: form.value.singer, album: form.value.album, typeIds: form.value.types, - lyric: form.value.lyric + lyric: form.value.lyric, + duration: form.value.duration }, form.value.file, form.value.cover diff --git a/music-qianduan/src/views/user/CollectMusic.vue b/music-qianduan/src/views/user/CollectMusic.vue index d5cd4d2..549856f 100644 --- a/music-qianduan/src/views/user/CollectMusic.vue +++ b/music-qianduan/src/views/user/CollectMusic.vue @@ -13,6 +13,20 @@ const collectMusicList = ref([]) // 加载状态 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 () => { loading.value = true @@ -31,7 +45,7 @@ const fetchCollectMusic = async () => { duration: item.duration || 0, cover: processImageUrl(item.cover), url: item.url, - collectTime: item.collectTime ? new Date(item.collectTime).toLocaleDateString() : '未知' + collectTime: item.collectTime ? formatDate(item.collectTime) : '未知' })) } else { ElMessage.error(res.message || '获取收藏的音乐列表失败')