feat(playlist): 实现歌单收藏与取消收藏功能- 添加收藏状态检查逻辑

- 支持取消已收藏的歌单
- 更新歌单收藏计数- 保存用户收藏记录
- 返回收藏操作结果状态
This commit is contained in:
ikmkj
2025-10-10 22:30:49 +08:00
parent b771dbdf2d
commit 4a379bed83

View File

@@ -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) {