diff --git a/src/main/java/com/ycwl/basic/pricing/dto/PriceCalculationRequest.java b/src/main/java/com/ycwl/basic/pricing/dto/PriceCalculationRequest.java index 95633347..1752d3d7 100644 --- a/src/main/java/com/ycwl/basic/pricing/dto/PriceCalculationRequest.java +++ b/src/main/java/com/ycwl/basic/pricing/dto/PriceCalculationRequest.java @@ -44,9 +44,14 @@ public class PriceCalculationRequest { * 是否自动使用券码优惠 */ private Boolean autoUseVoucher = true; - + /** * 是否仅预览优惠(不实际使用) */ - private Boolean previewOnly = false; + private Boolean previewOnly = true; + + /** + * 订单ID(在实际使用优惠时必填) + */ + private String orderId; } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/pricing/service/impl/PriceCalculationServiceImpl.java b/src/main/java/com/ycwl/basic/pricing/service/impl/PriceCalculationServiceImpl.java index 2b1231a0..969b9f58 100644 --- a/src/main/java/com/ycwl/basic/pricing/service/impl/PriceCalculationServiceImpl.java +++ b/src/main/java/com/ycwl/basic/pricing/service/impl/PriceCalculationServiceImpl.java @@ -402,8 +402,19 @@ public class PriceCalculationServiceImpl implements IPriceCalculationService { log.info("已标记券码为使用: {}", result.getUsedVoucher().getVoucherCode()); } - // 优惠券的使用标记由原有的CouponService处理 - // 这里不需要额外处理 + // 标记优惠券为已使用 + if (result.getUsedCoupon() != null && result.getUsedCoupon().getCouponId() != null) { + CouponUseRequest couponUseRequest = new CouponUseRequest(); + couponUseRequest.setCouponId(result.getUsedCoupon().getCouponId()); + couponUseRequest.setUserId(request.getUserId()); + couponUseRequest.setOrderId(request.getOrderId()); + couponUseRequest.setDiscountAmount(result.getUsedCoupon().getActualDiscountAmount()); + couponUseRequest.setScenicId(request.getScenicId() != null ? String.valueOf(request.getScenicId()) : null); + + couponService.useCoupon(couponUseRequest); + log.info("已标记优惠券为使用: couponId={}, userId={}, orderId={}", + result.getUsedCoupon().getCouponId(), request.getUserId(), request.getOrderId()); + } } catch (Exception e) { log.error("标记优惠使用状态时发生异常", e);