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 87b2ed1..820683f 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 @@ -368,22 +368,30 @@ public class PlaylistServiceImpl implements PlaylistService { // 检查是否已收藏 if (userCollectPlaylistRepository.existsByUserAndPlaylist(user, playlist)) { - throw new BusinessException("已收藏该歌单"); + // 已收藏则取消收藏 + userCollectPlaylistRepository.deleteByUserAndPlaylist(user, playlist); + + // 更新收藏数 + playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) - 1); + playlistRepository.save(playlist); + + return false; // 表示取消收藏 + } else { + // 未收藏则进行收藏 + com.test.musichouduan.entity.UserCollectPlaylist userCollectPlaylist = new com.test.musichouduan.entity.UserCollectPlaylist(); + userCollectPlaylist.setUser(user); + userCollectPlaylist.setPlaylist(playlist); + userCollectPlaylistRepository.save(userCollectPlaylist); + + // 更新收藏数 + playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) + 1); + playlistRepository.save(playlist); + + return true; // 表示收藏成功 } - - // 收藏歌单 - com.test.musichouduan.entity.UserCollectPlaylist userCollectPlaylist = new com.test.musichouduan.entity.UserCollectPlaylist(); - userCollectPlaylist.setUser(user); - userCollectPlaylist.setPlaylist(playlist); - userCollectPlaylistRepository.save(userCollectPlaylist); - - // 更新收藏数 - playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) + 1); - playlistRepository.save(playlist); - - return true; } + @Override @Transactional public boolean uncollectPlaylist(Long id) {