From 014f61ddaa874b1a2ac62968f8381750a7f8b920 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期四, 19 九月 2024 15:13:06 +0800 Subject: [PATCH] update 积分查询 --- 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