| | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Arrays; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | .eq(TourOrder::getStatus, OrderStatus.COMPLETED.getCode()) |
| | | .isNotNull(TourOrder::getGuideEarningAmount) |
| | | .and(wrapper -> wrapper.isNull(TourOrder::getRefundStatus) |
| | | .or().ne(TourOrder::getRefundStatus, RefundStatus.REFUNDED.getCode())) |
| | | .like(StringUtils.hasText(serviceType), TourOrder::getOrderType, serviceType) |
| | | .or().in(TourOrder::getRefundStatus, |
| | | Arrays.asList(RefundStatus.NONE.getCode(), |
| | | RefundStatus.REFUND_FAILED.getCode()))) |
| | | .eq(StringUtils.hasText(scenicName), TourOrder::getScenicName, |
| | | StringUtils.hasText(scenicName) ? scenicName.trim() : null) |
| | | .ge(date != null, TourOrder::getCompletedAt, date == null ? null : date.atStartOfDay()) |
| | |
| | | date == null ? null : date.plusDays(1).atStartOfDay()) |
| | | .orderByDesc(TourOrder::getCompletedAt) |
| | | .orderByDesc(TourOrder::getId); |
| | | if (StringUtils.hasText(serviceType)) { |
| | | query.in(TourOrder::getOrderType, resolveOrderTypes(serviceType)); |
| | | } |
| | | Page<TourOrder> result = orderMapper.selectPage(new Page<TourOrder>(safePage, safeSize), query); |
| | | List<GuideEarningItemResponse> records = result.getRecords().stream() |
| | | .map(GuideEarningItemResponse::new) |
| | |
| | | private void validateServiceType(String serviceType) { |
| | | if (StringUtils.hasText(serviceType) |
| | | && !"QUICK".equals(serviceType) |
| | | && !"PREMIUM".equals(serviceType)) { |
| | | throw new BusinessException(400, "讲解类型不支持"); |
| | | && !"PREMIUM".equals(serviceType) |
| | | && !"GROUP_QUICK".equals(serviceType) |
| | | && !"GROUP_PREMIUM".equals(serviceType) |
| | | && !"PRIVATE_QUICK".equals(serviceType) |
| | | && !"PRIVATE_PREMIUM".equals(serviceType)) { |
| | | throw new BusinessException(400, "订单类型不支持"); |
| | | } |
| | | } |
| | | |
| | | private List<String> resolveOrderTypes(String serviceType) { |
| | | if ("QUICK".equals(serviceType)) { |
| | | return Arrays.asList("GROUP_QUICK", "PRIVATE_QUICK"); |
| | | } |
| | | if ("PREMIUM".equals(serviceType)) { |
| | | return Arrays.asList("GROUP_PREMIUM", "PRIVATE_PREMIUM"); |
| | | } |
| | | return Collections.singletonList(serviceType); |
| | | } |
| | | |
| | | private BigDecimal safeAmount(BigDecimal amount) { |
| | | return amount == null ? BigDecimal.ZERO.setScale(2) : amount; |
| | | } |