zhijiezhao 2 years ago
parent
commit
4e1af570b3

+ 1 - 1
src/main/java/com/caimei/modules/order/dao/NewShopOrderDao.java

@@ -27,7 +27,7 @@ public interface NewShopOrderDao {
 
     List<NewShopOrder> findPayShopOrderList(OrderPayShop orderPayShop);
 
-    Double findColdChain(Integer orderId);
+    NewShopOrder findColdChain(Integer orderId);
 
     List<Integer> findSettleStatus(Integer orderId);
 

+ 107 - 45
src/main/java/com/caimei/modules/order/util/OrderUtils.java

@@ -18,9 +18,12 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
+import static sun.management.snmp.jvminstr.JvmThreadInstanceEntryImpl.ThreadStateMap.Byte1.other;
+
 
 /**
  * @author zzj
@@ -267,22 +270,42 @@ public class OrderUtils {
     }
 
     public NewOrder setOrderPostInfo(NewOrder order) {
-        Double fee = shopOrderDao.findColdChain(order.getOrderId());
-        fee = fee != null ? fee : 0;
-        //     拼接运费信息--联合丽格
-        if ("-1".equals(order.getFreePostFlag())) {
-            // 到付
-            order.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 到付)");
-        } else if ("0".equals(order.getFreePostFlag())) {
-            // 包邮
-            order.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 包邮)");
-        } else {
-            Double other = 0d;
-            if (fee >= 700) {
-                other = fee - 700;
+        NewShopOrder shopOrder = shopOrderDao.findColdChain(order.getOrderId());
+
+        String freePostFlag = order.getFreePostFlag();
+        String otherString = "";
+        String coldString = "";
+        if (null != shopOrder) {
+            Integer itemCount = shopOrder.getItemCount();
+            Integer isColdChina = shopOrder.getIsColdChina();
+            /**     拼接运费信息--联合丽格
+             *      itemCount > 1,有不止一个商品
+             *      有冷链费 且不止一个商品的时候,显示其他商品运费,否则不显示
+             *      isColdChina 0 不包含冷链费用,1包含
+             */
+            double fee = shopOrder.getFreePostageFee() != null ? shopOrder.getFreePostageFee() : 0;
+            double other = 0d;
+            if (1 == isColdChina) {
+                if (fee >= 700) {
+                    other = fee - 700;
+                }
+                coldString = "¥ " + fee + "(冷链费: ¥ 700 ";
+            }
+            if (itemCount > 1) {
+                otherString = "-1".equals(freePostFlag) ? ", 其他: 到付)" : "0".equals(freePostFlag) ? ", 其他: 包邮)" :
+                        "1".equals(freePostFlag) ? ",其他: ¥" + other + ")" : "";
+            } else {
+                coldString += ")";
             }
-            // 有运费
-            order.setPostageInfo("¥" + fee + "(冷链费: ¥" + 700 + ", 其他: ¥" + other + ")");
+            order.setPostageInfo(coldString + otherString);
+        } else {
+            /**
+             *  没有运费订单
+             */
+            otherString = "-1".equals(freePostFlag) ? "到付" :
+                    "0".equals(freePostFlag) ? "包邮" :
+                            "1".equals(freePostFlag) ? "¥ 0" : "";
+            order.setPostageInfo(otherString);
         }
         return order;
     }
