feat(playlist): 添加歌单收藏时间并优化相关功能

- 在 PlaylistDTO 中添加 collectTime 字段,用于显示收藏时间
- 修改收藏歌单逻辑,记录收藏时间
- 更新取消收藏歌单逻辑,使用 deleteByUserAndPlaylist 方法
- 在获取用户收藏的歌单列表时,添加收藏时间信息
- 重命名 UserCollectPlaylist
This commit is contained in:
ikmkj
2025-08-10 14:16:40 +08:00
parent 19f41c5e84
commit 0c10c7def0
4 changed files with 22 additions and 6 deletions

View File

@@ -98,4 +98,9 @@ public class PlaylistDTO {
* 热度分
*/
private double hotScore;
/**
* 收藏时间
*/
private LocalDateTime collectTime;
}

View File

@@ -33,9 +33,8 @@ public class UserCollectPlaylist {
private Playlist playlist;
/**
* 创建时间
* 收藏时间
*/
@CreationTimestamp
@Column(nullable = false, updatable = false)
private LocalDateTime createTime;
private LocalDateTime collectTime;
}

View File

@@ -99,4 +99,6 @@ public interface UserCollectPlaylistRepository extends JpaRepository<UserCollect
@Query("SELECT ucp.playlist FROM UserCollectPlaylist ucp WHERE ucp.user.id = ?1")
Page<Playlist> findCollectedPlaylist(Long userId, Pageable pageable);
Optional<UserCollectPlaylist> findByUserIdAndPlaylistId(Long userId, Long playlistId);
}

View File

@@ -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<PlaylistDTO> 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<>(