From 2af40c5a32cbe6dad74558f7c519353b97dc07af Mon Sep 17 00:00:00 2001 From: ikmkj <1@qq,com> Date: Sat, 26 Jul 2025 10:39:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(singer):=20=E6=B7=BB=E5=8A=A0=E6=AD=8C?= =?UTF-8?q?=E6=89=8B=E8=AF=84=E8=AE=BA=E5=92=8C=E6=94=B6=E8=97=8F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CommentServiceImpl 中增加对歌手评论的处理逻辑- 在 SingerServiceImpl 中实现歌手收藏和取消收藏的功能 - 在前端 SingerDetail 组件中添加歌手的评论数、收藏数显示和相关操作 --- .../service/impl/CommentServiceImpl.java | 37 +++++++++++++++++++ .../service/impl/SingerServiceImpl.java | 8 ++++ music-qianduan/src/views/SingerDetail.vue | 20 +++++++++- 3 files changed, 64 insertions(+), 1 deletion(-) 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(() => { - +