From ec27167f8a6b2304631b30a6dd64f770f340b955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 14:35:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E6=9D=A1=E9=80=80=E6=AC=BEdeta?= =?UTF-8?q?il=E5=90=88=E5=B9=B6=E4=B8=BA=E5=8D=95=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 4e63053..e15364f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -22,10 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -178,9 +175,9 @@ public class OrderService { orderVo.setTime(orderInfo.getCreatedAt()); if (orderInfo.getStatus().equals("paying") || orderInfo.getStatus().equals("unpaid")) { Long totalSeconds = orderInfo.getCreatedAt() + 15 * 60 * 1000l - System.currentTimeMillis(); - if(totalSeconds>0){ - orderVo.setExpiredMinutes(totalSeconds/1000 / 60); - orderVo.setExpiredSeconds(totalSeconds/1000 % 60); + if (totalSeconds > 0) { + orderVo.setExpiredMinutes(totalSeconds / 1000 / 60); + orderVo.setExpiredSeconds(totalSeconds / 1000 % 60); } } orderVo.setPayAmount(orderInfo.getOrderAmount()); @@ -224,21 +221,28 @@ public class OrderService { if (!"unpaid".equals(orderInfo.getStatus())) { HashMap detailHashMap = new HashMap<>(); list.forEach(item -> { - TbOrderDetail orderDetail = detailHashMap.get(item.getCartId().toString()); - if (orderDetail == null) { - detailHashMap.put(item.getCartId().toString(), item); + String key; + if (item.getCartId() == null) { + key = item.getProductId().toString() + item.getProductSkuId() + item.getPlaceNum(); }else { + key = item.getCartId().toString(); + } + TbOrderDetail orderDetail = detailHashMap.get(key); + if (orderDetail == null) { + detailHashMap.put(key, item); + } else { orderDetail.setNum(orderDetail.getNum() + item.getNum()); orderDetail.setPriceAmount(orderDetail.getPriceAmount().add(item.getPriceAmount())); orderDetail.setPackAmount(orderDetail.getPackAmount().add(item.getPackAmount())); } + }); for (TbOrderDetail orderDetail : detailHashMap.values()) { num = num + orderDetail.getNum(); } orderInfo.setDetailList(new ArrayList<>(detailHashMap.values())); - }else { + } else { orderInfo.setDetailList(list); } @@ -292,10 +296,16 @@ public class OrderService { HashMap detailHashMap = new HashMap<>(); list.forEach(item -> { - TbOrderDetail orderDetail = detailHashMap.get(item.getCartId().toString()); - if (orderDetail == null) { - detailHashMap.put(item.getCartId().toString(), item); + String key; + if (item.getCartId() == null) { + key = item.getProductId().toString() + item.getProductSkuId() + item.getPlaceNum(); }else { + key = item.getCartId().toString(); + } + TbOrderDetail orderDetail = detailHashMap.get(key); + if (orderDetail == null) { + detailHashMap.put(key, item); + } else { orderDetail.setNum(orderDetail.getNum() + item.getNum()); orderDetail.setPriceAmount(orderDetail.getPriceAmount().add(item.getPriceAmount())); orderDetail.setPackAmount(orderDetail.getPackAmount().add(item.getPackAmount())); @@ -332,9 +342,9 @@ public class OrderService { orderVo.setTime(orderInfo.getCreatedAt()); if (orderInfo.getStatus().equals("paying") || orderInfo.getStatus().equals("unpaid")) { long totalSeconds = orderInfo.getCreatedAt() + 15 * 60 * 1000l - System.currentTimeMillis(); - if(totalSeconds>0){ - orderVo.setExpiredMinutes(totalSeconds/1000 / 60); - orderVo.setExpiredSeconds(totalSeconds/1000 % 60); + if (totalSeconds > 0) { + orderVo.setExpiredMinutes(totalSeconds / 1000 / 60); + orderVo.setExpiredSeconds(totalSeconds / 1000 % 60); } } orderVo.setPayAmount(orderInfo.getOrderAmount());