diff --git a/music-houduan/src/main/java/com/test/musichouduan/entity/Singer.java b/music-houduan/src/main/java/com/test/musichouduan/entity/Singer.java index 533cf99..b646a85 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/entity/Singer.java +++ b/music-houduan/src/main/java/com/test/musichouduan/entity/Singer.java @@ -48,6 +48,18 @@ public class Singer { @JoinColumn(name = "type_id") private SingerType type; + /** + * 收藏数 + */ + @Column + private Integer collectCount; + + /** + * 评论数 + */ + @Column + private Integer commentCount; + /** * 创建时间 */ 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 412ed2e..d61a942 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 @@ -10,6 +10,7 @@ import com.test.musichouduan.entity.User; 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.UserRepository; import com.test.musichouduan.service.CommentService; import org.springframework.messaging.simp.SimpMessagingTemplate; // 添加导入 @@ -44,6 +45,9 @@ public class CommentServiceImpl implements CommentService { @Autowired private MusicRepository musicRepository; + @Autowired + private PlaylistRepository playlistRepository; + @Autowired private SimpMessagingTemplate messagingTemplate; // 注入 SimpMessagingTemplate @@ -121,6 +125,12 @@ public class CommentServiceImpl implements CommentService { musicRepository.save(music); } }); + } else if (savedComment.getTargetType() == 2) { // 2 代表歌单 + playlistRepository.findById(savedComment.getTargetId()).ifPresent(playlist -> { + long commentCount = commentRepository.countByTargetIdAndTargetType(savedComment.getTargetId(), 2); + playlist.setCommentCount((int) commentCount); + playlistRepository.save(playlist); + }); } // 将新评论转换为DTO @@ -153,6 +163,21 @@ 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); + }); + } + // 如果是父评论,同时删除子评论 if (comment.getParentId() == null) { List children = commentRepository.findByParentIdOrderByCreateTimeAsc(id); diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java index 2d65829..86ad1df 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java @@ -275,6 +275,10 @@ public class PlaylistServiceImpl implements PlaylistService { // 收藏歌单 userPlaylistRepository.collectPlaylist(user.getId(), playlist.getId()); + // 更新收藏数 + playlist.setCollectCount(playlist.getCollectCount() + 1); + playlistRepository.save(playlist); + return true; } @@ -298,6 +302,10 @@ public class PlaylistServiceImpl implements PlaylistService { // 取消收藏歌单 userPlaylistRepository.uncollectPlaylist(user.getId(), playlist.getId()); + // 更新收藏数 + playlist.setCollectCount(playlist.getCollectCount() - 1); + playlistRepository.save(playlist); + return true; } diff --git a/music-qianduan/src/views/PlaylistDetail.vue b/music-qianduan/src/views/PlaylistDetail.vue index 1cb4241..11a2c61 100644 --- a/music-qianduan/src/views/PlaylistDetail.vue +++ b/music-qianduan/src/views/PlaylistDetail.vue @@ -141,6 +141,12 @@ const toggleCollect = async () => { const res = await toggleCollectPlaylist(playlistId.value) if (res.code === 200) { isCollected.value = !isCollected.value + // 更新收藏数 + if (isCollected.value) { + playlist.value.collectCount++ + } else { + playlist.value.collectCount-- + } ElMessage.success(isCollected.value ? '收藏成功' : '已取消收藏') } else { ElMessage.error(res.message || '操作失败') @@ -163,6 +169,8 @@ const deleteComment = async (commentId) => { const res = await apiDeleteComment(commentId) if (res.code === 200) { comments.value = comments.value.filter(c => c.id !== commentId) + // 更新评论数 + playlist.value.commentCount-- ElMessage.success('评论已删除') } else { ElMessage.error(res.message || '删除失败') @@ -256,6 +264,8 @@ const submitComment = async (isReply = false) => { commentContent.value = '' } ElMessage.success('评论已发送') + // 更新评论数 + playlist.value.commentCount++ } else { ElMessage.error(res.message || '评论失败') } @@ -388,6 +398,11 @@ onUnmounted(() => {
创建时间:{{ playlist.createTime }}
播放次数:{{ formatPlayCount(playlist.playCount) }}
+
+ 收藏数:{{ playlist.collectCount }} + + 评论数:{{ playlist.commentCount }} +
{{ playlist.description }}
@@ -488,7 +503,7 @@ onUnmounted(() => { > - +