From 0c10c7def050e2e1c1abc2537a75392363047ef0 Mon Sep 17 00:00:00 2001 From: ikmkj <1@qq,com> Date: Sun, 10 Aug 2025 14:16:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(playlist):=20=E6=B7=BB=E5=8A=A0=E6=AD=8C?= =?UTF-8?q?=E5=8D=95=E6=94=B6=E8=97=8F=E6=97=B6=E9=97=B4=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 PlaylistDTO 中添加 collectTime 字段,用于显示收藏时间 - 修改收藏歌单逻辑,记录收藏时间 - 更新取消收藏歌单逻辑,使用 deleteByUserAndPlaylist 方法 - 在获取用户收藏的歌单列表时,添加收藏时间信息 - 重命名 UserCollectPlaylist --- .../com/test/musichouduan/dto/PlaylistDTO.java | 5 +++++ .../musichouduan/entity/UserCollectPlaylist.java | 5 ++--- .../UserCollectPlaylistRepository.java | 2 ++ .../service/impl/PlaylistServiceImpl.java | 16 +++++++++++++--- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/music-houduan/src/main/java/com/test/musichouduan/dto/PlaylistDTO.java b/music-houduan/src/main/java/com/test/musichouduan/dto/PlaylistDTO.java index 830845d..28f58f7 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/dto/PlaylistDTO.java +++ b/music-houduan/src/main/java/com/test/musichouduan/dto/PlaylistDTO.java @@ -98,4 +98,9 @@ public class PlaylistDTO { * 热度分 */ private double hotScore; + + /** + * 收藏时间 + */ + private LocalDateTime collectTime; } diff --git a/music-houduan/src/main/java/com/test/musichouduan/entity/UserCollectPlaylist.java b/music-houduan/src/main/java/com/test/musichouduan/entity/UserCollectPlaylist.java index 5d7b8e6..2af92b8 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/entity/UserCollectPlaylist.java +++ b/music-houduan/src/main/java/com/test/musichouduan/entity/UserCollectPlaylist.java @@ -33,9 +33,8 @@ public class UserCollectPlaylist { private Playlist playlist; /** - * 创建时间 + * 收藏时间 */ - @CreationTimestamp @Column(nullable = false, updatable = false) - private LocalDateTime createTime; + private LocalDateTime collectTime; } diff --git a/music-houduan/src/main/java/com/test/musichouduan/repository/UserCollectPlaylistRepository.java b/music-houduan/src/main/java/com/test/musichouduan/repository/UserCollectPlaylistRepository.java index 8185c27..5b660f2 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/repository/UserCollectPlaylistRepository.java +++ b/music-houduan/src/main/java/com/test/musichouduan/repository/UserCollectPlaylistRepository.java @@ -99,4 +99,6 @@ public interface UserCollectPlaylistRepository extends JpaRepository findCollectedPlaylist(Long userId, Pageable pageable); + + Optional findByUserIdAndPlaylistId(Long userId, Long playlistId); } diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java index 76fef09..37f457c 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java @@ -372,7 +372,11 @@ public class PlaylistServiceImpl implements PlaylistService { } // 收藏歌单 - userCollectPlaylistRepository.collectPlaylist(user.getId(), playlist.getId()); + com.test.musichouduan.entity.UserCollectPlaylist userCollectPlaylist = new com.test.musichouduan.entity.UserCollectPlaylist(); + userCollectPlaylist.setUser(user); + userCollectPlaylist.setPlaylist(playlist); + userCollectPlaylist.setCollectTime(java.time.LocalDateTime.now()); + userCollectPlaylistRepository.save(userCollectPlaylist); // 更新收藏数 playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) + 1); @@ -399,7 +403,7 @@ public class PlaylistServiceImpl implements PlaylistService { } // 取消收藏歌单 - userCollectPlaylistRepository.uncollectPlaylist(user.getId(), playlist.getId()); + userCollectPlaylistRepository.deleteByUserAndPlaylist(user, playlist); // 更新收藏数 playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) - 1); @@ -430,7 +434,13 @@ public class PlaylistServiceImpl implements PlaylistService { // 转换为DTO List playlistDTOs = playlistPage.getContent().stream() - .map(this::convertToDTO) + .map(playlist -> { + PlaylistDTO dto = convertToDTO(playlist); + // 从收藏记录中获取收藏时间 + userCollectPlaylistRepository.findByUserIdAndPlaylistId(userId, playlist.getId()) + .ifPresent(ucp -> dto.setCollectTime(ucp.getCollectTime())); + return dto; + }) .collect(Collectors.toList()); return new PageResult<>(