From be23a0c7e9b67abe67e6228823bbc0e22088cc49 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 02 四月 2026 20:55:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderEvaluateServiceImpl.java |   72 +++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 30 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderEvaluateServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderEvaluateServiceImpl.java
index a433a02..9aabf99 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderEvaluateServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderEvaluateServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.api.dto.account.UcUserInfo;
 import com.xiaopeng.api.feignClient.account.UserResourcesClient;
@@ -54,6 +55,31 @@
 
     @Override
     public PageInfo<OrderEvaluatePageVO> pageList(OrderEvaluatePageQuery query) {
+        List<Long> vehicleIdsFilter = null;
+        if (StringUtils.isNotBlank(query.getPlateNumber())) {
+            R<List<XpVehicle>> vehicleResult = xpVehicleClient.listByPlateNumber(query.getPlateNumber());
+            if (vehicleResult == null || CollectionUtils.isEmpty(vehicleResult.getData())) {
+                return buildEmptyEvaluatePage(query);
+            }
+            vehicleIdsFilter = vehicleResult.getData().stream()
+                    .map(XpVehicle::getId)
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(vehicleIdsFilter)) {
+                return buildEmptyEvaluatePage(query);
+            }
+        }
+
+        Long appUserIdFilter = null;
+        if (StringUtils.isNotBlank(query.getPhoneNumber())) {
+            UcUserInfo userByMobile = userResourcesClient.getUserByMobile(query.getPhoneNumber());
+            if (userByMobile == null || userByMobile.getUid() == null) {
+                return buildEmptyEvaluatePage(query);
+            }
+            appUserIdFilter = userByMobile.getUid();
+        }
+
         // 1. 构建查询条件
         LambdaQueryWrapper<XpOrderEvaluate> wrapper = new LambdaQueryWrapper<>();
 
@@ -70,19 +96,22 @@
         if (Objects.nonNull(query.getOrderRating())) {
             wrapper.eq(XpOrderEvaluate::getOrderRating, query.getOrderRating());
         }
+        if (!CollectionUtils.isEmpty(vehicleIdsFilter)) {
+            wrapper.in(XpOrderEvaluate::getVehicleId, vehicleIdsFilter);
+        }
+        if (Objects.nonNull(appUserIdFilter)) {
+            wrapper.eq(XpOrderEvaluate::getAppUserId, appUserIdFilter);
+        }
 
         // 排序:按评价时间降序
         wrapper.orderByDesc(XpOrderEvaluate::getEvaluateTime);
 
         // 2. 分页查询
         PageInfo<XpOrderEvaluate> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
-        PageInfo<XpOrderEvaluate> evaluatePage = this.page(pageInfo, wrapper);
+        Page<XpOrderEvaluate> evaluatePage = this.page(pageInfo, wrapper);
 
         if (CollectionUtils.isEmpty(evaluatePage.getRecords())) {
-            PageInfo<OrderEvaluatePageVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
-            resultPage.setTotal(0L);
-            resultPage.setRecords(new ArrayList<>());
-            return resultPage;
+            return buildEmptyEvaluatePage(query);
         }
 
         // 3. 收集关联ID
@@ -107,16 +136,22 @@
         Map<Long, XpVehicle> vehicleMap = batchGetVehicles(vehicleIds);
         Map<Long, XpOrder> orderMap = batchGetOrders(orderIds);
 
-        // 5. 根据查询条件过滤(手机号、车牌号)
+        // 5. 组装 VO
         List<OrderEvaluatePageVO> voList = evaluatePage.getRecords().stream()
                 .map(evaluate -> convertToPageVO(evaluate, userInfoMap, vehicleMap, orderMap))
-                .filter(vo -> filterByQuery(vo, query))
                 .collect(Collectors.toList());
 
         // 6. 返回分页结果
         PageInfo<OrderEvaluatePageVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
         resultPage.setTotal(evaluatePage.getTotal());
         resultPage.setRecords(voList);
+        return resultPage;
+    }
+
+    private PageInfo<OrderEvaluatePageVO> buildEmptyEvaluatePage(OrderEvaluatePageQuery query) {
+        PageInfo<OrderEvaluatePageVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        resultPage.setTotal(0L);
+        resultPage.setRecords(new ArrayList<>());
         return resultPage;
     }
 
@@ -225,28 +260,5 @@
         }
 
         return vo;
-    }
-
-    /**
-     * 根据查询条件过滤
-     */
-    private boolean filterByQuery(OrderEvaluatePageVO vo, OrderEvaluatePageQuery query) {
-        // 手机号过滤
-        if (StringUtils.isNotBlank(query.getPhoneNumber())) {
-            if (StringUtils.isBlank(vo.getPhoneNumber()) ||
-                    !vo.getPhoneNumber().contains(query.getPhoneNumber())) {
-                return false;
-            }
-        }
-
-        // 车牌号过滤
-        if (StringUtils.isNotBlank(query.getPlateNumber())) {
-            if (StringUtils.isBlank(vo.getPlateNumber()) ||
-                    !vo.getPlateNumber().contains(query.getPlateNumber())) {
-                return false;
-            }
-        }
-
-        return true;
     }
 }

--
Gitblit v1.7.1