huangzhiguo 1 year ago
parent
commit
5d6fa62c78

+ 6 - 6
src/main/java/com/caimei365/order/components/OrderCommonService.java

@@ -363,13 +363,13 @@ public class OrderCommonService {
                 }
                 if (2 == shopOrder.getShopPostFlag()) {
                     // 到付
-                    shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina().doubleValue():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 到付")+close);
+                    shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 到付")+close);
                 } else if (0 == shopOrder.getShopPostFlag()) {
                     // 包邮
-                    shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina().doubleValue():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 包邮")+close);
+                    shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 包邮")+close);
                 } else {
                     // 有运费
-                    shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina().doubleValue():"") + ((shopOrder.getShopPostFee() != null && shopOrder.getShopPostFee() != 0d)?" 其他: ¥" + MathUtil.sub(shopOrder.getShopPostFee(), shopOrder.getColdChina()):"") + close);
+                    shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina():"") + ((shopOrder.getShopPostFee() != null && shopOrder.getShopPostFee() != 0d)?" 其他: ¥" + MathUtil.sub(shopOrder.getShopPostFee(), shopOrder.getColdChina()):"") + close);
                 }
             } else {
                 shopOrder.setPostageInfo(shopOrder.getShopPostFlag() == 2 ?"到付":shopOrder.getShopPostFlag() == 0?"包邮":"¥" + shopOrder.getShopPostFee());
@@ -487,13 +487,13 @@ public class OrderCommonService {
             }
             if (2 == shopOrder.getShopPostFlag()) {
                 // 到付
-                shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina().doubleValue():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 到付")+close);
+                shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 到付")+close);
             } else if (0 == shopOrder.getShopPostFlag()) {
                 // 包邮
-                shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina().doubleValue():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 包邮")+close);
+                shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina():"") + (arrList.stream().allMatch(c -> c == 1)?"":" 其他: 包邮")+close);
             } else {
                 // 有运费
-                shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina().doubleValue():"") + ((shopOrder.getShopPostFee() != null && shopOrder.getShopPostFee() != 0d)?" 其他: ¥" + MathUtil.sub(shopOrder.getShopPostFee(), shopOrder.getColdChina()):"") + close);
+                shopOrder.setPostageInfo("¥" + shopOrder.getShopPostFee() + open +(shopOrder.getIsColdChina()==1?"冷链费: ¥" + shopOrder.getColdChina():"") + ((shopOrder.getShopPostFee() != null && shopOrder.getShopPostFee() != 0d)?" 其他: ¥" + MathUtil.sub(shopOrder.getShopPostFee(), shopOrder.getColdChina()):"") + close);
             }
         } else {
             shopOrder.setPostageInfo(shopOrder.getShopPostFlag() == 2?"到付":shopOrder.getShopPostFlag() == 0?"包邮":"¥" + shopOrder.getShopPostFee());

+ 14 - 3
src/main/java/com/caimei365/order/components/ProductService.java

@@ -39,6 +39,8 @@ public class ProductService {
     @Resource
     private PayOrderMapper payOrderMapper;
 
+    private final List<Integer> provinceList = Arrays.asList(5, 26, 29, 31);
+
     /**
      * 设置商品图片及税费
      *
@@ -218,8 +220,9 @@ public class ProductService {
         } else {
             postageFlagList = baseMapper.getPostageFlagOrganizeList(skuIdList);
         }
-
+        List<Integer> commodityTypeList = null;
         if (null != postageFlagList && postageFlagList.size() > 0) {
+            commodityTypeList = postageFlagList.stream().map(ProductPostageVo::getCommodityType).collect(Collectors.toList());
             for (ProductPostageVo postageVo : postageFlagList) {
                 if (null != postageVo) {
                     // 是否是仪器 或 设置了运费到付
@@ -273,6 +276,13 @@ public class ProductService {
                 }
             }
         }
+        // 商品包邮
+        if (0 == postageFlag) {
+            // 包邮
+            postage.set(0d);
+        }
+        // 偏远地区 获取地址的 省地址
+        Integer province = baseMapper.getProvince(cityId);
         // 是否首单(统计订单数)
         Integer count = null;
         if (0 == organizeId) {
@@ -282,8 +292,9 @@ public class ProductService {
             // 组织 -- 联合丽格无首单优惠
             count = -1;
         }
-        // 包邮条件:首单 或 包邮(上一步未被设置成不包邮)
-        boolean freeFlag = ((null != count && count == 0) || postageFlag == 0);
+        // 首单包邮条件:首单 且 不包含仪器 且不包含偏远地区
+        boolean freeFlag = ((null != count && count == 0) && (null != commodityTypeList && !commodityTypeList.contains(2))
+                && (null != province && !provinceList.contains(province)));
         if (freeFlag) {
             // 包邮
             postageFlag = 0;

+ 7 - 0
src/main/java/com/caimei365/order/mapper/BaseMapper.java

@@ -180,6 +180,13 @@ public interface BaseMapper {
      */
     List<ProductPostageVo> getPostageFlagOrganizeList(@Param("skuIds") List<String> skuIds);
 
+    /**
+     * 获取省Id
+     * @param cityId
+     * @return
+     */
+    Integer getProvince(Integer cityId);
+
     /**
      * 指定商品的运费
      * @param productId

+ 1 - 1
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -1658,7 +1658,7 @@ public class CartClubServiceImpl implements CartClubService {
                         }
                         shop.setPostage(shopPostage.get());
                         shop.setColdChain(coldChain);
-                        if (700 == coldChain) {
+                        if (0 != coldChain) {
                             shop.setIsColdChina(true);
                         } else {
                             shop.setIsColdChina(false);

+ 10 - 2
src/main/resources/mapper/BaseMapper.xml

@@ -273,12 +273,20 @@
         </foreach>
     </select>
 
+    <select id="getProvince" resultType="java.lang.Integer">
+        SELECT
+            p.provinceID
+        FROM province p
+        LEFT JOIN city c ON c.provinceID = p.provinceID
+        WHERE c.cityID = #{cityId}
+    </select>
+
     <select id="getFreightAmount" resultType="java.lang.Double">
-        SELECT SUM(cfr.freightAmount)
+        SELECT ifnull(SUM(cfr.freightAmount), 0)
         FROM cm_freight_rule cfr
                  LEFT JOIN cm_freight_template cft ON cft.id = cfr.freightId
                  LEFT JOIN product p ON p.freightTemplateId = cft.id
-        WHERE productId = #{productId}
+        WHERE productId = #{productId} and cft.delFlag = 0
     </select>
 
     <select id="getFreightTemplate" resultType="java.lang.Integer">