feat(singer): 添加歌手评论和收藏功能

- 在 CommentServiceImpl 中增加对歌手评论的处理逻辑- 在 SingerServiceImpl 中实现歌手收藏和取消收藏的功能
- 在前端 SingerDetail 组件中添加歌手的评论数、收藏数显示和相关操作
This commit is contained in:
ikmkj
2025-07-26 10:39:51 +08:00
parent f3a6f99992
commit 2af40c5a32
3 changed files with 64 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ import com.test.musichouduan.exception.BusinessException;
import com.test.musichouduan.repository.CommentRepository;
import com.test.musichouduan.repository.MusicRepository;
import com.test.musichouduan.repository.PlaylistRepository;
import com.test.musichouduan.repository.SingerRepository;
import com.test.musichouduan.repository.UserRepository;
import com.test.musichouduan.service.CommentService;
import org.springframework.messaging.simp.SimpMessagingTemplate; // 添加导入
@@ -48,6 +49,9 @@ public class CommentServiceImpl implements CommentService {
@Autowired
private PlaylistRepository playlistRepository;
@Autowired
private SingerRepository singerRepository;
@Autowired
private SimpMessagingTemplate messagingTemplate; // 注入 SimpMessagingTemplate
@@ -131,6 +135,12 @@ public class CommentServiceImpl implements CommentService {
playlist.setCommentCount((int) commentCount);
playlistRepository.save(playlist);
});
} else if (savedComment.getTargetType() == 3) { // 3 代表歌手
singerRepository.findById(savedComment.getTargetId()).ifPresent(singer -> {
long commentCount = commentRepository.countByTargetIdAndTargetType(savedComment.getTargetId(), 3);
singer.setCommentCount((int) commentCount);
singerRepository.save(singer);
});
}
// 将新评论转换为DTO
@@ -176,6 +186,12 @@ public class CommentServiceImpl implements CommentService {
playlist.setCommentCount((int) commentCount);
playlistRepository.save(playlist);
});
} else if (comment.getTargetType() == 3) {
singerRepository.findById(comment.getTargetId()).ifPresent(singer -> {
long commentCount = commentRepository.countByTargetIdAndTargetType(comment.getTargetId(), 3);
singer.setCommentCount((int) commentCount);
singerRepository.save(singer);
});
}
// 如果是父评论,同时删除子评论
@@ -279,6 +295,27 @@ public class CommentServiceImpl implements CommentService {
// 删除评论
commentRepository.delete(comment);
// 更新相关实体的评论数
if (comment.getTargetType() == 1) {
musicRepository.findById(comment.getTargetId()).ifPresent(music -> {
long commentCount = commentRepository.countByTargetIdAndTargetType(comment.getTargetId(), 1);
music.setCommentCount((int) commentCount);
musicRepository.save(music);
});
} else if (comment.getTargetType() == 2) {
playlistRepository.findById(comment.getTargetId()).ifPresent(playlist -> {
long commentCount = commentRepository.countByTargetIdAndTargetType(comment.getTargetId(), 2);
playlist.setCommentCount((int) commentCount);
playlistRepository.save(playlist);
});
} else if (comment.getTargetType() == 3) {
singerRepository.findById(comment.getTargetId()).ifPresent(singer -> {
long commentCount = commentRepository.countByTargetIdAndTargetType(comment.getTargetId(), 3);
singer.setCommentCount((int) commentCount);
singerRepository.save(singer);
});
}
// 如果是父评论,同时删除子评论
if (comment.getParentId() == null) {
List<Comment> children = commentRepository.findByParentIdOrderByCreateTimeAsc(id);

View File

@@ -237,6 +237,10 @@ public class SingerServiceImpl implements SingerService {
// 收藏歌手
userSingerRepository.collectSinger(user.getId(), singer.getId());
// 更新收藏数
singer.setCollectCount(singer.getCollectCount() + 1);
singerRepository.save(singer);
return true;
}
@@ -260,6 +264,10 @@ public class SingerServiceImpl implements SingerService {
// 取消收藏歌手
userSingerRepository.uncollectSinger(user.getId(), singer.getId());
// 更新收藏数
singer.setCollectCount(singer.getCollectCount() - 1);
singerRepository.save(singer);
return true;
}