package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.exception.FebsException; 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.MallGoodsSku; import cc.mrbird.febs.mall.entity.MallShoppingCart; 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.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; @Override public List findCartGoodsList() { Long memberId = LoginUserUtil.getLoginUser().getId(); List carts = this.baseMapper.selectCartGoodsList(memberId); return MallShoppingCartConversion.INSTANCE.entityListToVoList(carts); } @Override @Transactional(rollbackFor = Exception.class) public void addGoodsToCart(List addCartDtoList) { for (AddCartDto addCartDto : addCartDtoList) { MallGoodsSku sku = mallGoodsSkuMapper.selectById(addCartDto.getSkuId()); if (sku == null) { throw new FebsException("sku不存在"); } Long memberId = LoginUserUtil.getLoginUser().getId(); MallShoppingCart cartGoods = this.baseMapper.selectCartGoodsBySkuId(sku.getId(), memberId); if (cartGoods == null) { cartGoods = new MallShoppingCart(); cartGoods.setGoodsId(sku.getGoodsId()); cartGoods.setSkuId(sku.getId()); cartGoods.setStyleId(sku.getStyleId()); cartGoods.setCnt(addCartDto.getCnt()); cartGoods.setMemberId(memberId); this.baseMapper.insert(cartGoods); } else { cartGoods.setCnt(cartGoods.getCnt() + addCartDto.getCnt()); this.baseMapper.updateById(cartGoods); } } } }