refactor(music-houduan): 优化音乐评论数量统计逻辑
- 引入 Optional 类以提高代码的可读性和健壮性 - 使用 countByTargetIdAndTargetType 方法直接统计评论数量,避免不必要的更新操作 - 添加类型判断,确保只处理音乐类型的评论
This commit is contained in:
@@ -5,6 +5,7 @@ import com.test.musichouduan.dto.CommentDTO;
|
||||
import com.test.musichouduan.dto.PageResult;
|
||||
import com.test.musichouduan.dto.UserDTO;
|
||||
import com.test.musichouduan.entity.Comment;
|
||||
import com.test.musichouduan.entity.Music;
|
||||
import com.test.musichouduan.entity.User;
|
||||
import com.test.musichouduan.exception.BusinessException;
|
||||
import com.test.musichouduan.repository.CommentRepository;
|
||||
@@ -25,6 +26,7 @@ import jakarta.persistence.criteria.Predicate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -104,13 +106,20 @@ 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);
|
||||
// 首先判断类型是否等于1
|
||||
if (savedComment.getTargetType() == 1) {
|
||||
// 查询评论表,使用COUNT(id)统计该音乐的评论数量
|
||||
long commentCount = commentRepository.countByTargetIdAndTargetType(savedComment.getTargetId(), 1);
|
||||
// 设置到音乐中
|
||||
music.setCommentCount((int) commentCount);
|
||||
// 保存音乐实体
|
||||
musicRepository.save(music);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user