feat(playlist): 增加歌单收藏状态检查功能
- 新增 isPlaylistCollected 接口和相关实现 - 修改 toggleCollectPlaylist 函数,增加当前收藏状态参数 - 在前端 PlaylistDetail 组件中添加收藏状态检查逻辑 - 后端增加对应的控制层、服务层和实现类方法
This commit is contained in:
@@ -189,6 +189,19 @@ public class PlaylistController {
|
||||
return Result.success("取消收藏成功", result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查当前用户是否收藏了该歌单
|
||||
*
|
||||
* @param id 歌单ID
|
||||
* @return 响应结果
|
||||
*/
|
||||
@SaCheckLogin
|
||||
@GetMapping("/{id}/is-collected")
|
||||
public Result<Boolean> isCollected(@PathVariable Long id) {
|
||||
boolean result = playlistService.isCollected(id);
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户收藏的歌单列表
|
||||
*
|
||||
|
||||
@@ -175,6 +175,19 @@ public class SingerController {
|
||||
return Result.success("取消收藏成功", result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查当前用户是否收藏了该歌手
|
||||
*
|
||||
* @param id 歌手ID
|
||||
* @return 响应结果
|
||||
*/
|
||||
@SaCheckLogin
|
||||
@GetMapping("/{id}/is-collected")
|
||||
public Result<Boolean> isCollected(@PathVariable Long id) {
|
||||
boolean result = singerService.isCollected(id);
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户收藏的歌手列表
|
||||
*
|
||||
|
||||
@@ -99,6 +99,14 @@ public interface PlaylistService {
|
||||
*/
|
||||
boolean uncollectPlaylist(Long id);
|
||||
|
||||
/**
|
||||
* 检查当前用户是否收藏了该歌单
|
||||
*
|
||||
* @param id 歌单ID
|
||||
* @return 是否收藏
|
||||
*/
|
||||
boolean isCollected(Long id);
|
||||
|
||||
/**
|
||||
* 获取用户收藏的歌单列表
|
||||
*
|
||||
|
||||
@@ -90,6 +90,14 @@ public interface SingerService {
|
||||
*/
|
||||
boolean uncollectSinger(Long id);
|
||||
|
||||
/**
|
||||
* 检查当前用户是否收藏了该歌手
|
||||
*
|
||||
* @param id 歌手ID
|
||||
* @return 是否收藏
|
||||
*/
|
||||
boolean isCollected(Long id);
|
||||
|
||||
/**
|
||||
* 获取用户收藏的歌手列表
|
||||
*
|
||||
|
||||
@@ -247,6 +247,7 @@ public class PlaylistServiceImpl implements PlaylistService {
|
||||
playlist.setCover(coverUrl);
|
||||
playlist.setCreator(user);
|
||||
playlist.setPlayCount(0L);
|
||||
playlist.setCollectCount(0);
|
||||
playlist.setIsOfficial(0); // 默认为非官方歌单
|
||||
|
||||
// 设置歌单类型
|
||||
@@ -358,7 +359,7 @@ public class PlaylistServiceImpl implements PlaylistService {
|
||||
userPlaylistRepository.collectPlaylist(user.getId(), playlist.getId());
|
||||
|
||||
// 更新收藏数
|
||||
playlist.setCollectCount(playlist.getCollectCount() + 1);
|
||||
playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) + 1);
|
||||
playlistRepository.save(playlist);
|
||||
|
||||
return true;
|
||||
@@ -385,12 +386,21 @@ public class PlaylistServiceImpl implements PlaylistService {
|
||||
userPlaylistRepository.uncollectPlaylist(user.getId(), playlist.getId());
|
||||
|
||||
// 更新收藏数
|
||||
playlist.setCollectCount(playlist.getCollectCount() - 1);
|
||||
playlist.setCollectCount((playlist.getCollectCount() == null ? 0 : playlist.getCollectCount()) - 1);
|
||||
playlistRepository.save(playlist);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCollected(Long id) {
|
||||
if (!StpUtil.isLogin()) {
|
||||
return false;
|
||||
}
|
||||
Long userId = StpUtil.getLoginIdAsLong();
|
||||
return userPlaylistRepository.existsByUserIdAndPlaylistId(userId, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<PlaylistDTO> getCollectedPlaylist(Integer page, Integer size) {
|
||||
// 获取当前登录用户
|
||||
|
||||
@@ -214,6 +214,7 @@ public class SingerServiceImpl implements SingerService {
|
||||
singer.setName(singerDTO.getName());
|
||||
singer.setAvatar(avatarUrl);
|
||||
singer.setIntroduction(singerDTO.getIntroduction());
|
||||
singer.setCollectCount(0);
|
||||
|
||||
// 设置歌手类型
|
||||
if (singerDTO.getType() != null && singerDTO.getType().getId() != null) {
|
||||
@@ -309,7 +310,7 @@ public class SingerServiceImpl implements SingerService {
|
||||
userSingerRepository.collectSinger(user.getId(), singer.getId());
|
||||
|
||||
// 更新收藏数
|
||||
singer.setCollectCount(singer.getCollectCount() + 1);
|
||||
singer.setCollectCount((singer.getCollectCount() == null ? 0 : singer.getCollectCount()) + 1);
|
||||
singerRepository.save(singer);
|
||||
|
||||
return true;
|
||||
@@ -336,12 +337,21 @@ public class SingerServiceImpl implements SingerService {
|
||||
userSingerRepository.uncollectSinger(user.getId(), singer.getId());
|
||||
|
||||
// 更新收藏数
|
||||
singer.setCollectCount(singer.getCollectCount() - 1);
|
||||
singer.setCollectCount((singer.getCollectCount() == null ? 0 : singer.getCollectCount()) - 1);
|
||||
singerRepository.save(singer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCollected(Long id) {
|
||||
if (!StpUtil.isLogin()) {
|
||||
return false;
|
||||
}
|
||||
Long userId = StpUtil.getLoginIdAsLong();
|
||||
return userSingerRepository.existsByUserIdAndSingerId(userId, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<SingerDTO> getCollectedSinger(Integer page, Integer size) {
|
||||
// 获取当前登录用户
|
||||
|
||||
Reference in New Issue
Block a user