From d7c2c5b8304919463135cb6c8674da9830efc27c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 8 Jan 2026 17:11:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(coupon):=20=E4=BF=AE=E5=A4=8D=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E9=80=82=E7=94=A8=E5=95=86=E5=93=81=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=B8=BA=E7=A9=BA=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加空数组检查,当适用商品类型为空时不进行过滤 - 修复商品类型为空时直接返回全部商品总价的逻辑 - 保持原有商品类型过滤功能的完整性 --- .../service/impl/CouponServiceImpl.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ycwl/basic/pricing/service/impl/CouponServiceImpl.java b/src/main/java/com/ycwl/basic/pricing/service/impl/CouponServiceImpl.java index 75250121..7c3644a8 100644 --- a/src/main/java/com/ycwl/basic/pricing/service/impl/CouponServiceImpl.java +++ b/src/main/java/com/ycwl/basic/pricing/service/impl/CouponServiceImpl.java @@ -125,12 +125,17 @@ public class CouponServiceImpl implements ICouponService { List applicableProductTypes = objectMapper.readValue( coupon.getApplicableProducts(), new TypeReference>() {}); - discountableProducts = products.stream() - .filter(product -> applicableProductTypes.contains(product.getProductType().getCode())) - .toList(); + // 空数组表示不限制商品类型,适用于所有商品 + if (applicableProductTypes == null || applicableProductTypes.isEmpty()) { + // 不过滤,使用全部商品 + } else { + discountableProducts = products.stream() + .filter(product -> applicableProductTypes.contains(product.getProductType().getCode())) + .toList(); - if (discountableProducts.isEmpty()) { - return false; + if (discountableProducts.isEmpty()) { + return false; + } } } catch (Exception e) { log.error("解析适用商品类型失败", e); @@ -198,6 +203,13 @@ public class CouponServiceImpl implements ICouponService { List applicableProductTypes = objectMapper.readValue( coupon.getApplicableProducts(), new TypeReference>() {}); + // 空数组表示不限制商品类型,返回所有商品总价 + if (applicableProductTypes == null || applicableProductTypes.isEmpty()) { + return products.stream() + .map(ProductItem::getSubtotal) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + // 计算适用商品的总价 return products.stream() .filter(product -> applicableProductTypes.contains(product.getProductType().getCode()))