From 0bdbf7baf1b225571cd2910f273ce5cfdb4cf2c7 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期三, 18 九月 2024 17:47:05 +0800
Subject: [PATCH] 结算列表明细 收货日期
---
src/main/java/com/mzl/flower/service/payment/OrderService.java | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 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 8994dcc..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){
@@ -802,10 +812,9 @@
orderIds.add(o.getId());
}
- List<OrderItem> itemList = orderItemMapper.selectList(
- new QueryWrapper<OrderItem>().in("order_id", orderIds));
+ List<OrderItemListDTO> itemList = orderItemMapper.getOrderItems(orderIds);
Map<String, List<OrderItemListDTO>> map = new HashMap<>();
- for (OrderItem oi : itemList) {
+ for (OrderItemListDTO oi : itemList) {
String orderId = oi.getOrderId();
List<OrderItemListDTO> ll = map.computeIfAbsent(orderId, k -> new ArrayList<>());
OrderItemListDTO d = new OrderItemListDTO();
@@ -929,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