From 4ccb5635575617368ede058ce4eaee5296788477 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 15 Nov 2025 15:54:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(pricing):=20=E8=B0=83=E6=95=B4=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E8=AE=A1=E7=AE=97=E8=AF=B7=E6=B1=82=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=B9=B6=E5=AE=8C=E5=96=84=E4=BC=98=E6=83=A0=E5=88=B8=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 previewOnly 默认值从 false 改为 true - 新增 orderId 字段用于实际使用优惠时的订单标识 - 实现优惠券使用标记逻辑,调用 couponService.useCoupon - 添加优惠券使用日志记录,包括 couponId、userId 和 orderId - 补充 scenicId 参数转换处理逻辑 --- .../pricing/dto/PriceCalculationRequest.java | 9 +++++++-- .../service/impl/PriceCalculationServiceImpl.java | 15 +++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) 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);