package com.ruoyi.web.modules.cart.service;

import java.util.List;
import com.ruoyi.web.modules.cart.dto.CartCheckoutPrepareDTO;
import com.ruoyi.web.modules.cart.dto.CartItemAddDTO;
import com.ruoyi.web.modules.cart.dto.CartItemCheckedBatchDTO;
import com.ruoyi.web.modules.cart.dto.CartItemQuantityDTO;
import com.ruoyi.web.modules.cart.vo.CartCheckoutPrepareVO;
import com.ruoyi.web.modules.cart.vo.CartCleanInvalidResultVO;
import com.ruoyi.web.modules.cart.vo.CartItemAddResultVO;
import com.ruoyi.web.modules.cart.vo.CartListVO;

/**
 * C 端购物车 Service
 */
public interface ICartAppService
{
    CartListVO list(Long memberId);

    CartItemAddResultVO addItem(Long memberId, CartItemAddDTO dto);

    CartItemAddResultVO updateQuantity(Long memberId, Long cartItemId, CartItemQuantityDTO dto);

    void updateChecked(Long memberId, CartItemCheckedBatchDTO dto);

    void removeItem(Long memberId, Long cartItemId);

    void removeItems(Long memberId, List<Long> cartItemIds);

    CartCleanInvalidResultVO cleanInvalid(Long memberId);

    CartCheckoutPrepareVO prepareCheckout(Long memberId, CartCheckoutPrepareDTO dto);
}
