| | |
| | | |
| | | 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; |
| | |
| | | |
| | | @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<>(); |
| | | |
| | |
| | | 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 |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |