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.PageResult;
|
||||||
import com.test.musichouduan.dto.UserDTO;
|
import com.test.musichouduan.dto.UserDTO;
|
||||||
import com.test.musichouduan.entity.Comment;
|
import com.test.musichouduan.entity.Comment;
|
||||||
|
import com.test.musichouduan.entity.Music;
|
||||||
import com.test.musichouduan.entity.User;
|
import com.test.musichouduan.entity.User;
|
||||||
import com.test.musichouduan.exception.BusinessException;
|
import com.test.musichouduan.exception.BusinessException;
|
||||||
import com.test.musichouduan.repository.CommentRepository;
|
import com.test.musichouduan.repository.CommentRepository;
|
||||||
@@ -25,6 +26,7 @@ import jakarta.persistence.criteria.Predicate;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -104,13 +106,20 @@ public class CommentServiceImpl implements CommentService {
|
|||||||
// 保存评论
|
// 保存评论
|
||||||
Comment savedComment = commentRepository.save(comment);
|
Comment savedComment = commentRepository.save(comment);
|
||||||
|
|
||||||
|
|
||||||
// 如果评论的是音乐 (targetType=1, 这个值需要与前端约定好)
|
// 如果评论的是音乐 (targetType=1, 这个值需要与前端约定好)
|
||||||
// 通常可以定义一个枚举或常量类来管理这些类型值
|
// 通常可以定义一个枚举或常量类来管理这些类型值
|
||||||
if (savedComment.getTargetType() == 1) {
|
if (savedComment.getTargetType() == 1) {
|
||||||
musicRepository.findById(savedComment.getTargetId()).ifPresent(music -> {
|
musicRepository.findById(savedComment.getTargetId()).ifPresent(music -> {
|
||||||
int currentCommentCount = music.getCommentCount() != null ? music.getCommentCount() : 0;
|
// 首先判断类型是否等于1
|
||||||
music.setCommentCount(currentCommentCount + 1);
|
if (savedComment.getTargetType() == 1) {
|
||||||
musicRepository.save(music);
|
// 查询评论表,使用COUNT(id)统计该音乐的评论数量
|
||||||
|
long commentCount = commentRepository.countByTargetIdAndTargetType(savedComment.getTargetId(), 1);
|
||||||
|
// 设置到音乐中
|
||||||
|
music.setCommentCount((int) commentCount);
|
||||||
|
// 保存音乐实体
|
||||||
|
musicRepository.save(music);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user