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 e06ccfb..2ae5398 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 @@ -8,6 +8,7 @@ import com.test.musichouduan.entity.Comment; 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.UserRepository; import com.test.musichouduan.service.CommentService; import org.springframework.messaging.simp.SimpMessagingTemplate; // 添加导入 @@ -38,6 +39,9 @@ public class CommentServiceImpl implements CommentService { @Autowired private UserRepository userRepository; + @Autowired + private MusicRepository musicRepository; + @Autowired private SimpMessagingTemplate messagingTemplate; // 注入 SimpMessagingTemplate @@ -100,6 +104,16 @@ public class CommentServiceImpl implements CommentService { // 保存评论 Comment savedComment = commentRepository.save(comment); + // 如果评论的是音乐 (targetType=1, 这个值需要与前端约定好) + // 通常可以定义一个枚举或常量类来管理这些类型值 + if (savedComment.getTargetType() == 1) { + musicRepository.findById(savedComment.getTargetId()).ifPresent(music -> { + int currentCommentCount = music.getCommentCount() != null ? music.getCommentCount() : 0; + music.setCommentCount(currentCommentCount + 1); + musicRepository.save(music); + }); + } + // 将新评论转换为DTO CommentDTO savedCommentDTO = convertToDTO(savedComment); diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java index 4e6dea6..5321e59 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/MusicServiceImpl.java @@ -537,7 +537,10 @@ public class MusicServiceImpl implements MusicService { Music music = musicOpt.get(); // 增加播放次数 - music.setPlayCount(music.getPlayCount() + 1); + long currentPlayCount = music.getPlayCount() != null ? music.getPlayCount() : 0; + music.setPlayCount(currentPlayCount + 1); + // 根据要求,将点赞数与播放次数同步 + music.setLikeCount((int) (currentPlayCount + 1)); musicRepository.save(music); // 如果用户已登录,记录播放历史 diff --git a/music-qianduan/src/api/music.js b/music-qianduan/src/api/music.js index 6eef1e1..59f52eb 100644 --- a/music-qianduan/src/api/music.js +++ b/music-qianduan/src/api/music.js @@ -65,7 +65,8 @@ export function getMusicById(id) { * @returns {Promise} */ export function getHotMusic(limit = 10) { - return api.get('/music/hot', { + // 更新:调用新的热门音乐接口 + return api.get('/hot-music/list', { params: { limit } }) } diff --git a/music-qianduan/src/components/MusicList.vue b/music-qianduan/src/components/MusicList.vue index 6d5a38f..ea4151b 100644 --- a/music-qianduan/src/components/MusicList.vue +++ b/music-qianduan/src/components/MusicList.vue @@ -72,6 +72,15 @@ + + + + @@ -105,7 +114,8 @@ @@ -330,10 +530,79 @@ onMounted(() => { gap: 15px; } -.music-description, .music-lyric { +.music-description { margin-bottom: 30px; } +.content-toggle { + margin-bottom: 20px; +} + +.comment-section { + margin-top: 20px; +} + +.comment-input { + margin-bottom: 20px; + display: flex; + flex-direction: column; + gap: 10px; +} + +.comment-submit-actions { + display: flex; + justify-content: flex-end; + gap: 10px; +} + +.comment-list { + margin-top: 20px; +} + +.comment-item { + display: flex; + margin-bottom: 20px; + padding-bottom: 20px; + border-bottom: 1px solid #eee; +} + +.comment-avatar { + margin-right: 15px; +} + +.comment-content { + flex: 1; +} + +.comment-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 5px; +} + +.comment-user { + font-weight: bold; +} + +.child-comment-input { + margin-top: 10px; +} + +.comment-text { + margin-bottom: 5px; + color: #333; + line-height: 1.5; +} + +.comment-footer { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.8rem; + color: #999; +} + .music-description h2, .music-lyric h2, .related-music h2 { font-size: 20px; margin-bottom: 15px;