From 67db945bbfd7ae08335652c30537a68e443deb78 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期日, 15 三月 2026 16:22:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java | 47 ++++++++++++++++++++++++++++++++---------------
1 files changed, 32 insertions(+), 15 deletions(-)
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
index baaae75..8b4311a 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -242,6 +242,31 @@
);
}
+ // 优惠券
+ XpPricingCardVo finalXpPricingCardVo = xpPricingCardVo;
+ R<UserCouponVo> coupon = null;
+ CompletableFuture<R<UserCouponVo>> couponFuture=null;
+ // 判断是否指定优惠券
+ if(routeAndFareDto.getUserCouponId()!=null){
+ coupon = xpAppUserCouponClient.getUserCoupon(new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(), routeAndFareDto.getOpenCityId(),routeAndFareDto.getUserCouponId()));
+ if(coupon.getCode()==200 && coupon.getData().getStatus()==2){
+ throw new ServiceException("优惠券不满足条件", I18nKeyConstant.COUPON_NOT_SATISFY);
+ }
+ }else {
+
+ couponFuture= CompletableFuture.supplyAsync(
+ () -> {
+ // 优惠券
+ return xpAppUserCouponClient.getUserCoupon(
+ new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(), routeAndFareDto.getOpenCityId(),null)
+// new GetUserCouponDto(Long.valueOf(userId), 1d, routeAndFareDto.getOpenCityId())
+ );
+ },
+ executorService
+ );
+ }
+
+
// 3. 并行执行远程服务调用 判断是否同一经营区域
CompletableFuture<R<Boolean>> diagnosisAreaFuture = CompletableFuture.supplyAsync(
@@ -249,23 +274,14 @@
executorService
);
-
- // 优惠券
- XpPricingCardVo finalXpPricingCardVo = xpPricingCardVo;
- CompletableFuture<R<UserCouponVo>> couponFuture = CompletableFuture.supplyAsync(
- () -> {
- // 优惠券
- return xpAppUserCouponClient.getUserCoupon(
- new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(), routeAndFareDto.getOpenCityId())
-// new GetUserCouponDto(Long.valueOf(userId), 1d, routeAndFareDto.getOpenCityId())
- );
- },
- executorService
- );
-
// 4. 等待所有并行任务完成并获取结果
R<Boolean> diagnosisResult = diagnosisAreaFuture.join();
- R<UserCouponVo> couponResult = couponFuture.join();
+ R<UserCouponVo> couponResult =null;
+ if(routeAndFareDto.getUserCouponId()!=null){
+ couponResult =coupon;
+ }else {
+ couponResult =couponFuture.join();
+ }
// 5. 处理诊断结果
if (diagnosisResult.getCode() != R.SUCCESS) {
@@ -557,6 +573,7 @@
}
Long orderId = addOrderR.getData();
xpOrder.setId(orderId);
+ xpOrder.setCouponId(dto.getUserCouponId());
// 静默处理 不推单
// if (isSilent) {
// log.info("订单取消次数达到上限,执行静默处理,不推单。");
--
Gitblit v1.7.1