ldz 3 veckor sedan
förälder
incheckning
5355d1eee2

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/OrderReviewVo.java

@@ -66,6 +66,10 @@ public class OrderReviewVo {
     @ApiModelProperty(value = "评价图片列表")
     @ApiModelProperty(value = "评价图片列表")
     private List<String> reviewImages;
     private List<String> reviewImages;
 
 
+    @ApiModelProperty(value = "评价图片JSON字符串(内部使用,不对外暴露)")
+    @com.fasterxml.jackson.annotation.JsonIgnore
+    private String reviewImagesJson;
+
     @ApiModelProperty(value = "是否匿名评价,0:否,1:是")
     @ApiModelProperty(value = "是否匿名评价,0:否,1:是")
     private Integer isAnonymous;
     private Integer isAnonymous;
 
 

+ 9 - 1
alien-entity/src/main/java/shop/alien/mapper/ReviewCommentMapper.java

@@ -27,7 +27,7 @@ public interface ReviewCommentMapper extends BaseMapper<ReviewComment> {
     List<ReviewCommentVo> getCommentListByReviewId(@Param("reviewId") Integer reviewId, @Param("currentUserId") Integer currentUserId);
     List<ReviewCommentVo> getCommentListByReviewId(@Param("reviewId") Integer reviewId, @Param("currentUserId") Integer currentUserId);
 
 
     /**
     /**
-     * 根据评价ID查询评论数量
+     * 根据评价ID查询评论数量(只统计首评论)
      *
      *
      * @param reviewId 评价ID
      * @param reviewId 评价ID
      * @return 评论数量
      * @return 评论数量
@@ -35,6 +35,14 @@ public interface ReviewCommentMapper extends BaseMapper<ReviewComment> {
     Integer getCommentCountByReviewId(@Param("reviewId") Integer reviewId);
     Integer getCommentCountByReviewId(@Param("reviewId") Integer reviewId);
 
 
     /**
     /**
+     * 根据评价ID查询总评论数量(包括首评论和子评论)
+     *
+     * @param reviewId 评价ID
+     * @return 总评论数量
+     */
+    Integer getTotalCommentCountByReviewId(@Param("reviewId") Integer reviewId);
+
+    /**
      * 根据首评ID查询回复列表(包含用户信息)
      * 根据首评ID查询回复列表(包含用户信息)
      *
      *
      * @param headId 首评ID
      * @param headId 首评ID

+ 5 - 24
alien-lawyer/src/main/java/shop/alien/lawyer/controller/OrderReviewController.java

@@ -64,33 +64,16 @@ public class OrderReviewController {
         return orderReviewService.getReviewList(page, size, orderId, lawyerUserId, userId, currentUserId);
         return orderReviewService.getReviewList(page, size, orderId, lawyerUserId, userId, currentUserId);
     }
     }
 
 
-    @ApiOperation("获取评价详情(包含评论和回复)")
-    @ApiOperationSupport(order = 3)
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "reviewId", value = "评价ID", dataType = "int", paramType = "query", required = true),
-            @ApiImplicitParam(name = "currentUserId", value = "当前用户ID(用于判断是否已点赞)", dataType = "int", paramType = "query")
-    })
-    @GetMapping("/detail/reviewId")
-    public R<OrderReviewDetailVo> getReviewDetail(
-            @RequestParam Integer reviewId,
-            @RequestParam(required = false) Integer currentUserId) {
-        log.info("OrderReviewController.getReviewDetail?reviewId={}, currentUserId={}", reviewId, currentUserId);
-        return orderReviewService.getReviewDetail(reviewId, currentUserId);
-    }
-
     @ApiOperation("删除评价(删除评价时,会级联删除该评价下的所有评论和回复)")
     @ApiOperation("删除评价(删除评价时,会级联删除该评价下的所有评论和回复)")
     @ApiOperationSupport(order = 4)
     @ApiOperationSupport(order = 4)
     @ApiImplicitParams({
     @ApiImplicitParams({
-    @ApiImplicitParam(name = "reviewId", value = "评价ID", dataType = "int", paramType = "query", required = true),
-    @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "int", paramType = "query", required = true)
-             })
+            @ApiImplicitParam(name = "reviewId", value = "评价ID", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "userId", value = "用户ID(可选,有值时只能删除自己的评价,为空时允许删除任何评价)", dataType = "int", paramType = "query", required = false)
+    })
     @PostMapping("/delete/reviewId")
     @PostMapping("/delete/reviewId")
-    public R<Boolean> deleteReview( @RequestParam Integer reviewId,
-                                    @RequestParam Integer userId) {
+    public R<Boolean> deleteReview(@RequestParam Integer reviewId,
+                                   @RequestParam(required = false) Integer userId) {
         log.info("OrderReviewController.deleteReview?reviewId={}, userId={}", reviewId, userId);
         log.info("OrderReviewController.deleteReview?reviewId={}, userId={}", reviewId, userId);
-        if (userId == null) {
-            return R.fail("用户未登录");
-        }
         return orderReviewService.deleteReview(reviewId, userId);
         return orderReviewService.deleteReview(reviewId, userId);
     }
     }
 
 
@@ -109,8 +92,6 @@ public class OrderReviewController {
     }
     }
 
 
 
 
-
-
     @ApiOperation("分页查询我的评价列表")
     @ApiOperation("分页查询我的评价列表")
     @ApiOperationSupport(order = 6)
     @ApiOperationSupport(order = 6)
     @ApiImplicitParams({
     @ApiImplicitParams({

+ 23 - 17
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java

@@ -33,7 +33,6 @@ import shop.alien.mapper.ReviewCommentMapper;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
-import org.springframework.util.CollectionUtils;
 
 
 /**
 /**
  * 订单评价 服务实现类
  * 订单评价 服务实现类
@@ -285,9 +284,6 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
         if (reviewId == null) {
         if (reviewId == null) {
             return R.fail("评价ID不能为空");
             return R.fail("评价ID不能为空");
         }
         }
-        if (userId == null) {
-            return R.fail("用户ID不能为空");
-        }
 
 
         // 查询评价
         // 查询评价
         OrderReview review = this.getById(reviewId);
         OrderReview review = this.getById(reviewId);
@@ -295,9 +291,11 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
             return R.fail("评价不存在");
             return R.fail("评价不存在");
         }
         }
 
 
-        // 验证是否为评价用户
-        if (!review.getUserId().equals(userId)) {
-            return R.fail("只能删除自己的评价");
+        // 当userId有值时,验证是否为评价用户(只能删除自己的评价)
+        if (userId != null) {
+            if (!review.getUserId().equals(userId)) {
+                return R.fail("只能删除自己的评价");
+            }
         }
         }
 
 
         // 查询该评价下的所有评论
         // 查询该评价下的所有评论
@@ -327,18 +325,29 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
                         .eq(ReviewComment::getHeadType, 1)
                         .eq(ReviewComment::getHeadType, 1)
                         .eq(ReviewComment::getDeleteFlag, 0);
                         .eq(ReviewComment::getDeleteFlag, 0);
                 replyUpdateWrapper.set(ReviewComment::getDeleteFlag, 1);
                 replyUpdateWrapper.set(ReviewComment::getDeleteFlag, 1);
-                replyUpdateWrapper.set(ReviewComment::getUpdatedUserId, userId);
+                if (userId != null) {
+                    replyUpdateWrapper.set(ReviewComment::getUpdatedUserId, userId);
+                }
                 replyUpdateWrapper.set(ReviewComment::getUpdatedTime, new Date());
                 replyUpdateWrapper.set(ReviewComment::getUpdatedTime, new Date());
                 reviewCommentService.remove(replyUpdateWrapper);
                 reviewCommentService.remove(replyUpdateWrapper);
                 
                 
                 // 删除评论
                 // 删除评论
                 comment.setDeleteFlag(1);
                 comment.setDeleteFlag(1);
-                comment.setUpdatedUserId(userId);
+                if (userId != null) {
+                    comment.setUpdatedUserId(userId);
+                }
                 comment.setUpdatedTime(new Date());
                 comment.setUpdatedTime(new Date());
                 reviewCommentService.removeById(comment.getId());
                 reviewCommentService.removeById(comment.getId());
             }
             }
             
             
-            log.info("删除评价成功,评价ID={}", reviewId);
+            // 更新律师评分
+            updateLawyerServiceScore(review.getLawyerUserId());
+
+            if (userId != null) {
+                log.info("删除评价成功,评价ID={}, 操作人ID={}", reviewId, userId);
+            } else {
+                log.info("管理员删除评价成功,评价ID={}", reviewId);
+            }
             return R.data(true, "删除成功");
             return R.data(true, "删除成功");
         } else {
         } else {
             log.error("删除评价失败,评价ID={}", reviewId);
             log.error("删除评价失败,评价ID={}", reviewId);
@@ -505,17 +514,14 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
         if (!CollectionUtils.isEmpty(records)) {
         if (!CollectionUtils.isEmpty(records)) {
             // 删除点赞记录(逻辑删除)
             // 删除点赞记录(逻辑删除)
             for (LifeLikeRecord record : records) {
             for (LifeLikeRecord record : records) {
-                record.setDeleteFlag(1);
-                record.setUpdatedUserId(userId);
-                record.setUpdatedTime(new Date());
-                lifeLikeRecordMapper.updateById(record);
+                int updateResult = lifeLikeRecordMapper.deleteById(record.getId());
+                log.info("逻辑删除点赞记录,recordId={}, updateResult={}", record.getId(), updateResult);
             }
             }
 
 
-            // 更新评价点赞数
+            // 更新评价点赞数(移除 gt 条件,确保即使为 0 也能正确更新)
             LambdaUpdateWrapper<OrderReview> updateWrapper = new LambdaUpdateWrapper<>();
             LambdaUpdateWrapper<OrderReview> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(OrderReview::getId, reviewId);
             updateWrapper.eq(OrderReview::getId, reviewId);
-            updateWrapper.gt(OrderReview::getLikeCount, 0);
-            updateWrapper.setSql("like_count = like_count - 1");
+            updateWrapper.setSql("like_count = GREATEST(0, like_count - 1)");
             int result = orderReviewMapper.update(null, updateWrapper);
             int result = orderReviewMapper.update(null, updateWrapper);
 
 
             if (result > 0) {
             if (result > 0) {