From cf2deb37da116d7e2877f741971db4fa207e8617 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 23 Jul 2021 10:36:39 +0800
Subject: [PATCH] fix

---
 gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java |   77 ++++++++++++++++++++++++++++++++++----
 1 files changed, 68 insertions(+), 9 deletions(-)

diff --git a/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java b/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java
index 6c8c7df..8b89b3d 100644
--- a/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java
+++ b/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java
@@ -18,6 +18,7 @@
 import com.xzx.gc.order.mapper.*;
 import com.xzx.gc.order.vo.JhyOrderDetailsVo;
 import com.xzx.gc.order.vo.JhyOrderListVo;
+import com.xzx.gc.order.vo.JhyStatusCountVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -25,9 +26,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -64,7 +63,9 @@
     public void addJhyOrder(AddJhyOrderDto orderDto) {
         JhyInfo jhyInfo = jhyInfoMapper.selectJhyInfoByUserId(orderDto.getUserId());
         if (jhyInfo != null && JhyInfo.CHECK_PASS.equals(jhyInfo.getStatus())) {
-            throw new RestException(-3, "集货员不能下单");
+            if (JhyInfo.IS_JHY_Y.equals(jhyInfo.getIsJhy())) {
+                throw new RestException(-3, "集货员不能下单");
+            }
         }
 
         AddressInfo addressInfo = addressMapper.selectByPrimaryKey(orderDto.getAddressId());
@@ -90,6 +91,18 @@
                 address.append(StrUtil.isNotBlank(addressInfo.getUnitName()) ? addressInfo.getUnitName() : "");
             }
         }
+
+        List<JhyOrder> addressExist = jhyOrderMapper.selectJhyOrderListByStatus(StrUtil.split("1,2", ','), orderDto.getUserId());
+        if (CollUtil.isNotEmpty(addressExist)) {
+            for (JhyOrder order : addressExist) {
+                String orderAddr = order.getArea() + order.getAddress();
+
+                if (orderAddr.equals(address.toString())) {
+                    throw new RestException(-3, "同一地址仅能有一单在进行中");
+                }
+            }
+        }
+
         jhyOrder.setAddress(address.toString());
 
         jhyOrder.setUsername(addressInfo.getRelaName());
@@ -137,6 +150,8 @@
         JhyOrderDetailsVo detailsVo = new JhyOrderDetailsVo();
         BeanUtil.copyProperties(order, detailsVo);
 
+        detailsVo.setLongitude(order.getLongitude());
+        detailsVo.setLatitude(order.getLatitude());
         detailsVo.setAddress(order.getArea() + order.getAddress());
         detailsVo.setTotalPrice(total);
         detailsVo.setItems(items);
@@ -149,9 +164,17 @@
             throw new RestException(-3, "不是集货员");
         }
 
+        if (JhyInfo.IS_JHY_N.equals(jhyInfo.getIsJhy())) {
+            throw new RestException(-3, "暂无法抢单");
+        }
+
         JhyOrder order = jhyOrderMapper.selectByPrimaryKey(orderId);
         if (order == null) {
             throw new RestException(-3, "订单不存在");
+        }
+
+        if (order.getUserId().equals(jhyInfo.getUserId())) {
+            throw new RestException(-3, "不能抢自己的单");
         }
 
         order.setJhyId(userId);
@@ -172,6 +195,7 @@
             order.setStatus(JhyOrder.ORDER_STATUS_CANCEL);
         }
 
+        order.setJhyId(null);
         jhyOrderMapper.updateByPrimaryKey(order);
     }
 
@@ -181,14 +205,23 @@
             throw new RestException(-3, "不是集物员");
         }
 
+        jhyOrderItemsMapper.deleteItemsByOrderId(confirmDto.getOrderId());
+
         BigDecimal totalScore = BigDecimal.ZERO;
         for (JhyOrderConfirmItemsDto item : confirmDto.getItems()) {
-            JhyOrderItems orderItem = jhyOrderItemsMapper.selectByPrimaryKey(item.getId());
             BigDecimal weight = StrUtil.isNotBlank(item.getWeight()) ? new BigDecimal(item.getWeight()) : BigDecimal.ZERO;
-            BigDecimal total = orderItem.getPrice().multiply(BigDecimal.valueOf(40)).multiply(weight);
-            orderItem.setScore(total.setScale(0, BigDecimal.ROUND_DOWN).toString());
-            orderItem.setWeight(weight);
-            jhyOrderItemsMapper.updateByPrimaryKey(orderItem);
+            SysEnvironmentalInfo environmentalInfo = environmentalInfoMapper.selectByPrimaryKey(item.getId());
+
+            JhyOrderItems orderItems = new JhyOrderItems();
+            orderItems.setOrderId(confirmDto.getOrderId());
+            orderItems.setPicture(environmentalInfo.getPicture());
+            orderItems.setItemType(item.getId());
+            orderItems.setTitle(environmentalInfo.getTitle());
+            orderItems.setPrice(new BigDecimal(environmentalInfo.getPrice()));
+            BigDecimal total = orderItems.getPrice().multiply(BigDecimal.valueOf(40)).multiply(weight);
+            orderItems.setScore(total.setScale(0, BigDecimal.ROUND_DOWN).toString());
+            orderItems.setWeight(weight);
+            jhyOrderItemsMapper.insert(orderItems);
 
             totalScore = totalScore.add(total);
         }
@@ -236,4 +269,30 @@
 
         distribService.distribRecord(order.getId(), order.getUserId());
     }
+
+    public Map<Integer, Integer> orderStatusCount(Integer type, String userId) {
+        List<JhyStatusCountVo> count = jhyOrderMapper.selectOrderStatusCount(type, userId);
+
+        Map<Integer, Integer> map = new HashMap<>();
+        for (int i = 1; i < 6; i++) {
+            if (CollUtil.isNotEmpty(count)) {
+                boolean flag = false;
+                for (JhyStatusCountVo jhyStatusCountVo : count) {
+                    if (i == jhyStatusCountVo.getStatus()) {
+                        map.put(i, jhyStatusCountVo.getCnt());
+                        flag = true;
+                        break;
+                    }
+                }
+
+                if (flag) {
+                    continue;
+                }
+            }
+
+            map.put(i, 0);
+        }
+
+        return map;
+    }
 }

--
Gitblit v1.9.1