From 6177f84ab1e80d093d03ec45d409cc8ac660f5d9 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 18 九月 2024 15:35:29 +0800
Subject: [PATCH] add:禁用手机号接口处理
---
src/main/java/com/mzl/flower/service/payment/OrderService.java | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 2b879a2..54dd68e 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -517,9 +517,15 @@
BigDecimal couponAmount = calculateCoupon(memberCouponAmount, t.getTotal()
, flowerAmount, t.getNum(), t.getPrice(), isLastOne, usedCouponAmount);
t.setCouponAmount(couponAmount);//每扎平摊的优惠券面值
- t.setRealPrice(t.getPrice().subtract(couponAmount));//退款时使用的真实成交价
+ t.setRealPrice(t.getPrice().subtract(couponAmount));//退款时使用的真实成交单价
- usedCouponAmount = usedCouponAmount.add(couponAmount.multiply(BigDecimal.valueOf(t.getNum())));
+ t.setCouponAmountTotal(couponAmount.multiply(BigDecimal.valueOf(t.getNum())));
+ if(isLastOne){
+ t.setCouponAmountTotal(memberCouponAmount.subtract(usedCouponAmount));
+ } else {
+ usedCouponAmount = usedCouponAmount.add(t.getCouponAmountTotal());
+ }
+ t.setRealTotal(t.getTotal().subtract(t.getCouponAmountTotal()));
t.create(userId);
orderItemMapper.insert(t);
@@ -581,9 +587,13 @@
BigDecimal subCoupon = couponAmount.subtract(usedCouponAmount);//占有的优惠券面值
return subCoupon.divide(BigDecimal.valueOf(num), 2, RoundingMode.HALF_UP);
}
- BigDecimal radio = itemTotalAmount.divide(totalAmount, 2, RoundingMode.HALF_UP);//计算该商品总价在订单中的占比
+
+ /*BigDecimal radio = itemTotalAmount.divide(totalAmount, 2, RoundingMode.HALF_UP);//计算该商品总价在订单中的占比
BigDecimal subCoupon = couponAmount.multiply(radio);//占有的优惠券面值
- return subCoupon.divide(BigDecimal.valueOf(num), 2, RoundingMode.HALF_UP);
+ return subCoupon.divide(BigDecimal.valueOf(num), 2, RoundingMode.HALF_UP);*/
+
+ //不能分步计算,分步计算会有精度问题
+ return couponAmount.multiply(itemTotalAmount).divide(totalAmount.multiply(BigDecimal.valueOf(num)), 2, RoundingMode.HALF_UP);
}
private CouponRecordDO useCouponRecord(String orderId, BigDecimal amount, String couponRecordId){
@@ -928,8 +938,9 @@
if(llc == null){
llc = new OrderCheckLocationListDTO();
BeanUtils.copyProperties(c, llc);
- rMap.put(locationId, llc);
+ llc.setTotalAmount(new BigDecimal(0));
+ rMap.put(locationId, llc);
result.add(llc);
}
--
Gitblit v1.9.3