package com.m2pool.lease.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.m2pool.lease.dto.PageResult;
import com.m2pool.lease.dto.Result;
import com.m2pool.lease.dto.ShopCartDto;
import com.m2pool.lease.dto.v2.ShopCartV2Dto;
import com.m2pool.lease.entity.LeaseShoppingCart;
import com.m2pool.lease.vo.BaseVo;
import com.m2pool.lease.vo.PageVo;
import com.m2pool.lease.vo.ProductAndMachineVo;
import com.m2pool.lease.vo.ShoppingCartInfoURDVo;
import com.m2pool.lease.vo.v2.AddGoodsVo;
import com.m2pool.lease.vo.v2.CartInfoVo;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * <p>
 * 购物车表 服务类
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
public interface LeaseShoppingCartService extends IService<LeaseShoppingCart> {
    /**
     * 添加购物车
     * @param shoppingCartInfoURDVoList
     * @return
     */
    Result<String> addGoods(List<ShoppingCartInfoURDVo> shoppingCartInfoURDVoList);


    /**
     * 获取购物车列表
     * @param pageVo
     * @return
     */
    PageResult<ShopCartDto> getGoodsList(PageVo pageVo);

    /**
     * 批量删除购物车
     * @param baseVoList
     * @return
     */
    Result<String> deleteBatchGoods(List<ProductAndMachineVo> baseVoList);
    /**
     * 删除购物车
     * @param baseVo
     * @return
     */
    Result<String> deleteGoods(BaseVo baseVo);


    /**
     * 批量删除购物车中已下架商品
     * @return
     */
    Result<String> deleteBatchGoodsForIsDelete();


    /**
     * 批量添加购物车
     * @param addGoodsVoList
     * @return
     */
    Result<String> addGoodsV2(List<AddGoodsVo> addGoodsVoList);


    /**
     * 查询购物车中商品列表
     * @param pageVo
     * @return
     */
    PageResult<ShopCartV2Dto> getGoodsListV2(PageVo pageVo);
    /**
     * 批量删除购物车中商品
     * @param baseVoList
     * @return
     */
    Result<String> deleteBatchGoodsV2(List<CartInfoVo> baseVoList);

    /**
     * 批量删除购物车中已下架商品
     * @return
     */
    Result<String> deleteBatchGoodsForIsDeleteV2();
}
