jyy
2021-03-19 c16b9ffceac828840ef7ebc4827612d17906704a
zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java
@@ -1,19 +1,15 @@
package com.matrix.system.shopXcx.api.service;
import com.matrix.core.tools.LogUtil;
import com.matrix.biz.bean.BizUser;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.bean.CustomerDataDictionary;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.tools.LogUtil;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.shopXcx.api.vo.ShopCartBillVo;
import com.matrix.system.shopXcx.api.vo.ShopCartVo;
import com.matrix.system.shopXcx.bean.ShopCoupon;
import com.matrix.system.shopXcx.bean.ShopShoppingCart;
import com.matrix.system.shopXcx.dao.ShopShoppingCartDao;
import com.matrix.system.shopXcx.api.vo.ShopCartBillVo;
import com.matrix.system.shopXcx.api.vo.ShopCartVo;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -41,11 +37,7 @@
    public ShopCartBillVo buildShopCartBillVo(List<ShopCartVo> cartList) {
        ShopCartBillVo shopCartBillVo = new ShopCartBillVo();
        //计算购车选中项总价以及优惠金额
        BigDecimal billTotal = BigDecimal.ZERO;
        BigDecimal billCouponTotal = BigDecimal.ZERO;
        //未优惠之前的金额
        BigDecimal srcTotal = BigDecimal.ZERO;
        //计算是否存在选中的产品
        Integer selectCount = 0;
@@ -64,8 +56,6 @@
                    shopCartBillVo.setBillCouponTotal(shopCartBillVo.getBillCouponTotal().add(shopCartVo.getCouponPrice()));
                }
            }
            for (ShopShoppingCart shopCart : shopCartVo.getCartList()) {
                if (shopCart.getIsSelected() == 1) {
                    selectCount += shopCart.getCartNumber();
@@ -75,6 +65,7 @@
        }
        shopCartBillVo.setCartCount(cartCount);
        shopCartBillVo.setSelectCount(selectCount);
        return shopCartBillVo;
    }
@@ -84,10 +75,10 @@
     * @return
     * @param shopId
     */
    public List<ShopCartVo> findUserCartList(Long shopId) {
    public List<ShopCartVo> findUserCartList(Long shopId,Integer cartType) {
        BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        String userId = loginUser.getOpenId();
        List<ShopShoppingCart> list = shoppingCartDao.selectByCartUserId(shopId,userId);
        List<ShopShoppingCart> list = shoppingCartDao.selectByCartUserId(shopId,userId,cartType);
        List<ShopCartVo> cartList = buildShopCart(list);
        return cartList;
    }
@@ -108,13 +99,9 @@
        // 1表示没有优惠的默认分组
        ShopCartVo def = new ShopCartVo();
        /**
         * 同城配送标题
         * //DataDictionary qsfy = dataDictionaryDao.selectByTypeCode(AppConstance.QSFY);
         * //def.setMsg("2公里内满" + qsfy.getValue() + "元免配送费");
         */
        def.setMsg("肽研官方商城");
        def.setMsg("商城");
        def.setCartList(new ArrayList<>());
        // 组合默认分组
        cartList.add(def);
@@ -125,19 +112,23 @@
        //查询购物车中的产品匹配上的所有优惠活动
        for (ShopShoppingCart shoppingCart : list) {
            List<ShopCoupon> shopCoupons = shopCouponService.getHdListByProductId(shoppingCart.getCartProductId());
            if (CollectionUtils.isNotEmpty(shopCoupons)) {
                // 把所有的优惠券和购物车条目先关联一下,后续可以计算优惠升级的情况
                shoppingCart.setShopCoupons(shopCoupons);
                for (ShopCoupon shopCoupon : shopCoupons) {
                    shopCouponMap.put(shopCoupon.getId(), shopCoupon);
                }
            } else {
                // 该产品没有参加优惠券
            if(shoppingCart.getCartType()==ShopShoppingCart.CAR_TYPE_SCORE){
                // 积分兑换产品不参加优惠
                def.getCartList().add(shoppingCart);
            }else{
                List<ShopCoupon> shopCoupons = shopCouponService.getHdListByProductId(shoppingCart.getCartProductId());
                if (CollectionUtils.isNotEmpty(shopCoupons)) {
                    // 把所有的优惠券和购物车条目先关联一下,后续可以计算优惠升级的情况
                    shoppingCart.setShopCoupons(shopCoupons);
                    for (ShopCoupon shopCoupon : shopCoupons) {
                        shopCouponMap.put(shopCoupon.getId(), shopCoupon);
                    }
                } else {
                    // 该产品没有参加优惠券
                    def.getCartList().add(shoppingCart);
                }
            }
        }
        //计算没有优惠组的价格
@@ -279,13 +270,28 @@
        List<ShopShoppingCart> cartList = shopCartVo.getCartList();
        // 计算总价
        BigDecimal sum = BigDecimal.ZERO;
        //抵扣总积分
        BigDecimal scoreSum = BigDecimal.ZERO;
        // 选中项总价
        BigDecimal selectSum = BigDecimal.ZERO;
        for (ShopShoppingCart shopShoppingCart : cartList) {
            sum = sum.add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber())));
            if (shopShoppingCart.getIsSelected() == 1) {
                selectSum = selectSum
                        .add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber())));
            if(ShopShoppingCart.CAR_TYPE_MICRO==shopShoppingCart.getCartType()){
                //直接购买
                sum = sum.add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber())));
                if (shopShoppingCart.getIsSelected() == 1) {
                    selectSum = selectSum
                            .add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber())));
                }
            }else if(ShopShoppingCart.CAR_TYPE_SCORE==shopShoppingCart.getCartType()){
                //积分兑换
                sum = sum.add(shopShoppingCart.getScorePrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber())));
                if (shopShoppingCart.getIsSelected() == 1) {
                    selectSum = selectSum
                            .add(shopShoppingCart.getScorePrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber())));
                    scoreSum = scoreSum.add(new BigDecimal(shopShoppingCart.getScoreCount() * shopShoppingCart.getCartNumber()));
                }
            }else{
                throw new GlobleException("参数错误");
            }
        }
@@ -316,15 +322,10 @@
                }
            }
        } else {
            BusParameterSettings qsfy= busParameterSettingsDao.selectCompanyParamByCode(AppConstance.IN_PROVINCE_PACKAGE_LIST,17L);
            shopCartVo.setSubtotal(selectSum);
            shopCartVo.setSrcPrice(selectSum);
            if (selectSum.compareTo(new BigDecimal(qsfy.getParamValue())) < 0) {
                shopCartVo.setSatisfactionCoupon(false);
            } else {
                shopCartVo.setSubtotal(selectSum);
                shopCartVo.setSrcPrice(selectSum);
                shopCartVo.setSatisfactionCoupon(true);
            }
        }
        shopCartVo.setScorePay(scoreSum);
    }
}