|  |  | 
 |  |  | 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.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; | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     BusParameterSettingsDao busParameterSettingsDao; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     //计算购车选中项总价以及优惠金额 | 
 |  |  |     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; | 
 |  |  | 
 |  |  |                     shopCartBillVo.setBillCouponTotal(shopCartBillVo.getBillCouponTotal().add(shopCartVo.getCouponPrice())); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             for (ShopShoppingCart shopCart : shopCartVo.getCartList()) { | 
 |  |  |                 if (shopCart.getIsSelected() == 1) { | 
 |  |  |                     selectCount += shopCart.getCartNumber(); | 
 |  |  | 
 |  |  |         return shopCartBillVo; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 计算用户的购物车产品优惠分组 | 
 |  |  |      * | 
 |  |  |      * @return | 
 |  |  |      * @param shopId | 
 |  |  |      */ | 
 |  |  |     public List<ShopCartVo> findUserCartList(Long shopId) { | 
 |  |  |         BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); | 
 |  |  |         String userId = loginUser.getOpenId(); | 
 |  |  |         List<ShopShoppingCart> list = shoppingCartDao.selectByCartUserId(shopId,userId); | 
 |  |  |         List<ShopCartVo> cartList = buildShopCart(list); | 
 |  |  |         return cartList; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @SuppressWarnings("unchecked") | 
 |  |  |     private List<ShopCartVo> buildShopCart(List<ShopShoppingCart> list) { | 
 |  |  |     public List<ShopCartVo> buildShopCart(List<ShopShoppingCart> list) { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         //定义购物车优惠分组 | 
 |  |  | 
 |  |  |         // 1表示没有优惠的默认分组 | 
 |  |  |         ShopCartVo def = new ShopCartVo(); | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 同城配送标题 | 
 |  |  |          * //DataDictionary qsfy = dataDictionaryDao.selectByTypeCode(AppConstance.QSFY); | 
 |  |  |          * //def.setMsg("2公里内满" + qsfy.getValue() + "元免配送费"); | 
 |  |  |          */ | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         def.setMsg("商城"); | 
 |  |  |         def.setCartList(new ArrayList<>()); | 
 |  |  | 
 |  |  |         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.getCartType()==ShopShoppingCart.CAR_TYPE_MICRO){ | 
 |  |  |                     selectSum = selectSum | 
 |  |  |                             .add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); | 
 |  |  |                 }else { | 
 |  |  |                     selectSum = selectSum | 
 |  |  |                             .add(shopShoppingCart.getScorePrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } 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.setSatisfactionCoupon(true); | 
 |  |  |             } | 
 |  |  |             shopCartVo.setSatisfactionCoupon(true); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |