qxy il y a 2 semaines
Parent
commit
cc15ed5674

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

@@ -88,5 +88,8 @@ public class OrderReviewVo {
 
     @ApiModelProperty(value = "逻辑删除")
     private Integer deleteFlag;
+
+    @ApiModelProperty(value = "订单申诉状态")
+    private Integer isAppealed;
 }
 

+ 8 - 0
alien-entity/src/main/java/shop/alien/mapper/OrderReviewMapper.java

@@ -128,5 +128,13 @@ public interface OrderReviewMapper extends BaseMapper<OrderReview> {
      * @return 有图评价数量
      */
     Integer getImageReviewCountByLawyerUserId(@Param("lawyerUserId") Integer lawyerUserId);
+
+    /**
+     * 根据订单ID查询关联评价
+     *
+     * @param orderId 订单ID
+     * @return 评价信息
+     */
+    OrderReviewVo getOrderEvaluation(@Param("orderId") Integer orderId);
 }
 

+ 29 - 0
alien-entity/src/main/resources/mapper/OrderReviewMapper.xml

@@ -25,6 +25,7 @@
         <result column="comment_count" property="commentCount" />
         <result column="is_liked" property="isLiked" />
         <result column="created_time" property="createdTime" />
+        <result column="is_appealed" property="isAppealed" />
     </resultMap>
 
     <!-- 分页查询评价列表(包含用户和律师信息) -->
@@ -362,5 +363,33 @@
         ORDER BY orv.created_time DESC
     </select>
 
+    <!-- 根据订单ID查询评价 -->
+    <select id="getOrderEvaluation" resultMap="OrderReviewVoResultMap">
+        SELECT
+            orv.id,
+            orv.order_id,
+            orv.order_number,
+            orv.user_id,
+            orv.lawyer_user_id,
+            orv.overall_rating,
+            orv.service_attitude_rating,
+            orv.response_time_rating,
+            orv.professional_ability_rating,
+            orv.review_content,
+            orv.review_images,
+            orv.is_anonymous,
+            orv.like_count,
+            orv.comment_count,
+            orv.created_time,
+            lco.is_appealed,
+            lu.user_name
+        FROM lawyer_order_review orv
+        INNER JOIN lawyer_consultation_order lco ON lco.id = orv.order_id AND lco.delete_flag = 0
+        LEFT JOIN life_user lu ON lu.id = orv.user_id AND lu.delete_flag = 0
+        WHERE orv.delete_flag = 0
+        AND orv.order_id = #{orderId}
+        LIMIT 1
+    </select>
+
 </mapper>
 

+ 15 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/controller/OrderReviewController.java

@@ -260,5 +260,20 @@ public class OrderReviewController {
         }
         return orderReviewService.getReviewListByLawyerAndType(page, size, lawyerUserId, type, currentUserId);
     }
+
+    @ApiOperation("根据订单ID查询订单关联的评价")
+    @ApiOperationSupport(order = 13)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderId", value = "订单ID", dataType = "int", paramType = "query", required = true)
+    })
+    @GetMapping("/getByOrderId")
+    public R<OrderReviewVo> queryReviewByOrderId(
+            @RequestParam Integer orderId) {
+        log.info("OrderReviewController.queryReviewByOrderId?orderId={}", orderId);
+        if (orderId == null) {
+            return R.fail("订单ID不能为空");
+        }
+        return orderReviewService.getOrderEvaluation(orderId);
+    }
 }
 

+ 8 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/OrderReviewService.java

@@ -134,5 +134,13 @@ public interface OrderReviewService extends IService<OrderReview> {
      */
     R<shop.alien.entity.store.vo.LawyerReviewStatisticsVo> getLawyerReviewStatistics(Integer lawyerUserId);
 
+    /**
+     * 根据订单ID查询关联评价
+     *
+     * @param orderId 订单ID
+     * @return R<OrderReviewVo>
+     */
+    R<OrderReviewVo> getOrderEvaluation(Integer orderId);
+
 }
 

+ 29 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java

@@ -661,5 +661,34 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
             return R.fail("获取统计数据失败");
         }
     }
+
+    @Override
+    public R<OrderReviewVo> getOrderEvaluation(Integer orderId) {
+        log.info("OrderReviewServiceImpl.getOrderEvaluation?orderId={}", orderId);
+
+        if (orderId == null) {
+            return R.fail("订单ID不能为空");
+        }
+
+        OrderReviewVo reviewVo = orderReviewMapper.getOrderEvaluation(orderId);
+        if (reviewVo == null) {
+            return R.fail("该订单暂无评价");
+        }
+
+        // 处理评价图片:从JSON字符串解析为List
+        if (reviewVo.getReviewImagesJson() != null && !reviewVo.getReviewImagesJson().trim().isEmpty()) {
+            try {
+                List<String> images = JSON.parseArray(reviewVo.getReviewImagesJson(), String.class);
+                reviewVo.setReviewImages(images != null ? images : new ArrayList<>());
+            } catch (Exception e) {
+                log.warn("解析评价图片失败:{}", e.getMessage());
+                reviewVo.setReviewImages(new ArrayList<>());
+            }
+        } else {
+            reviewVo.setReviewImages(new ArrayList<>());
+        }
+
+        return R.data(reviewVo);
+    }
 }