|
|
@@ -1,452 +0,0 @@
|
|
|
-package shop.alien.lawyer.service.impl;
|
|
|
-
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import lombok.RequiredArgsConstructor;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import shop.alien.entity.result.R;
|
|
|
-import shop.alien.entity.store.*;
|
|
|
-import shop.alien.entity.store.dto.LawyerReviewDto;
|
|
|
-import shop.alien.entity.store.dto.LawyerReviewReplyDto;
|
|
|
-import shop.alien.entity.store.vo.LawyerReviewReplyVo;
|
|
|
-import shop.alien.entity.store.vo.LawyerReviewVo;
|
|
|
-import shop.alien.lawyer.service.LawyerReviewService;
|
|
|
-import shop.alien.mapper.*;
|
|
|
-
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
-/**
|
|
|
- * 律师评价 服务实现类
|
|
|
- *
|
|
|
- * @author system
|
|
|
- * @since 2025-01-XX
|
|
|
- */
|
|
|
-@Slf4j
|
|
|
-@Transactional
|
|
|
-@Service
|
|
|
-@RequiredArgsConstructor
|
|
|
-public class LawyerReviewServiceImpl extends ServiceImpl<LawyerReviewMapper, LawyerReview> implements LawyerReviewService {
|
|
|
-
|
|
|
- private final LawyerReviewImageMapper reviewImageMapper;
|
|
|
- private final LawyerReviewReplyMapper reviewReplyMapper;
|
|
|
- private final LawyerReviewLikeMapper reviewLikeMapper;
|
|
|
- private final LawyerUserMapper lawyerUserMapper;
|
|
|
- private final LifeUserMapper lifeUserMapper;
|
|
|
- private final LawyerConsultationOrderMapper consultationOrderMapper;
|
|
|
-
|
|
|
- @Override
|
|
|
- public R<LawyerReviewVo> createReview(LawyerReviewDto reviewDto, Integer userId) {
|
|
|
- log.info("LawyerReviewServiceImpl.createReview?reviewDto={}, userId={}", reviewDto, userId);
|
|
|
- try {
|
|
|
- // 检查订单是否存在且属于该用户
|
|
|
- LawyerConsultationOrder order = consultationOrderMapper.selectById(reviewDto.getOrderId());
|
|
|
- if (order == null || !order.getClientUserId().equals(userId)) {
|
|
|
- return R.fail("订单不存在或不属于当前用户");
|
|
|
- }
|
|
|
-
|
|
|
- // 检查是否已经评价过
|
|
|
- LambdaQueryWrapper<LawyerReview> checkWrapper = new LambdaQueryWrapper<>();
|
|
|
- checkWrapper.eq(LawyerReview::getOrderId, reviewDto.getOrderId())
|
|
|
- .eq(LawyerReview::getDeleteFlag, 0);
|
|
|
- long count = this.count(checkWrapper);
|
|
|
- if (count > 0) {
|
|
|
- return R.fail("该订单已评价,不能重复评价");
|
|
|
- }
|
|
|
-
|
|
|
- // 创建评价
|
|
|
- LawyerReview review = new LawyerReview();
|
|
|
- review.setOrderId(reviewDto.getOrderId());
|
|
|
- review.setUserId(userId);
|
|
|
- review.setLawyerId(reviewDto.getLawyerId());
|
|
|
- review.setOverallRating(reviewDto.getOverallRating());
|
|
|
- review.setServiceAttitudeRating(reviewDto.getServiceAttitudeRating());
|
|
|
- review.setResponseTimeRating(reviewDto.getResponseTimeRating());
|
|
|
- review.setProfessionalAbilityRating(reviewDto.getProfessionalAbilityRating());
|
|
|
- review.setReviewContent(reviewDto.getReviewContent());
|
|
|
- review.setIsAnonymous(reviewDto.getIsAnonymous() != null ? reviewDto.getIsAnonymous() : 0);
|
|
|
- review.setLikeCount(0);
|
|
|
- review.setReplyCount(0);
|
|
|
- review.setAuditStatus(0); // 待审核
|
|
|
- review.setCreatedUserId(userId);
|
|
|
-
|
|
|
- boolean saved = this.save(review);
|
|
|
- if (!saved) {
|
|
|
- return R.fail("创建评价失败");
|
|
|
- }
|
|
|
-
|
|
|
- // 保存评价图片
|
|
|
- if (reviewDto.getImageUrls() != null && !reviewDto.getImageUrls().isEmpty()) {
|
|
|
- for (int i = 0; i < reviewDto.getImageUrls().size(); i++) {
|
|
|
- LawyerReviewImage image = new LawyerReviewImage();
|
|
|
- image.setReviewId(review.getId());
|
|
|
- image.setImageUrl(reviewDto.getImageUrls().get(i));
|
|
|
- image.setSortOrder(i + 1);
|
|
|
- image.setCreatedUserId(userId);
|
|
|
- reviewImageMapper.insert(image);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 更新律师评分统计
|
|
|
- updateLawyerRatingStats(reviewDto.getLawyerId());
|
|
|
-
|
|
|
- // 返回评价详情
|
|
|
- return getReviewDetail(review.getId(), userId);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("创建评价失败", e);
|
|
|
- return R.fail("创建评价失败:" + e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public R<LawyerReviewVo> getReviewDetail(Integer reviewId, Integer currentUserId) {
|
|
|
- log.info("LawyerReviewServiceImpl.getReviewDetail?reviewId={}, currentUserId={}", reviewId, currentUserId);
|
|
|
- try {
|
|
|
- LawyerReview review = this.getById(reviewId);
|
|
|
- if (review == null || review.getDeleteFlag() == 1) {
|
|
|
- return R.fail("评价不存在");
|
|
|
- }
|
|
|
-
|
|
|
- LawyerReviewVo vo = new LawyerReviewVo();
|
|
|
- BeanUtils.copyProperties(review, vo);
|
|
|
-
|
|
|
- // 查询评价图片
|
|
|
- LambdaQueryWrapper<LawyerReviewImage> imageWrapper = new LambdaQueryWrapper<>();
|
|
|
- imageWrapper.eq(LawyerReviewImage::getReviewId, reviewId)
|
|
|
- .eq(LawyerReviewImage::getDeleteFlag, 0)
|
|
|
- .orderByAsc(LawyerReviewImage::getSortOrder);
|
|
|
- List<LawyerReviewImage> images = reviewImageMapper.selectList(imageWrapper);
|
|
|
- vo.setImageUrls(images.stream().map(LawyerReviewImage::getImageUrl).collect(Collectors.toList()));
|
|
|
-
|
|
|
- // 查询用户信息
|
|
|
- if (review.getIsAnonymous() == 0) {
|
|
|
- LifeUser user = lifeUserMapper.selectById(review.getUserId());
|
|
|
- if (user != null) {
|
|
|
- vo.setUserName(user.getUserName());
|
|
|
- vo.setUserImage(user.getUserImage());
|
|
|
- }
|
|
|
- } else {
|
|
|
- vo.setUserName("匿名用户");
|
|
|
- }
|
|
|
-
|
|
|
- LawyerUser lawyerUser = lawyerUserMapper.selectById(review.getLawyerId());
|
|
|
- if (lawyerUser != null) {
|
|
|
- vo.setLawyerName(lawyerUser.getName());
|
|
|
- vo.setLawyerImage(lawyerUser.getHeadImg());
|
|
|
- }
|
|
|
-
|
|
|
- // 查询订单信息
|
|
|
- LawyerConsultationOrder order = consultationOrderMapper.selectById(review.getOrderId());
|
|
|
- if (order != null) {
|
|
|
- vo.setOrderNumber(order.getOrderNumber());
|
|
|
- }
|
|
|
-
|
|
|
- // 查询回复列表
|
|
|
- List<LawyerReviewReplyVo> replies = getReplyList(reviewId, currentUserId);
|
|
|
- vo.setReplies(replies);
|
|
|
-
|
|
|
- // 查询是否已点赞
|
|
|
- if (currentUserId != null) {
|
|
|
- LambdaQueryWrapper<LawyerReviewLike> likeWrapper = new LambdaQueryWrapper<>();
|
|
|
- likeWrapper.eq(LawyerReviewLike::getReviewId, reviewId)
|
|
|
- .eq(LawyerReviewLike::getLikeUserId, currentUserId)
|
|
|
- .eq(LawyerReviewLike::getDeleteFlag, 0);
|
|
|
- long likeCount = reviewLikeMapper.selectCount(likeWrapper);
|
|
|
- vo.setIsLiked(likeCount > 0 ? 1 : 0);
|
|
|
- } else {
|
|
|
- vo.setIsLiked(0);
|
|
|
- }
|
|
|
-
|
|
|
- return R.data(vo);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取评价详情失败", e);
|
|
|
- return R.fail("获取评价详情失败:" + e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public R<IPage<LawyerReviewVo>> getReviewListWithDetail(int pageNum, int pageSize, Integer lawyerId, Integer currentUserId) {
|
|
|
- log.info("LawyerReviewServiceImpl.getReviewListWithDetail?pageNum={}, pageSize={}, lawyerId={}, currentUserId={}",
|
|
|
- pageNum, pageSize, lawyerId, currentUserId);
|
|
|
- try {
|
|
|
- Page<LawyerReview> page = new Page<>(pageNum, pageSize);
|
|
|
- LambdaQueryWrapper<LawyerReview> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(LawyerReview::getLawyerId, lawyerId)
|
|
|
- .eq(LawyerReview::getDeleteFlag, 0)
|
|
|
- .eq(LawyerReview::getAuditStatus, 1) // 只显示已审核通过的
|
|
|
- .orderByDesc(LawyerReview::getCreatedTime);
|
|
|
- IPage<LawyerReview> pageResult = this.page(page, queryWrapper);
|
|
|
-
|
|
|
- // 转换为VO
|
|
|
- Page<LawyerReviewVo> voPage = new Page<>(pageResult.getCurrent(), pageResult.getSize(), pageResult.getTotal());
|
|
|
- List<LawyerReviewVo> voList = new ArrayList<>();
|
|
|
- for (LawyerReview review : pageResult.getRecords()) {
|
|
|
- R<LawyerReviewVo> detailResult = getReviewDetail(review.getId(), currentUserId);
|
|
|
- if (detailResult.getCode() == 200 && detailResult.getData() != null) {
|
|
|
- voList.add(detailResult.getData());
|
|
|
- }
|
|
|
- }
|
|
|
- voPage.setRecords(voList);
|
|
|
- return R.data(voPage);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取评价列表失败", e);
|
|
|
- return R.fail("获取评价列表失败:" + e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public R<Boolean> addReply(LawyerReviewReplyDto replyDto, Integer replyUserId) {
|
|
|
- log.info("LawyerReviewServiceImpl.addReply?replyDto={}, replyUserId={}", replyDto, replyUserId);
|
|
|
- try {
|
|
|
- // 检查评价是否存在
|
|
|
- LawyerReview review = this.getById(replyDto.getReviewId());
|
|
|
- if (review == null || review.getDeleteFlag() == 1) {
|
|
|
- return R.fail("评价不存在");
|
|
|
- }
|
|
|
-
|
|
|
- // 创建回复
|
|
|
- LawyerReviewReply reply = new LawyerReviewReply();
|
|
|
- reply.setReviewId(replyDto.getReviewId());
|
|
|
- reply.setReplyUserId(replyUserId);
|
|
|
- reply.setTargetUserId(replyDto.getTargetUserId());
|
|
|
- reply.setParentReplyId(replyDto.getParentReplyId() != null ? replyDto.getParentReplyId() : 0);
|
|
|
- reply.setReplyContent(replyDto.getReplyContent());
|
|
|
- reply.setLikeCount(0);
|
|
|
- reply.setCreatedUserId(replyUserId);
|
|
|
-
|
|
|
- boolean saved = reviewReplyMapper.insert(reply) > 0;
|
|
|
- if (!saved) {
|
|
|
- return R.fail("添加回复失败");
|
|
|
- }
|
|
|
-
|
|
|
- // 更新评价的回复数
|
|
|
- review.setReplyCount((review.getReplyCount() == null ? 0 : review.getReplyCount()) + 1);
|
|
|
- this.updateById(review);
|
|
|
-
|
|
|
- return R.success("添加回复成功");
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("添加回复失败", e);
|
|
|
- return R.fail("添加回复失败:" + e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public R<Boolean> toggleLike(Integer reviewId, Integer replyId, Integer userId) {
|
|
|
- log.info("LawyerReviewServiceImpl.toggleLike?reviewId={}, replyId={}, userId={}", reviewId, replyId, userId);
|
|
|
- try {
|
|
|
- if (reviewId == null && replyId == null) {
|
|
|
- return R.fail("评价ID和回复ID不能同时为空");
|
|
|
- }
|
|
|
-
|
|
|
- LambdaQueryWrapper<LawyerReviewLike> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- if (reviewId != null) {
|
|
|
- queryWrapper.eq(LawyerReviewLike::getReviewId, reviewId);
|
|
|
- }
|
|
|
- if (replyId != null) {
|
|
|
- queryWrapper.eq(LawyerReviewLike::getReplyId, replyId);
|
|
|
- }
|
|
|
- queryWrapper.eq(LawyerReviewLike::getLikeUserId, userId)
|
|
|
- .eq(LawyerReviewLike::getDeleteFlag, 0);
|
|
|
-
|
|
|
- LawyerReviewLike existingLike = reviewLikeMapper.selectOne(queryWrapper);
|
|
|
-
|
|
|
- if (existingLike != null) {
|
|
|
- // 取消点赞
|
|
|
- existingLike.setDeleteFlag(1);
|
|
|
- reviewLikeMapper.updateById(existingLike);
|
|
|
- // 更新点赞数
|
|
|
- if (reviewId != null) {
|
|
|
- LawyerReview review = this.getById(reviewId);
|
|
|
- if (review != null) {
|
|
|
- review.setLikeCount(Math.max(0, (review.getLikeCount() == null ? 0 : review.getLikeCount()) - 1));
|
|
|
- this.updateById(review);
|
|
|
- }
|
|
|
- } else if (replyId != null) {
|
|
|
- LawyerReviewReply reply = reviewReplyMapper.selectById(replyId);
|
|
|
- if (reply != null) {
|
|
|
- reply.setLikeCount(Math.max(0, (reply.getLikeCount() == null ? 0 : reply.getLikeCount()) - 1));
|
|
|
- reviewReplyMapper.updateById(reply);
|
|
|
- }
|
|
|
- }
|
|
|
- return R.success("取消点赞成功");
|
|
|
- } else {
|
|
|
- // 添加点赞
|
|
|
- LawyerReviewLike like = new LawyerReviewLike();
|
|
|
- like.setReviewId(reviewId);
|
|
|
- like.setReplyId(replyId);
|
|
|
- like.setLikeUserId(userId);
|
|
|
- reviewLikeMapper.insert(like);
|
|
|
- // 更新点赞数
|
|
|
- if (reviewId != null) {
|
|
|
- LawyerReview review = this.getById(reviewId);
|
|
|
- if (review != null) {
|
|
|
- review.setLikeCount((review.getLikeCount() == null ? 0 : review.getLikeCount()) + 1);
|
|
|
- this.updateById(review);
|
|
|
- }
|
|
|
- } else if (replyId != null) {
|
|
|
- LawyerReviewReply reply = reviewReplyMapper.selectById(replyId);
|
|
|
- if (reply != null) {
|
|
|
- reply.setLikeCount((reply.getLikeCount() == null ? 0 : reply.getLikeCount()) + 1);
|
|
|
- reviewReplyMapper.updateById(reply);
|
|
|
- }
|
|
|
- }
|
|
|
- return R.success("点赞成功");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("点赞操作失败", e);
|
|
|
- return R.fail("点赞操作失败:" + e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public R<Boolean> auditReview(Integer reviewId, Integer auditStatus, String auditReason) {
|
|
|
- log.info("LawyerReviewServiceImpl.auditReview?reviewId={}, auditStatus={}, auditReason={}", reviewId, auditStatus, auditReason);
|
|
|
- try {
|
|
|
- LawyerReview review = this.getById(reviewId);
|
|
|
- if (review == null || review.getDeleteFlag() == 1) {
|
|
|
- return R.fail("评价不存在");
|
|
|
- }
|
|
|
-
|
|
|
- review.setAuditStatus(auditStatus);
|
|
|
- review.setAuditReason(auditReason);
|
|
|
- boolean updated = this.updateById(review);
|
|
|
- if (updated) {
|
|
|
- // 如果审核通过,更新律师评分统计
|
|
|
- if (auditStatus == 1) {
|
|
|
- updateLawyerRatingStats(review.getLawyerId());
|
|
|
- }
|
|
|
- return R.success("审核成功");
|
|
|
- }
|
|
|
- return R.fail("审核失败");
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("审核评价失败", e);
|
|
|
- return R.fail("审核评价失败:" + e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取回复列表(包含嵌套回复)
|
|
|
- */
|
|
|
- private List<LawyerReviewReplyVo> getReplyList(Integer reviewId, Integer currentUserId) {
|
|
|
- LambdaQueryWrapper<LawyerReviewReply> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(LawyerReviewReply::getReviewId, reviewId)
|
|
|
- .eq(LawyerReviewReply::getParentReplyId, 0)
|
|
|
- .eq(LawyerReviewReply::getDeleteFlag, 0)
|
|
|
- .orderByAsc(LawyerReviewReply::getCreatedTime);
|
|
|
- List<LawyerReviewReply> replies = reviewReplyMapper.selectList(queryWrapper);
|
|
|
-
|
|
|
- List<LawyerReviewReplyVo> voList = new ArrayList<>();
|
|
|
- for (LawyerReviewReply reply : replies) {
|
|
|
- LawyerReviewReplyVo vo = convertReplyToVo(reply, currentUserId);
|
|
|
- // 查询子回复
|
|
|
- LambdaQueryWrapper<LawyerReviewReply> childWrapper = new LambdaQueryWrapper<>();
|
|
|
- childWrapper.eq(LawyerReviewReply::getParentReplyId, reply.getId())
|
|
|
- .eq(LawyerReviewReply::getDeleteFlag, 0)
|
|
|
- .orderByAsc(LawyerReviewReply::getCreatedTime);
|
|
|
- List<LawyerReviewReply> childReplies = reviewReplyMapper.selectList(childWrapper);
|
|
|
- List<LawyerReviewReplyVo> childVoList = new ArrayList<>();
|
|
|
- for (LawyerReviewReply childReply : childReplies) {
|
|
|
- childVoList.add(convertReplyToVo(childReply, currentUserId));
|
|
|
- }
|
|
|
- vo.setChildReplies(childVoList);
|
|
|
- voList.add(vo);
|
|
|
- }
|
|
|
- return voList;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 转换回复为VO
|
|
|
- */
|
|
|
- private LawyerReviewReplyVo convertReplyToVo(LawyerReviewReply reply, Integer currentUserId) {
|
|
|
- LawyerReviewReplyVo vo = new LawyerReviewReplyVo();
|
|
|
- BeanUtils.copyProperties(reply, vo);
|
|
|
-
|
|
|
- // 查询回复用户信息
|
|
|
- LifeUser replyUser = lifeUserMapper.selectById(reply.getReplyUserId());
|
|
|
- if (replyUser != null) {
|
|
|
- vo.setReplyUserName(replyUser.getUserName());
|
|
|
- vo.setReplyUserImage(replyUser.getUserImage());
|
|
|
- }
|
|
|
-
|
|
|
- // 查询被回复用户信息
|
|
|
- if (reply.getTargetUserId() != null) {
|
|
|
- LifeUser targetUser = lifeUserMapper.selectById(reply.getTargetUserId());
|
|
|
- if (targetUser != null) {
|
|
|
- vo.setTargetUserName(targetUser.getUserName());
|
|
|
- vo.setTargetUserImage(targetUser.getUserImage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 查询是否已点赞
|
|
|
- if (currentUserId != null) {
|
|
|
- LambdaQueryWrapper<LawyerReviewLike> likeWrapper = new LambdaQueryWrapper<>();
|
|
|
- likeWrapper.eq(LawyerReviewLike::getReplyId, reply.getId())
|
|
|
- .eq(LawyerReviewLike::getLikeUserId, currentUserId)
|
|
|
- .eq(LawyerReviewLike::getDeleteFlag, 0);
|
|
|
- long likeCount = reviewLikeMapper.selectCount(likeWrapper);
|
|
|
- vo.setIsLiked(likeCount > 0 ? 1 : 0);
|
|
|
- } else {
|
|
|
- vo.setIsLiked(0);
|
|
|
- }
|
|
|
-
|
|
|
- return vo;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 更新律师评分统计
|
|
|
- */
|
|
|
- private void updateLawyerRatingStats(Integer lawyerId) {
|
|
|
- try {
|
|
|
- // 查询该律师的所有已审核通过的评价
|
|
|
- LambdaQueryWrapper<LawyerReview> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(LawyerReview::getLawyerId, lawyerId)
|
|
|
- .eq(LawyerReview::getDeleteFlag, 0)
|
|
|
- .eq(LawyerReview::getAuditStatus, 1); // 只统计已审核通过的
|
|
|
- List<LawyerReview> reviews = this.list(queryWrapper);
|
|
|
-
|
|
|
- if (reviews.isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // 计算平均分
|
|
|
- double totalRating = 0;
|
|
|
- int goodCount = 0;
|
|
|
- int mediumCount = 0;
|
|
|
- int badCount = 0;
|
|
|
-
|
|
|
- for (LawyerReview review : reviews) {
|
|
|
- totalRating += review.getOverallRating();
|
|
|
- if (review.getOverallRating() >= 4) {
|
|
|
- goodCount++;
|
|
|
- } else if (review.getOverallRating() >= 3) {
|
|
|
- mediumCount++;
|
|
|
- } else {
|
|
|
- badCount++;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- double avgRating = totalRating / reviews.size();
|
|
|
- int serviceScore = (int) (avgRating * 20); // 转换为0-100分
|
|
|
-
|
|
|
- // 更新律师信息
|
|
|
- LawyerUser lawyerUser = lawyerUserMapper.selectById(lawyerId);
|
|
|
- if (lawyerUser != null) {
|
|
|
- lawyerUser.setServiceScore(serviceScore);
|
|
|
- lawyerUser.setServiceCount(reviews.size());
|
|
|
- lawyerUser.setGoodReviewCount(goodCount);
|
|
|
- lawyerUser.setMediumReviewCount(mediumCount);
|
|
|
- lawyerUser.setBadReviewCount(badCount);
|
|
|
- lawyerUserMapper.updateById(lawyerUser);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("更新律师评分统计失败", e);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|