From 3126876072413d3798c30eefd13d4223ba74f4c0 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 12 九月 2024 11:21:54 +0800
Subject: [PATCH] add:会员排序

---
 src/main/java/com/mzl/flower/service/payment/OrderService.java |   72 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 1 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 71d5a97..75a5177 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -180,7 +180,7 @@
 
                 cartMapper.insert(c);
             } else {
-                c.setNum(c.getNum() + dto.getNum());
+                c.setNum((c.getNum()==null?0:c.getNum()) + dto.getNum());
                 c.update(userId);
                 if (c.getNum() <= 0) {
                     cartMapper.deleteById(c.getId());
@@ -444,6 +444,7 @@
 
         BigDecimal totalAmount = order.getFlowerAmount().add(p.getPacking()).add(transportFee);//使用优惠券之前的总价
         CouponRecordDO coupon = useCouponRecord(order.getId(), totalAmount, dto.getCouponRecordId());
+        log.info("用户优惠券: " + coupon);
         if(coupon != null){
             order.setMemberCouponId(coupon.getId());
             order.setMemberCouponCode(coupon.getCouponCode());
@@ -563,6 +564,7 @@
     }
 
     private CouponRecordDO useCouponRecord(String orderId, BigDecimal amount, String couponRecordId){
+        log.info("使用用户优惠券id: " + couponRecordId + "; 订单id: " + orderId);
         if(StringUtils.isNotEmpty(couponRecordId)){
             //优惠券使用和验证,如果不符合使用条件需要抛出异常。需调用优惠券使用方法
             couponRecordService.useCoupon(couponRecordId, orderId, amount);
@@ -878,6 +880,74 @@
         return ls;
     }
 
+    public List<OrderCheckLocationListDTO> selectOrderCheckLocationList(OrderQueryDTO dto) {
+        dto.setIdList(splitParam(dto.getIds()));
+        dto.setStartDate(parseLocalDateTime(dto.getStartDateStr(), true));
+        dto.setEndDate(parseLocalDateTime(dto.getEndDateStr(), false));
+
+        dto.setCreateStartDate(parseLocalDateTime(dto.getCreateStartDateStr(), 17, 0, 0, -1));
+        dto.setCreateEndDate(parseLocalDateTime(dto.getCreateEndDateStr(), 17, 0, 0, 0));
+
+        List<OrderCheckListDTO> ls = orderMapper.selectOrderCheckList(dto);
+
+        List<OrderCheckLocationListDTO> result = new ArrayList<>();
+
+        if (ls != null && ls.size() > 0) {
+            List<String> orderIds = new ArrayList<>();
+            Map<Long, OrderCheckLocationListDTO> rMap = new HashMap<>();
+            Map<String, OrderCheckListDTO> orderMap = new HashMap<>();
+            for (OrderCheckListDTO c : ls) {
+                orderIds.add(c.getId());
+
+                orderMap.put(c.getId(), c);
+
+                Long locationId = c.getWarehouseLocationId();
+                OrderCheckLocationListDTO llc = rMap.get(locationId);
+                if(llc == null){
+                    llc = new OrderCheckLocationListDTO();
+                    BeanUtils.copyProperties(c, llc);
+                    rMap.put(locationId, llc);
+
+                    result.add(llc);
+                }
+            }
+
+            Map<Long, String> stationMap = prepareStationMap();
+
+            List<OrderItem> itemList = orderItemMapper.selectList(new QueryWrapper<OrderItem>()
+                    .in("order_id", orderIds));
+            Map<String, List<OrderItemLocationListDTO>> map = new HashMap<>();
+
+            for (OrderItem oi : itemList) {
+                String orderId = oi.getOrderId();
+                List<OrderItemLocationListDTO> ll = map.computeIfAbsent(orderId, k -> new ArrayList<>());
+                OrderItemLocationListDTO d = new OrderItemLocationListDTO();
+                BeanUtils.copyProperties(oi, d);
+                d.setStationName(stationMap.get(oi.getStationId()));
+
+                OrderCheckListDTO c = orderMap.get(oi.getOrderId());
+                d.setOrderNo(c.getOrderNo());
+                d.setOrderId(c.getId());
+
+                ll.add(d);
+            }
+
+            for (OrderCheckListDTO c : ls) {
+                String orderId = c.getId();
+                Long locationId = c.getWarehouseLocationId();
+                OrderCheckLocationListDTO r = rMap.get(locationId);
+                List<OrderItemLocationListDTO> items = r.getItems();
+                if(items == null){
+                    items = new ArrayList<>();
+                    r.setItems(items);
+                }
+                items.addAll(map.get(orderId));
+            }
+        }
+
+        return result;
+    }
+
     public Page<OrderListDTO> selectPartnerOrderList(Page page, OrderQueryDTO dto) {
         Partner p = getCurrentPartner();
         dto.setPartnerId(p.getId());

--
Gitblit v1.9.3