feat(comment): 添加音乐评论功能并优化热门音乐相关逻辑

- 在 CommentServiceImpl 中增加针对音乐的评论计数逻辑
- 在 Home.vue 中添加热门音乐推荐模块
- 修改 Music.vue 中的热门音乐获取逻辑,支持分页
- 在 MusicDetail.vue 中实现评论列表展示和评论提交功能
- 更新 MusicList.vue,增加音乐详情查看按钮
- 在 MusicServiceImpl 中同步更新播放次数和点赞数
This commit is contained in:
ikmkj
2025-07-25 21:47:18 +08:00
parent 7c976b760a
commit e4b828ead9
7 changed files with 391 additions and 30 deletions

View File

@@ -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);

View File

@@ -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);
// 如果用户已登录,记录播放历史