package com.panzhihua.service_community.service.impl; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.shop.ComShopCartDTO; import com.panzhihua.common.model.dtos.shop.ComShopEditNubCartDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.shop.ComShopCartListVO; import com.panzhihua.common.model.vos.shop.ComShopCartStoreVO; import com.panzhihua.common.model.vos.shop.ComShopCartVO; import com.panzhihua.service_community.dao.ComShopCartDAO; import com.panzhihua.service_community.dao.ComShopGoodsAttrDAO; import com.panzhihua.service_community.dao.ComShopGoodsDAO; import com.panzhihua.service_community.dao.ComShopStoreDAO; import com.panzhihua.service_community.model.dos.ComShopCartDO; import com.panzhihua.service_community.model.dos.ComShopGoodsAttrDO; import com.panzhihua.service_community.model.dos.ComShopGoodsDO; import com.panzhihua.service_community.model.dos.ComShopStoreDO; import com.panzhihua.service_community.service.ComShopCartService; import lombok.extern.slf4j.Slf4j; /** * @auther lyq * @create 2021-04-14 15:02:14 * @describe 购物车表服务实现类 */ @Slf4j @Service public class ComShopCartServiceImpl extends ServiceImpl implements ComShopCartService { @Resource private ComShopGoodsDAO shopGoodsDAO; @Resource private ComShopStoreDAO shopStoreDAO; @Resource private ComShopGoodsAttrDAO shopGoodsAttrDAO; /** * 根据用户id查询购物车列表 * * @param userId * 用户id * @return 购物车列表 */ @Override public R shopCartList(Long userId) { // 返回参数 ComShopCartListVO comShopCart = new ComShopCartListVO(); // 失效宝贝集合 List invalidCartList = new ArrayList<>(); // 有效宝贝集合 List cartList = new ArrayList<>(); List shopCartDOList = this.baseMapper.selectList(new QueryWrapper().eq("user_id", userId)); if (!shopCartDOList.isEmpty()) { shopCartDOList.forEach(shopCart -> { // 查询当前商品是否是有效商品 ComShopGoodsDO goodsDO = shopGoodsDAO.selectOne(new QueryWrapper().eq("id", shopCart.getGoodsId()) .eq("delete_status", ComShopGoodsDO.deleteStatus.no).eq("status", ComShopGoodsDO.status.sell)); if (goodsDO == null) { ComShopCartVO invalidCart = new ComShopCartVO(); BeanUtils.copyProperties(shopCart, invalidCart); invalidCartList.add(invalidCart); return; } // 有效商品区分店铺 if (cartList.isEmpty()) { ComShopCartStoreVO cartStoreVO = new ComShopCartStoreVO(); // 查询商品所属店铺 ComShopStoreDO shopStoreDO = shopStoreDAO.selectById(goodsDO.getStoreId()); if (shopStoreDO != null) { cartStoreVO.setStoreId(shopStoreDO.getId()); cartStoreVO.setStoreName(shopStoreDO.getName()); cartStoreVO.setStoreLogo(shopStoreDO.getLogo()); } List cartsList = new ArrayList<>(); ComShopCartVO cartVO = new ComShopCartVO(); BeanUtils.copyProperties(shopCart, cartVO); cartsList.add(cartVO); cartStoreVO.setCartList(cartsList); cartList.add(cartStoreVO); } else { boolean isOk = true; for (ComShopCartStoreVO vo : cartList) { if (vo.getStoreId().equals(goodsDO.getStoreId())) { isOk = false; ComShopCartVO cartVO = new ComShopCartVO(); BeanUtils.copyProperties(shopCart, cartVO); vo.getCartList().add(cartVO); } } if (isOk) { ComShopCartStoreVO cartStoreVO = new ComShopCartStoreVO(); // 查询商品所属店铺 ComShopStoreDO shopStoreDO = shopStoreDAO.selectById(goodsDO.getStoreId()); if (shopStoreDO != null) { cartStoreVO.setStoreId(shopStoreDO.getId()); cartStoreVO.setStoreName(shopStoreDO.getName()); cartStoreVO.setStoreLogo(shopStoreDO.getLogo()); } List cartsList = new ArrayList<>(); ComShopCartVO cartVO = new ComShopCartVO(); BeanUtils.copyProperties(shopCart, cartVO); cartsList.add(cartVO); cartStoreVO.setCartList(cartsList); cartList.add(cartStoreVO); } } }); // 设置返回参数 comShopCart.setInvalidCartList(invalidCartList); comShopCart.setCartList(cartList); } return R.ok(comShopCart); } /** * 购物车添加 * * @param comShopCartDTO * 请求参数 * @return 添加结果 */ @Override public R shopAddCart(ComShopCartDTO comShopCartDTO) { // 查询当前商品是否已经在购物车中 ComShopCartDO shopCartDO = this.baseMapper.selectOne(new QueryWrapper().eq("user_id", comShopCartDTO.getUserId()) .eq("goods_id", comShopCartDTO.getGoodsId()).eq("goods_attr_id", comShopCartDTO.getGoodsAttrId())); if (shopCartDO == null) {// 购物车表里未有该商品的记录 shopCartDO = new ComShopCartDO(); shopCartDO.setUserId(comShopCartDTO.getUserId()); shopCartDO.setAmount(comShopCartDTO.getNumber()); // 查询商品 ComShopGoodsDO shopGoodsDO = shopGoodsDAO.selectById(comShopCartDTO.getGoodsId()); if (shopGoodsDO == null) { return R.fail("未查询到商品信息"); } shopCartDO.setGoodsName(shopGoodsDO.getName()); shopCartDO.setGoodsId(shopGoodsDO.getId()); shopCartDO.setStoreId(shopGoodsDO.getStoreId()); // 查询商品规格 ComShopGoodsAttrDO shopGoodsAttrDO = shopGoodsAttrDAO.selectById(comShopCartDTO.getGoodsAttrId()); if (shopGoodsAttrDO == null) { return R.fail("未查询到商品规格"); } shopCartDO.setGoodsAttrId(shopGoodsAttrDO.getId()); shopCartDO.setGoodsAttr(shopGoodsAttrDO.getGoodsAttr()); shopCartDO.setGoodsAttrPic(shopGoodsAttrDO.getAttrPic()); shopCartDO.setPrice(shopGoodsAttrDO.getPrice()); // 执行添加操作 if (this.baseMapper.insert(shopCartDO) > 0) { return R.ok(); } else { return R.fail("添加购物车失败"); } } else {// 购物车已有该商品 shopCartDO.setAmount(shopCartDO.getAmount() + comShopCartDTO.getNumber()); // 执行修改操作 if (this.baseMapper.updateById(shopCartDO) > 0) { return R.ok(); } else { return R.fail("添加购物车失败"); } } } /** * 购物车内商品数量修改 * * @param shopEditNubCartDTO * 请求参数 * @return 修改结果 */ @Override public R shopEditNubCart(ComShopEditNubCartDTO shopEditNubCartDTO) { // 查询购物车记录 ComShopCartDO shopCartDO = this.baseMapper.selectById(shopEditNubCartDTO.getCartId()); if (shopCartDO == null) { return R.fail("未查询到购物车记录"); } shopCartDO.setAmount(shopEditNubCartDTO.getNumber()); // 执行修改操作 if (this.baseMapper.updateById(shopCartDO) > 0) { return R.ok(); } else { return R.fail("修改失败"); } } /** * 删除购物车记录 * * @param Ids * 购物车id集合 * @return 删除结果 */ public R shopDelCart(List Ids) { if (this.baseMapper.deleteBatchIds(Ids) > 0) { return R.ok(); } else { return R.fail("修改失败"); } } /** * 查询用户购物车商品数量 * * @param userId * 用户id * @return 用户购物车商品数量 */ public R shopCartUserTotal(Long userId) { int goodsNum = 0; // 查询用户购物车所有商品集合 List shopCartDOList = this.baseMapper.selectList(new QueryWrapper().eq("user_id", userId)); if (!shopCartDOList.isEmpty()) { for (ComShopCartDO cartDO : shopCartDOList) { // 查询当前商品是否是有效商品 ComShopGoodsDO goodsDO = shopGoodsDAO.selectOne(new QueryWrapper().eq("id", cartDO.getGoodsId()) .eq("delete_status", ComShopGoodsDO.deleteStatus.no).eq("status", ComShopGoodsDO.status.sell)); if (goodsDO != null) { goodsNum++; } } } return R.ok(goodsNum); } }