Search in sources :

Example 1 with Cart

use of com.whoiszxl.entity.Cart in project shopzz by whoiszxl.

the class CartServiceImpl method addProductToCart.

@Override
public boolean addProductToCart(CartAddQuery cartAddQuery) {
    Integer quantity = cartAddQuery.getQuantity();
    Long skuId = cartAddQuery.getSkuId();
    // 1. 通过会员ID和SKU ID查询购物车表中是否存在这条记录
    long memberId = StpUtil.getLoginIdAsLong();
    LambdaQueryWrapper<Cart> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(Cart::getMemberId, memberId);
    queryWrapper.eq(Cart::getSkuId, skuId);
    Cart cart = this.getOne(queryWrapper);
    boolean saveOrUpdateFlag = false;
    if (cart == null) {
        // 2. 购物车不存在,新增
        Cart addCart = new Cart();
        addCart.setMemberId(memberId);
        addCart.setSkuId(skuId);
        addCart.setQuantity(quantity);
        CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> {
            // 3. 查询SKU信息
            ResponseResult<SkuDTO> skuResult = productFeignClient.getSkuInfoBySkuId(skuId);
            SkuDTO sku = skuResult.getData();
            addCart.setProductId(sku.getProductId());
            addCart.setSkuName(sku.getSkuName());
            addCart.setSkuPic(sku.getImgUrl());
            addCart.setPrice(sku.getSalePrice());
            addCart.setChecked(CartCheckConstants.CHECKED);
            addCart.setStatus(StatusEnum.OPEN.getCode());
        }, executor);
        // TODO 查询销售属性
        addCart.setSaleAttr("todo");
        try {
            CompletableFuture.allOf(future1).get();
        } catch (Exception e) {
            log.error("新增购物车失败", e);
        }
        saveOrUpdateFlag = this.save(addCart);
    } else {
        // 3. 购物车存在,更新
        cart.setQuantity(cart.getQuantity() + cartAddQuery.getQuantity());
        saveOrUpdateFlag = this.updateById(cart);
    }
    return saveOrUpdateFlag;
}
Also used : SkuDTO(com.whoiszxl.dto.SkuDTO) ExecutionException(java.util.concurrent.ExecutionException) Cart(com.whoiszxl.entity.Cart) LambdaQueryWrapper(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)

Example 2 with Cart

use of com.whoiszxl.entity.Cart in project shopzz by whoiszxl.

the class CartServiceImpl method updateQuantity.

@Override
public Boolean updateQuantity(long memberId, Long cartId, Integer updateQuantity) {
    // 1. 获取购物车,并进行基础校验
    Cart cart = this.getById(cartId);
    if (cart != null && cart.getMemberId().equals(memberId)) {
        // 2. 更新数量
        cart.setQuantity(cart.getQuantity() + updateQuantity);
        this.updateById(cart);
        return true;
    }
    return false;
}
Also used : Cart(com.whoiszxl.entity.Cart)

Aggregations

Cart (com.whoiszxl.entity.Cart)2 LambdaQueryWrapper (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)1 SkuDTO (com.whoiszxl.dto.SkuDTO)1 ExecutionException (java.util.concurrent.ExecutionException)1