diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/CommentServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/CommentServiceImpl.java index d61a942..84286c1 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/CommentServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/CommentServiceImpl.java @@ -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 children = commentRepository.findByParentIdOrderByCreateTimeAsc(id); diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/SingerServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/SingerServiceImpl.java index a4a6349..6d583d8 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/SingerServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/SingerServiceImpl.java @@ -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; } diff --git a/music-qianduan/src/views/SingerDetail.vue b/music-qianduan/src/views/SingerDetail.vue index 44446e4..3cd7dbb 100644 --- a/music-qianduan/src/views/SingerDetail.vue +++ b/music-qianduan/src/views/SingerDetail.vue @@ -183,6 +183,12 @@ const toggleCollect = async () => { const res = await toggleCollectSinger(singerId.value) if (res.code === 200) { isCollected.value = !isCollected.value + // 更新收藏数 + if (isCollected.value) { + singer.value.collectCount++ + } else { + singer.value.collectCount-- + } ElMessage.success(isCollected.value ? '收藏成功' : '已取消收藏') } else { ElMessage.error(res.message || '操作失败') @@ -274,6 +280,8 @@ const submitComment = async (isReply = false) => { commentContent.value = '' } ElMessage.success('评论已发送') + // 更新评论数 + singer.value.commentCount++ } else { ElMessage.error(res.message || '评论失败') } @@ -295,6 +303,8 @@ const deleteComment = async (commentId) => { const res = await apiDeleteComment(commentId) if (res.code === 200) { comments.value = comments.value.filter(c => c.id !== commentId) + // 更新评论数 + singer.value.commentCount-- ElMessage.success('评论已删除') } else { ElMessage.error(res.message || '删除失败') @@ -414,6 +424,14 @@ onUnmounted(() => {
{{ formatFans(singer.fansCount || 0) }}
粉丝数
+
+
{{ singer.collectCount || 0 }}
+
收藏数
+
+
+
{{ singer.commentCount || 0 }}
+
评论数
+
{{ singer.introduction }}
@@ -500,7 +518,7 @@ onUnmounted(() => { - +