package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.exception.GeneratorException; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.conversion.MallShoppingCartConversion; import cc.mrbird.febs.mall.dto.AddCartDto; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallGoodsSku; import cc.mrbird.febs.mall.entity.MallShoppingCart; import cc.mrbird.febs.mall.mapper.MallGoodsMapper; import cc.mrbird.febs.mall.mapper.MallGoodsSkuMapper; import cc.mrbird.febs.mall.mapper.MallShoppingCartMapper; import cc.mrbird.febs.mall.service.IApiMallShoppingCartService; import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @author wzy * @date 2021-09-17 **/ @Slf4j @Service @RequiredArgsConstructor public class ApiMallShoppingCartServiceImpl extends ServiceImpl implements IApiMallShoppingCartService { private final MallGoodsSkuMapper mallGoodsSkuMapper; private final MallGoodsMapper mallGoodsMapper; @Override public List findCartGoodsList(Integer type) { if (type == null) { type = 1; } Long memberId = LoginUserUtil.getLoginUser().getId(); List carts = this.baseMapper.selectCartGoodsList(memberId, type); return MallShoppingCartConversion.INSTANCE.entityListToVoList(carts); } @Override @Transactional(rollbackFor = Exception.class) public void addGoodsToCart(List addCartDtoList) { Long memberId = LoginUserUtil.getLoginUser().getId(); for (AddCartDto addCartDto : addCartDtoList) { Long goodsId = null; Long skuId = null; Long styleId = null; MallShoppingCart cartGoods = null; if (addCartDto.getType() == null) { addCartDto.setType(1); } if (addCartDto.getType() == 1) { MallGoodsSku sku = mallGoodsSkuMapper.selectById(addCartDto.getSkuId()); if (sku == null) { throw new FebsException("sku不存在"); } goodsId = sku.getGoodsId(); skuId = sku.getId(); styleId = sku.getStyleId(); cartGoods = this.baseMapper.selectCartGoodsBySkuId(addCartDto.getSkuId(), memberId); } else { MallGoods mallGoods = mallGoodsMapper.selectById(addCartDto.getSkuId()); if (mallGoods == null) { throw new FebsException("积分商品不存在"); } goodsId = mallGoods.getId(); LambdaQueryWrapper cartQuery = new LambdaQueryWrapper<>(); cartQuery.eq(MallShoppingCart::getGoodsId, goodsId) .eq(MallShoppingCart::getMemberId, memberId) .last("limit 1"); cartGoods = this.baseMapper.selectOne(cartQuery); } if (cartGoods == null) { cartGoods = new MallShoppingCart(); cartGoods.setGoodsId(goodsId); cartGoods.setSkuId(skuId); cartGoods.setStyleId(styleId); cartGoods.setCnt(addCartDto.getCnt()); cartGoods.setMemberId(memberId); cartGoods.setType(addCartDto.getType()); this.baseMapper.insert(cartGoods); } else { cartGoods.setCnt(cartGoods.getCnt() + addCartDto.getCnt()); this.baseMapper.updateById(cartGoods); } } } }