huangzhiguo 2 gadi atpakaļ
vecāks
revīzija
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.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -203,14 +204,15 @@ public class ProductService {
             return postageMap;
         }
         // 获取商品运费 (商品数据库 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) {
             for (ProductPostageVo postageVo : postageFlagList) {
                 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()));
                     if (flag) {
@@ -231,6 +233,15 @@ public class ProductService {
             // 采美
             count = baseMapper.countUserOrder(userId);
         } 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;
         }

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

@@ -130,6 +130,19 @@ public interface BaseMapper {
      * @param skuIds    skuId列表
      */
     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

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

@@ -134,4 +134,8 @@ public class OrderParamBo implements Serializable {
     临时数据方便调用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;
+    /**
+     * 是否包含冷链费 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("includeRecharge", includeRecharge);
         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) {
             resultData.put("returnGoodsStutas", 2);
             resultData.put("helpContent", helpContent);
@@ -1750,12 +1769,13 @@ public class CartClubServiceImpl implements CartClubService {
         // 超级会员标识
         Integer svipUserId = baseMapper.getSvipUserIdByUserId(cartDto.getUserId());
         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) {
+            // 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))) {
                 return ResponseJson.error("商品价格不可见!", null);
             }
@@ -1948,6 +1968,7 @@ public class CartClubServiceImpl implements CartClubService {
                 }
             }
         }
+
         // 包装返回数据
         Map<String, Object> resultData = new HashMap<>();
         resultData.put("list", shopList);
@@ -1963,6 +1984,20 @@ public class CartClubServiceImpl implements CartClubService {
         resultData.put("includeRecharge", includeRecharge);
         resultData.put("promotions", totalPromotions);
         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) {
             resultData.put("returnGoodsStutas", 2);
             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)
     @Override
     public ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto) {
+        log.info("submitDto==="+submitDto);
         // 获取机构用户Id
         Integer clubUserId = baseMapper.getUserIdByClubId(submitDto.getClubId());
         if (null == clubUserId || clubUserId == 0) {
@@ -310,6 +311,7 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setRebateFlag(rebateFlag);
         // 售后条款id
         Integer clauseId = (Integer) payInfo.get("clauseId");
+        Integer isColdChina = (Integer) payInfo.get("isColdChina");
         orderParamBo.setClauseId(clauseId);
         // 购买类型:(1自主下单,2直接购买 3协销下单)
         orderParamBo.setCartType(submitDto.getCartType());
@@ -347,6 +349,7 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setClubCouponId(submitDto.getClubCouponId());
         orderParamBo.setOrderSeen(submitDto.getOrderSeen());
         orderParamBo.setOrderMiniType(submitDto.getOrderMiniType());
+        orderParamBo.setIsColdChain(isColdChina);
         /*
          * 保存订单
          */
@@ -447,6 +450,8 @@ public class SubmitServiceImpl implements SubmitService {
         AtomicDouble payableAmount = new AtomicDouble(0);
         // 余额支付金额
         AtomicDouble balancePayFee = new AtomicDouble(0);
+        // 冷链运输费
+        AtomicDouble isColdChina = new AtomicDouble(0);
         // 统计销量用
         JSONArray salesInfo = new JSONArray();
 
@@ -556,6 +561,15 @@ public class SubmitServiceImpl implements SubmitService {
                 if (null == product) {
                     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()) {
                     secondHandOrderFlag = true;
@@ -1430,7 +1444,8 @@ public class SubmitServiceImpl implements SubmitService {
          * 设置邮费子订单( 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
             OrderProductPo postageProduct = submitMapper.getProductDetails(1);
             // 生成子订单编号
@@ -1454,6 +1469,13 @@ public class SubmitServiceImpl implements SubmitService {
             postageOrder.setSplitCode(Constant.CUSTOMERNUM);
             postageOrder.setRealPay(mainOrder.getPostage());
             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
             postageOrder.setShopId(postageProduct.getShopId());
             postageOrder.setProductAmount(mainOrder.getPostage());

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

@@ -231,6 +231,33 @@
             #{skuId}
         </foreach>
     </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 COUNT(*)
         FROM cm_order

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

@@ -120,6 +120,7 @@
         WHERE c.userID = #{userId}
           and p.shopID = #{shopId}
           and cmop.organizeID = #{organizeId}
+          AND cmop.delFlag = 0
         ORDER BY c.cm_cartID DESC
     </select>
     <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_mall_organize_products cmop ON cmop.productId = p.productID
         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'
         <if test="splitCode !=null and splitCode !=''">
             AND p.splitCode = #{splitCode}

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

@@ -29,14 +29,14 @@
     </insert>
     <insert id="insertShopOrder" keyColumn="shopOrderID" keyProperty="shopOrderId"
             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,
                                    canRefundAmount, itemCount,
                                    totalAmount, productAmount, needPayAmount, shopProductAmount, shopPostFee,
                                    shopTaxFee,
                                    shouldPayShopAmount, orderTime, orderSubmitType, splitFlag, payStatus,
                                    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},
                 #{canRefundAmount}, #{itemCount},
                 #{totalAmount}, #{productAmount}, #{needPayAmount}, #{shopProductAmount}, #{shopPostFee}, #{shopTaxFee},