限时折扣 与会员价

This commit is contained in:
wangw 2025-10-28 11:16:19 +08:00
parent da7ddb8128
commit 0d2a930ae8
1 changed files with 7 additions and 13 deletions

View File

@ -943,21 +943,15 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
if (limitRate.getFoodType() == 2 && !limitRate.getFoodIds().contains(orderDetail.getProductId())) {
throw new CzgException("限时折扣使用失败,商品" + orderDetail.getProductName() + "不享受限时折扣");
}
if (!isVipPrice || "limit-time".equals(limitRate.getDiscountPriority())) {
if (orderDetail.getPrice().compareTo(BigDecimal.ZERO) == 0) {
orderDetail.setUnitPrice(orderDetail.getPrice());
} else {
// 确保最终结果保留两位小数并向上取整
orderDetail.setUnitPrice(
orderDetail.getPrice()
.multiply(new BigDecimal(limitRate.getDiscountRate()).divide(new BigDecimal("100"), 2, RoundingMode.CEILING))
.setScale(2, RoundingMode.CEILING)
);
}
if (orderDetail.getPrice().compareTo(BigDecimal.ZERO) == 0) {
orderDetail.setUnitPrice(orderDetail.getPrice());
} else {
// 确保最终结果保留两位小数并向上取整
orderDetail.setUnitPrice(
(orderDetail.getMemberPrice() == null || orderDetail.getMemberPrice().compareTo(BigDecimal.ZERO) <= 0)
? orderDetail.getPrice() : orderDetail.getMemberPrice());
orderDetail.getPrice()
.multiply(new BigDecimal(limitRate.getDiscountRate()).divide(new BigDecimal("100"), 2, RoundingMode.CEILING))
.setScale(2, RoundingMode.CEILING)
);
}
} else {
if (isVipPrice) {