满减活动 门槛计算

This commit is contained in:
2025-11-18 14:58:35 +08:00
parent 23a06549db
commit 106968fb1f

View File

@@ -870,31 +870,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
}
/**
* 满减券/折扣券 门槛计算
*
* @param couponFoodIds 门槛商品
*/
private void thresholdCalculate(List<OrderDetail> orderDetails, boolean isAllFoods, List<Long> couponFoodIds, BigDecimal thresholdAmount) {
if (thresholdAmount.compareTo(BigDecimal.ZERO) == 0) {
return;
}
BigDecimal foodsAmount = BigDecimal.ZERO;
for (OrderDetail detail : orderDetails) {
if ((isAllFoods || couponFoodIds.contains(detail.getProductId()))
&& detail.getUnitPrice().compareTo(BigDecimal.ZERO) > 0
&& detail.getNum().subtract(detail.getReturnNum()).subtract(detail.getCouponNum()).compareTo(BigDecimal.ONE) >= 0) {
foodsAmount = foodsAmount.add(detail.getPayAmount());
if (foodsAmount.compareTo(thresholdAmount) >= 0) {
return;
}
}
}
if (foodsAmount.compareTo(thresholdAmount) < 0) {
throw new CzgException("优惠券未达到门槛金额");
}
}
/**
* 获取价格排序后的orderDetail
*
@@ -924,7 +899,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
if (orderDetail.getIsGift() == 1 || orderDetail.getIsTemporary() == 1) {
continue;
}
originalPrice = originalPrice.add(orderDetail.getPayAmount());
if (orderDetail.getDiscountSaleAmount().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal num = orderDetail.getNum().subtract(orderDetail.getReturnNum());
//单品改价 按原价计算门槛金额
originalPrice = originalPrice.add(orderDetail.getPrice().multiply(num).setScale(2, RoundingMode.HALF_UP));
} else {
originalPrice = originalPrice.add(orderDetail.getPayAmount());
}
}
originalPrice = originalPrice.add(packPrice).add(seatPrice);
for (MkDiscountThreshold threshold : discountAct.getThresholds()) {