@@ -521,44 +544,83 @@ public class OrderUtils {
 
     public void setPayShopPostInfo(OrderPayShopDetail detail) {
         NewOrder order = newOrderDao.get(detail.getShopOrders().get(0).getOrderId().toString());
-        Double fee = shopOrderDao.findColdChain(detail.getShopOrders().get(0).getOrderId());
-        fee = fee != null ? fee : 0;
-        //     拼接运费信息--联合丽格
-        if ("-1".equals(order.getFreePostFlag())) {
-            // 到付
-            detail.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 到付)");
-        } else if ("0".equals(order.getFreePostFlag())) {
-            // 包邮
-            detail.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 包邮)");
-        } else {
-            Double other = 0d;
-            if (fee >= 700) {
-                other = fee - 700;
+        NewShopOrder shopOrder = shopOrderDao.findColdChain(detail.getShopOrders().get(0).getOrderId());
+
+        String freePostFlag = order.getFreePostFlag();
+        String otherString = "";
+        String coldString = "";
+        if (null != shopOrder) {
+            Integer itemCount = shopOrder.getItemCount();
+            Integer isColdChina = shopOrder.getIsColdChina();
+            /**     拼接运费信息--联合丽格
+             *      itemCount > 1,有不止一个商品
+             *      有冷链费 且不止一个商品的时候,显示其他商品运费,否则不显示
+             *      isColdChina 0 不包含冷链费用,1包含
+             */
+            double fee = shopOrder.getFreePostageFee() != null ? shopOrder.getFreePostageFee() : 0;
+            double other = 0d;
+            if (1 == isColdChina) {
+                if (fee >= 700) {
+                    other = fee - 700;
+                }
+                coldString = "¥ " + fee + "(冷链费: ¥ 700 ";
             }
-            // 有运费
-            detail.setPostageInfo("¥" + fee + "(冷链费: ¥" + 700 + ", 其他: ¥" + other + ")");
+            if (itemCount > 1) {
+                otherString = "-1".equals(freePostFlag) ? ", 其他: 到付)" : "0".equals(freePostFlag) ? ", 其他: 包邮)" :
+                        "1".equals(freePostFlag) ? ",其他: ¥" + other + ")" : "";
+            } else {
+                coldString += ")";
+            }
+            detail.setPostageInfo(coldString + otherString);
+        } else {
+            /**
+             *  没有运费订单
+             */
+            otherString = "-1".equals(freePostFlag) ? "到付" :
+                    "0".equals(freePostFlag) ? "包邮" :
+                            "1".equals(freePostFlag) ? "¥ 0" : "";
+            detail.setPostageInfo(otherString);
         }
     }
 
 
     public void setShopPostInfo(NewShopOrder s) {
         NewOrder order = newOrderDao.get(s.getOrderId().toString());
-        Double fee = shopOrderDao.findColdChain(s.getOrderId());
-        fee = fee != null ? fee : 0;
-        //     拼接运费信息--联合丽格
-        if ("-1".equals(order.getFreePostFlag())) {
-            // 到付
-            s.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 到付)");
-        } else if ("0".equals(order.getFreePostFlag())) {
-            // 包邮
-            s.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 包邮)");
-        } else {
-            Double other = 0d;
-            if (fee >= 700) {
-                other = fee - 700;
+        NewShopOrder shopOrder = shopOrderDao.findColdChain(s.getOrderId());
+        String freePostFlag = order.getFreePostFlag();
+        String otherString = "";
+        String coldString = "";
+        if (null != shopOrder) {
+            Integer itemCount = shopOrder.getItemCount();
+            Integer isColdChina = shopOrder.getIsColdChina();
+            /**     拼接运费信息--联合丽格
+             *      itemCount > 1,有不止一个商品
+             *      有冷链费 且不止一个商品的时候,显示其他商品运费,否则不显示
+             *      isColdChina 0 不包含冷链费用,1包含
+             */
+            double fee = shopOrder.getFreePostageFee() != null ? shopOrder.getFreePostageFee() : 0;
+            double other = 0d;
+            if (1 == isColdChina) {
+                if (fee >= 700) {
+                    other = fee - 700;
+                }
+                coldString = "¥ " + fee + "(冷链费: ¥ 700 ";
+            }
+            if (itemCount > 1) {
+                otherString = "-1".equals(freePostFlag) ? ", 其他: 到付)" : "0".equals(freePostFlag) ? ", 其他: 包邮)" :
+                        "1".equals(freePostFlag) ? ",其他: ¥" + other + ")" : "";
+            } else {
+                coldString += ")";
             }
-            // 有运费
-            s.setPostageInfo("¥" + fee + "(冷链费: ¥" + 700 + ", 其他: ¥" + other + ")");
+            s.setPostageInfo(coldString + otherString);
+        } else {
+            /**
+             *  没有运费订单
+             */
+            otherString = "-1".equals(freePostFlag) ? "到付" :
+                    "0".equals(freePostFlag) ? "包邮" :
+                            "1".equals(freePostFlag) ? "¥ 0" : "";
+            s.setPostageInfo(otherString);
         }
     }
 

+ 3 - 2
src/main/resources/mapper/NewShopOrderMapper.xml

@@ -550,8 +550,9 @@
         ORDER BY a.shopOrderID DESC
     </select>
 
-    <select id="findColdChain" resultType="java.lang.Double">
-        select ifnull(totalAmount, 0)
+    <select id="findColdChain" resultType="com.caimei.modules.order.entity.NewShopOrder">
+        select ifnull(totalAmount, 0) as freePostageFee,ifnull(isColdChina,0) as isColdChina,
+        (SELECT COUNT(orderProductId) FROM cm_order_product WHERE orderid=#{orderId} AND shopId !=998) AS itemCount
         from cm_shop_order
         where shopId = 998
           and orderId = #{orderId}