Browse Source

联合丽格

huangzhiguo 2 years ago
parent
commit
de715e18a0

+ 16 - 5
src/main/java/com/caimei365/order/components/ProductService.java

@@ -16,6 +16,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
+import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import java.util.stream.IntStream;
 
 
 /**
 /**
@@ -203,14 +204,15 @@ public class ProductService {
             return postageMap;
             return postageMap;
         }
         }
         // 获取商品运费 (商品数据库 0包邮 1到付 2默认(遵循运费规则))
         // 获取商品运费 (商品数据库 0包邮 1到付 2默认(遵循运费规则))
-        List<ProductPostageVo> postageFlagList = baseMapper.getPostageFlagList(skuIdList);
+        List<ProductPostageVo> postageFlagList = null;
+        if (0 == organizeId) {
+            postageFlagList = baseMapper.getPostageFlagList(skuIdList);
+        } else {
+            postageFlagList = baseMapper.getPostageFlagOrganizeList(skuIdList);
+        }
         if (null != postageFlagList && postageFlagList.size() > 0) {
         if (null != postageFlagList && postageFlagList.size() > 0) {
             for (ProductPostageVo postageVo : postageFlagList) {
             for (ProductPostageVo postageVo : postageFlagList) {
                 if (null != postageVo) {
                 if (null != postageVo) {
-                    if (7502 == postageVo.getProductId()) {
-                        postageMap.put("coldChain", 700);
-                        continue;
-                    }
                     // 是否是仪器 或 设置了运费到付
                     // 是否是仪器 或 设置了运费到付
                     boolean flag = (null == postageVo.getCommodityType() || 2 == postageVo.getCommodityType() || (null != postageVo.getPostageFlag() && 1 == postageVo.getPostageFlag()));
                     boolean flag = (null == postageVo.getCommodityType() || 2 == postageVo.getCommodityType() || (null != postageVo.getPostageFlag() && 1 == postageVo.getPostageFlag()));
                     if (flag) {
                     if (flag) {
@@ -231,6 +233,15 @@ public class ProductService {
             // 采美
             // 采美
             count = baseMapper.countUserOrder(userId);
             count = baseMapper.countUserOrder(userId);
         } else {
         } else {
+            // 是否包含需要冷链运输商品
+            List<Integer> collect = postageFlagList.stream().map(ProductPostageVo::getProductId).collect(Collectors.toList());
+            if (collect.stream().allMatch(c -> c == 7502)) {
+                postageMap.put("designatedFlag",1);
+            } else if (!collect.contains(7502)) {
+                postageMap.put("designatedFlag",2);
+            } else {
+                postageMap.put("designatedFlag",3);
+            }
             // 组织 -- 联合丽格无首单优惠
             // 组织 -- 联合丽格无首单优惠
             count = -1;
             count = -1;
         }
         }

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

@@ -130,6 +130,19 @@ public interface BaseMapper {
      * @param skuIds    skuId列表
      * @param skuIds    skuId列表
      */
      */
     List<ProductPostageVo> getPostageFlagList(@Param("skuIds") List<String> skuIds);
     List<ProductPostageVo> getPostageFlagList(@Param("skuIds") List<String> skuIds);
+    /**
+     * 获取商品运费 (0包邮 1到付 2默认(遵循运费规则)) -- 组织
+     * @param skuIds    skuId列表
+     */
+    List<ProductPostageVo> getPostageFlagOrganizeList(@Param("skuIds") List<String> skuIds);
+
+    /**
+     * 获取购物车商品数据
+     * @param userId
+     * @param skuIds
+     * @return
+     */
+    List<CartPo> getCart(Integer userId, @Param("skuIds") List<String> skuIds);
     /**
     /**
      * 统计用户订单数
      * 统计用户订单数
      * @param userId 用户Id
      * @param userId 用户Id

+ 4 - 0
src/main/java/com/caimei365/order/model/bo/OrderParamBo.java

@@ -134,4 +134,8 @@ public class OrderParamBo implements Serializable {
     临时数据方便调用unionID
     临时数据方便调用unionID
      */
      */
     private String UnionId;
     private String UnionId;
+    /**
+     * 是否勾选冷链费
+     */
+    private Integer isColdChain;
 }
 }

+ 4 - 0
src/main/java/com/caimei365/order/model/po/OrderShopPo.java

