From 331245f8e64db9e413cbeaf5ab4ca341e4150d0e Mon Sep 17 00:00:00 2001 From: ikmkj <1@qq,com> Date: Tue, 29 Jul 2025 00:06:48 +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=E6=95=B0=E5=92=8C=E6=94=B6=E8=97=8F?= =?UTF-8?q?=E6=95=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 SingerDetail.vue 中添加评论数和收藏数的格式化计算属性 - 更新后端 SingerServiceImpl 类,添加评论数和收藏数的查询逻辑 - 在前端页面中使用格式化的评论数和收藏数 --- .../service/impl/SingerServiceImpl.java | 12 +++++-- music-qianduan/src/views/SingerDetail.vue | 31 +++++++++++++++++-- 2 files changed, 37 insertions(+), 6 deletions(-) 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 1c8c6bd..d374954 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 @@ -12,6 +12,7 @@ import com.test.musichouduan.entity.Music; import com.test.musichouduan.exception.BusinessException; import com.test.musichouduan.repository.MusicRepository; import com.test.musichouduan.repository.SingerRepository; +import com.test.musichouduan.repository.CommentRepository; import com.test.musichouduan.repository.SingerTypeRepository; import com.test.musichouduan.repository.UserRepository; import com.fasterxml.jackson.core.type.TypeReference; @@ -78,6 +79,9 @@ public class SingerServiceImpl implements SingerService { @Autowired private FileService fileService; + @Autowired + private CommentRepository commentRepository; + @Override public SingerDTO getSingerById(Long id) { Singer singer = singerRepository.findById(id) @@ -452,12 +456,14 @@ public class SingerServiceImpl implements SingerService { Long musicCount = musicRepository.countBySingersContaining(singer); singerDTO.setMusicCount(musicCount); -// // 设置粉丝数量 -// Long fansCount = userSingerRepository.count(); -// singerDTO.setFansCount(fansCount); // 设置粉丝数量 Long fansCount = userSingerRepository.countBySingerId(singer.getId()); singerDTO.setFansCount(fansCount); + singerDTO.setCollectCount(fansCount.intValue()); + + // 设置评论数 + long commentCount = commentRepository.countByTargetIdAndTargetType(singer.getId(), 3); // 3 for singer + singerDTO.setCommentCount((int) commentCount); // 检查当前登录用户是否已收藏该歌手 if (StpUtil.isLogin()) { diff --git a/music-qianduan/src/views/SingerDetail.vue b/music-qianduan/src/views/SingerDetail.vue index 8d52fd0..3a7c4e5 100644 --- a/music-qianduan/src/views/SingerDetail.vue +++ b/music-qianduan/src/views/SingerDetail.vue @@ -125,6 +125,9 @@ const fetchComments = async () => { const res = await getCommentList(singerId.value, 3, 1, 20) // targetType 3 表示歌手 if (res.code === 200) { comments.value = res.data.list || res.data.records || [] + if (singer.value && res.data.total !== undefined) { + singer.value.commentCount = res.data.total + } // 处理用户头像 comments.value.forEach(comment => { @@ -393,6 +396,28 @@ const formatTime = (seconds) => { return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}` } +// 格式化评论数 +const formattedCommentCount = computed(() => { + if (!singer.value || singer.value.commentCount === undefined) { + return 0; + } + if (singer.value.commentCount > 99) { + return '99+'; + } + return singer.value.commentCount; +}); + +// 格式化收藏数 +const formattedCollectCount = computed(() => { + if (!singer.value || singer.value.collectCount === undefined) { + return 0; + } + if (singer.value.collectCount > 99) { + return '99+'; + } + return singer.value.collectCount; +}); + // 格式化粉丝数 const formatFans = (count) => { if (count < 10000) { @@ -477,11 +502,11 @@ onUnmounted(() => {
粉丝数
-
{{ singer.collectCount || 0 }}
+
{{ formattedCollectCount }}
收藏数
-
{{ singer.commentCount || 0 }}
+
{{ formattedCommentCount }}
评论数
@@ -517,7 +542,7 @@ onUnmounted(() => { - +