xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -77,7 +77,7 @@ UserCouponVo userCouponVo = new UserCouponVo(); // 获取用户所有优惠券 List<XpAppUserCoupon> couponList = xpAppUserCouponService.list(new LambdaQueryWrapper<XpAppUserCoupon>().eq(XpAppUserCoupon::getStatus, 1).eq(XpAppUserCoupon::getAppUserId,dto.getUserId()).apply("(FIND_IN_SET({0}, open_city_id) or open_city_id='0')", dto.getOpenCityId()) ); List<XpAppUserCoupon> couponList = xpAppUserCouponService.list(new LambdaQueryWrapper<XpAppUserCoupon>().eq(dto.getUserCouponId()!=null,XpAppUserCoupon::getId, dto.getUserCouponId()).eq(XpAppUserCoupon::getStatus, 1).eq(XpAppUserCoupon::getAppUserId,dto.getUserId()).apply("(FIND_IN_SET({0}, open_city_id) or open_city_id='0')", dto.getOpenCityId()) ); if(couponList.isEmpty()){ return R.ok(userCouponVo); } @@ -115,6 +115,7 @@ /** * 获取优惠券列表 */ xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/GetUserCouponDto.java
@@ -21,4 +21,7 @@ @ApiModelProperty(value = "开通城市id") private Long openCityId; @ApiModelProperty(value = "优惠券id") private Long userCouponId; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/map/RouteAndFareDto.java
@@ -27,6 +27,10 @@ private Integer routePlanRule; @ApiModelProperty(value = "优惠券id(是否指定使用某个优惠券)") private Long userCouponId; xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpAppUserCouponClientFallbackFactory.java
@@ -38,6 +38,7 @@ log.error("优惠券使用失败,原因: {}", cause.getMessage()); return R.fail("优惠券使用失败,"+cause.getMessage()); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java
@@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; @@ -28,4 +29,5 @@ @PostMapping("/inner/appUserCoupon/useUserCoupon") R<BigDecimal> useUserCoupon(@RequestBody UseUserCouponDto dto); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/UserCouponVo.java
@@ -12,4 +12,7 @@ @ApiModelProperty("优惠券金额") private Double money=0.0; @ApiModelProperty("1正常 2不满足") private Integer status=1; } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -242,27 +242,33 @@ ); } // 3. 并行执行远程服务调用 判断是否同一经营区域 CompletableFuture<R<Boolean>> diagnosisAreaFuture = CompletableFuture.supplyAsync( () -> xpMapClient.diagnosisArea(routeAndFareDto), executorService ); // 优惠券 XpPricingCardVo finalXpPricingCardVo = xpPricingCardVo; // 判断是否指定优惠券 if(routeAndFareDto.getUserCouponId()!=null){ R<UserCouponVo> coupon = xpAppUserCouponClient.getUserCoupon(new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(), routeAndFareDto.getOpenCityId(),routeAndFareDto.getUserCouponId())); } CompletableFuture<R<UserCouponVo>> couponFuture = CompletableFuture.supplyAsync( () -> { // 优惠券 return xpAppUserCouponClient.getUserCoupon( new GetUserCouponDto(Long.valueOf(userId), finalXpPricingCardVo.getTotalPrice(), routeAndFareDto.getOpenCityId()) 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( () -> xpMapClient.diagnosisArea(routeAndFareDto), executorService ); // 4. 等待所有并行任务完成并获取结果 R<Boolean> diagnosisResult = diagnosisAreaFuture.join(); R<UserCouponVo> couponResult = couponFuture.join();