@@ -161,4 +161,8 @@ public class OrderShopPo implements Serializable {
      * 子订单收款商户号
      * 子订单收款商户号
      */
      */
     private String splitCode;
     private String splitCode;
+    /**
+     * 是否包含冷链费 0不包含 1包含
+     */
+    private Integer isColdChina;
 }
 }

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

@@ -1293,6 +1293,25 @@ public class CartClubServiceImpl implements CartClubService {
         resultData.put("userBeans", userBeans);
         resultData.put("userBeans", userBeans);
         resultData.put("includeRecharge", includeRecharge);
         resultData.put("includeRecharge", includeRecharge);
         resultData.put("couponList", couponList);
         resultData.put("couponList", couponList);
+        // 联合丽格冷链费
+        if (0 != organizeId) {
+            double coldChain = 0.00d;
+            if (null != totalProductList) {
+                for (CartItemVo cart :totalProductList) {
+                    if (7502 == cart.getProductId()) {
+                        if (cart.getNumber() >= 100) {
+                            coldChain = 0.00d;
+                        } else {
+                            coldChain = 700.00d;
+                        }
+                        break;
+                    } else {
+                        coldChain = 0.00d;
+                    }
+                }
+            }
+            resultData.put("coldChain", coldChain);
+        }
         if (flag) {
         if (flag) {
             resultData.put("returnGoodsStutas", 2);
             resultData.put("returnGoodsStutas", 2);
             resultData.put("helpContent", helpContent);
             resultData.put("helpContent", helpContent);
@@ -1750,12 +1769,13 @@ public class CartClubServiceImpl implements CartClubService {
         // 超级会员标识
         // 超级会员标识
         Integer svipUserId = baseMapper.getSvipUserIdByUserId(cartDto.getUserId());
         Integer svipUserId = baseMapper.getSvipUserIdByUserId(cartDto.getUserId());
         boolean svipUserFlag = null != svipUserId;
         boolean svipUserFlag = null != svipUserId;
-        // visibility商品可见度: 3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见
-        if (!(cartItemVo.getVisibility() == 3 || cartItemVo.getVisibility() == 2 || (cartItemVo.getVisibility() == 1 && (userIdentity == 2 || svipUserFlag)) || (cartItemVo.getVisibility() == 4 && userClubType == 1))) {
-            return ResponseJson.error("商品不可见!", null);
-        }
-        // 价格可见度: 0公开价格,1不公开价格,2仅对会员机构公开,3仅对医美机构公开
         if (0 == organizeId) {
         if (0 == organizeId) {
+            // visibility商品可见度: 3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见
+            if (!(cartItemVo.getVisibility() == 3 || cartItemVo.getVisibility() == 2 || (cartItemVo.getVisibility() == 1 && (userIdentity == 2 || svipUserFlag)) || (cartItemVo.getVisibility() == 4 && userClubType == 1))) {
+                return ResponseJson.error("商品不可见!", null);
+            }
+            // 价格可见度: 0公开价格,1不公开价格,2仅对会员机构公开,3仅对医美机构公开
+
             if (!(cartItemVo.getPriceFlag() == 0 || (cartItemVo.getPriceFlag() == 2 && (userIdentity == 2 || svipUserFlag)) || (cartItemVo.getPriceFlag() == 3 && userClubType == 1))) {
             if (!(cartItemVo.getPriceFlag() == 0 || (cartItemVo.getPriceFlag() == 2 && (userIdentity == 2 || svipUserFlag)) || (cartItemVo.getPriceFlag() == 3 && userClubType == 1))) {
                 return ResponseJson.error("商品价格不可见!", null);
                 return ResponseJson.error("商品价格不可见!", null);
             }
             }
@@ -1948,6 +1968,7 @@ public class CartClubServiceImpl implements CartClubService {
                 }
                 }
             }
             }
         }
         }
+
         // 包装返回数据
         // 包装返回数据
         Map<String, Object> resultData = new HashMap<>();
         Map<String, Object> resultData = new HashMap<>();
         resultData.put("list", shopList);
         resultData.put("list", shopList);
@@ -1963,6 +1984,20 @@ public class CartClubServiceImpl implements CartClubService {
         resultData.put("includeRecharge", includeRecharge);
         resultData.put("includeRecharge", includeRecharge);
         resultData.put("promotions", totalPromotions);
         resultData.put("promotions", totalPromotions);
         resultData.put("couponList", couponList);
         resultData.put("couponList", couponList);
+        // 联合丽格冷链费
+        if (0 != organizeId) {
+            double coldChain = 0.00d;
+            if (7502 == cartDto.getProductId()) {
+                if (cartDto.getProductCount() >= 100) {
+                    coldChain = 0.00d;
+                } else {
+                    coldChain = 700.00d;
+                }
+            } else {
+                coldChain = 0.00d;
+            }
+            resultData.put("coldChain", coldChain);
+        }
         if (flag) {
         if (flag) {
             resultData.put("returnGoodsStutas", 2);
             resultData.put("returnGoodsStutas", 2);
             resultData.put("helpContent", helpContent);
             resultData.put("helpContent", helpContent);

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

@@ -176,6 +176,7 @@ public class SubmitServiceImpl implements SubmitService {
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto) {
     public ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto) {
+        log.info("submitDto==="+submitDto);
         // 获取机构用户Id
         // 获取机构用户Id
         Integer clubUserId = baseMapper.getUserIdByClubId(submitDto.getClubId());
         Integer clubUserId = baseMapper.getUserIdByClubId(submitDto.getClubId());
         if (null == clubUserId || clubUserId == 0) {
         if (null == clubUserId || clubUserId == 0) {
@@ -310,6 +311,7 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setRebateFlag(rebateFlag);
         orderParamBo.setRebateFlag(rebateFlag);
         // 售后条款id
         // 售后条款id
         Integer clauseId = (Integer) payInfo.get("clauseId");
         Integer clauseId = (Integer) payInfo.get("clauseId");
+        Integer isColdChina = (Integer) payInfo.get("isColdChina");
         orderParamBo.setClauseId(clauseId);
         orderParamBo.setClauseId(clauseId);
         // 购买类型:(1自主下单,2直接购买 3协销下单)
         // 购买类型:(1自主下单,2直接购买 3协销下单)
         orderParamBo.setCartType(submitDto.getCartType());
         orderParamBo.setCartType(submitDto.getCartType());
@@ -347,6 +349,7 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setClubCouponId(submitDto.getClubCouponId());
         orderParamBo.setClubCouponId(submitDto.getClubCouponId());
         orderParamBo.setOrderSeen(submitDto.getOrderSeen());
         orderParamBo.setOrderSeen(submitDto.getOrderSeen());
         orderParamBo.setOrderMiniType(submitDto.getOrderMiniType());
         orderParamBo.setOrderMiniType(submitDto.getOrderMiniType());
+        orderParamBo.setIsColdChain(isColdChina);
         /*
         /*
          * 保存订单
          * 保存订单
          */
          */
@@ -447,6 +450,8 @@ public class SubmitServiceImpl implements SubmitService {
         AtomicDouble payableAmount = new AtomicDouble(0);
         AtomicDouble payableAmount = new AtomicDouble(0);
         // 余额支付金额
         // 余额支付金额
         AtomicDouble balancePayFee = new AtomicDouble(0);
         AtomicDouble balancePayFee = new AtomicDouble(0);
+        // 冷链运输费
+        AtomicDouble isColdChina = new AtomicDouble(0);
         // 统计销量用
         // 统计销量用
         JSONArray salesInfo = new JSONArray();
         JSONArray salesInfo = new JSONArray();
 
 
@@ -556,6 +561,15 @@ public class SubmitServiceImpl implements SubmitService {
                 if (null == product) {
                 if (null == product) {
                     return ResponseJson.error("订单商品不存在!", null);
                     return ResponseJson.error("订单商品不存在!", null);
                 }
                 }
+                // 联合丽格冷链费商品
+                if (7502 == product.getProductId()) {
+                    if (productNum >= 100) {
+                        isColdChina.set(0.00d);
+                    } else {
+                        isColdChina.set(700.00d);
+                        orderParamBo.setOrderShouldPayFee(MathUtil.sub(orderParamBo.getOrderShouldPayFee(), isColdChina.get()).doubleValue());
+                    }
+                }
                 // 是否二手商品
                 // 是否二手商品
                 if (null != product.getProductCategory() && 2 == product.getProductCategory()) {
                 if (null != product.getProductCategory() && 2 == product.getProductCategory()) {
                     secondHandOrderFlag = true;
                     secondHandOrderFlag = true;
@@ -1430,7 +1444,8 @@ public class SubmitServiceImpl implements SubmitService {
          * 设置邮费子订单( 0包邮 -1到付 1遵循运费规则)
          * 设置邮费子订单( 0包邮 -1到付 1遵循运费规则)
          * 采美豆抵扣不生成
          * 采美豆抵扣不生成
          */
          */
-        if (1 == mainOrder.getPostageFlag() && 0 == mainOrder.getUserBeans()) {
+        log.info("PostageFlag===="+mainOrder.getPostageFlag()+"====UserBeans=====***"+mainOrder.getUserBeans());
+        if (( 1 == mainOrder.getPostageFlag() && 0 == mainOrder.getUserBeans() ) || ( 0 == mainOrder.getPostageFlag() && 0 != organizeId )) {
             // 获取 邮费商品    productId 999 skuId 1
             // 获取 邮费商品    productId 999 skuId 1
             OrderProductPo postageProduct = submitMapper.getProductDetails(1);
             OrderProductPo postageProduct = submitMapper.getProductDetails(1);
             // 生成子订单编号
             // 生成子订单编号
@@ -1454,6 +1469,13 @@ public class SubmitServiceImpl implements SubmitService {
             postageOrder.setSplitCode(Constant.CUSTOMERNUM);
             postageOrder.setSplitCode(Constant.CUSTOMERNUM);
             postageOrder.setRealPay(mainOrder.getPostage());
             postageOrder.setRealPay(mainOrder.getPostage());
             postageOrder.setEachDiscount(0d);
             postageOrder.setEachDiscount(0d);
+            // 冷链运输费
+            if (1 == orderParamBo.getIsColdChain()) {
+                postageOrder.setIsColdChina(1);
+                mainOrder.setPostage(MathUtil.add(mainOrder.getPostage(), isColdChina.get()).doubleValue());
+            } else {
+                postageOrder.setIsColdChina(0);
+            }
             //运费商品供应商Id默认998
             //运费商品供应商Id默认998
             postageOrder.setShopId(postageProduct.getShopId());
             postageOrder.setShopId(postageProduct.getShopId());
             postageOrder.setProductAmount(mainOrder.getPostage());
             postageOrder.setProductAmount(mainOrder.getPostage());

+ 27 - 0
src/main/resources/mapper/BaseMapper.xml

@@ -231,6 +231,33 @@
             #{skuId}
             #{skuId}
         </foreach>
         </foreach>
     </select>
     </select>
+    <select id="getPostageFlagOrganizeList" resultType="com.caimei365.order.model.vo.ProductPostageVo">
+        SELECT
+        p.productID AS productId,
+        p.freePostFlag AS postageFlag,
+        p.commodityType,
+        p.productType
+        FROM product p
+        LEFT JOIN cm_sku cs ON p.productID=cs.productId
+        LEFT JOIN cm_mall_product_sku cmps ON cmps.skuId = cs.skuId
+        LEFT JOIN cm_mall_organize_products cmop ON cmop.productId = p.productId
+        WHERE cmop.validFlag='1' AND cmop.delFlag = 0 AND cs.skuId IN
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
+        </foreach>
+    </select>
+    <select id="getCart" resultType="com.caimei365.order.model.po.CartPo">
+        SELECT productID as productID, userID as userId, productCount FROM cm_cart
+            <where>
+                userID = #{userId}
+                <if test="skuIds.size() > 0">
+                    and skuId IN
+                    <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+                        #{skuId}
+                    </foreach>
+                </if>
+            </where>
+    </select>
     <select id="countUserOrder" resultType="java.lang.Integer">
     <select id="countUserOrder" resultType="java.lang.Integer">
         SELECT COUNT(*)
         SELECT COUNT(*)
         FROM cm_order
         FROM cm_order

+ 2 - 1
src/main/resources/mapper/CartClubMapper.xml

@@ -120,6 +120,7 @@
         WHERE c.userID = #{userId}
         WHERE c.userID = #{userId}
           and p.shopID = #{shopId}
           and p.shopID = #{shopId}
           and cmop.organizeID = #{organizeId}
           and cmop.organizeID = #{organizeId}
+          AND cmop.delFlag = 0
         ORDER BY c.cm_cartID DESC
         ORDER BY c.cm_cartID DESC
     </select>
     </select>
     <select id="getCartProductsByShopIdAndProductIds" resultType="com.caimei365.order.model.vo.CartItemVo">
     <select id="getCartProductsByShopIdAndProductIds" resultType="com.caimei365.order.model.vo.CartItemVo">
@@ -203,7 +204,7 @@
         LEFT JOIN cm_sku cs ON c.skuId = cs.skuId
         LEFT JOIN cm_sku cs ON c.skuId = cs.skuId
         LEFT JOIN cm_mall_organize_products cmop ON cmop.productId = p.productID
         LEFT JOIN cm_mall_organize_products cmop ON cmop.productId = p.productID
         LEFT JOIN cm_mall_product_sku cmps ON cmps.skuId = cs.skuId
         LEFT JOIN cm_mall_product_sku cmps ON cmps.skuId = cs.skuId
-        WHERE c.userID = #{userId} and p.shopID = #{shopId} and cmop.organizeID = #{organizeId}
+        WHERE c.userID = #{userId} and p.shopID = #{shopId} and cmop.organizeID = #{organizeId} and cmop.delFlag = 0
         AND cmop.validFlag='1'
         AND cmop.validFlag='1'
         <if test="splitCode !=null and splitCode !=''">
         <if test="splitCode !=null and splitCode !=''">
             AND p.splitCode = #{splitCode}
             AND p.splitCode = #{splitCode}

+ 2 - 2
src/main/resources/mapper/SubmitMapper.xml

@@ -29,14 +29,14 @@
     </insert>
     </insert>
     <insert id="insertShopOrder" keyColumn="shopOrderID" keyProperty="shopOrderId"
     <insert id="insertShopOrder" keyColumn="shopOrderID" keyProperty="shopOrderId"
             parameterType="com.caimei365.order.model.po.OrderShopPo" useGeneratedKeys="true">
             parameterType="com.caimei365.order.model.po.OrderShopPo" useGeneratedKeys="true">
-        INSERT INTO cm_shop_order (onlinePayWays, shopOrderNo, orderID, orderNo, organizeID, shopID, note, userID, clubID, orderType,
+        INSERT INTO cm_shop_order (onlinePayWays, shopOrderNo, orderID, orderNo, organizeID, isColdChina, shopID, note, userID, clubID, orderType,
                                    spID, orderPromotionsId, promotionFullReduction, svipShopReduction, brokerage,
                                    spID, orderPromotionsId, promotionFullReduction, svipShopReduction, brokerage,
                                    canRefundAmount, itemCount,
                                    canRefundAmount, itemCount,
                                    totalAmount, productAmount, needPayAmount, shopProductAmount, shopPostFee,
                                    totalAmount, productAmount, needPayAmount, shopProductAmount, shopPostFee,
                                    shopTaxFee,
                                    shopTaxFee,
                                    shouldPayShopAmount, orderTime, orderSubmitType, splitFlag, payStatus,
                                    shouldPayShopAmount, orderTime, orderSubmitType, splitFlag, payStatus,
                                    payedShopAmount, splitCode, realPay, eachDiscount, receiptStatus)
                                    payedShopAmount, splitCode, realPay, eachDiscount, receiptStatus)
-        VALUES (#{onlinePayWays}, #{shopOrderNo}, #{orderId}, #{orderNo}, #{organizeId}, #{shopId}, #{note}, #{userId}, #{clubId}, #{orderType},
+        VALUES (#{onlinePayWays}, #{shopOrderNo}, #{orderId}, #{orderNo}, #{organizeId},#{isColdChina}, #{shopId}, #{note}, #{userId}, #{clubId}, #{orderType},
                 #{spId}, #{orderPromotionsId}, #{promotionFullReduction}, #{svipShopReduction}, #{brokerage},
                 #{spId}, #{orderPromotionsId}, #{promotionFullReduction}, #{svipShopReduction}, #{brokerage},
                 #{canRefundAmount}, #{itemCount},
                 #{canRefundAmount}, #{itemCount},
                 #{totalAmount}, #{productAmount}, #{needPayAmount}, #{shopProductAmount}, #{shopPostFee}, #{shopTaxFee},
                 #{totalAmount}, #{productAmount}, #{needPayAmount}, #{shopProductAmount}, #{shopPostFee}, #{shopTaxFee},