package org.springblade.modules.mall.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.support.Query;
import org.springblade.modules.mall.entity.GoodsSpec;
import org.springblade.modules.mall.entity.ShoppingCart;
import org.springblade.modules.mall.vo.ShoppingCartVO;

import java.util.List;

/**
 * Author pangqijun
 * Date 2022/7/28
 * Description
 */
public interface IShoppingCartService extends IService<ShoppingCart> {

	/**
	 * 添加购物车
	 * @param cart
	 */
	void add(ShoppingCart cart);

	/**
	 * 购物车列表
	 * @param query
	 * @return
	 */
	List<ShoppingCartVO> list(Query query);

	/**
	 * 增加商品数量
	 * @param shoppingCartId
	 */
	int increase(Long shoppingCartId);

	/**
	 * 减少商品数量
	 * @param shoppingCartId
	 */
	int reduce(Long shoppingCartId);

	/**
	 * 移除购物车商品
	 * @param shoppingCartIds
	 */
	void remove(List<Long> shoppingCartIds);

	/**
	 * 获取用户购物车数量
	 * @param userId
	 */
	Integer quantity(Long userId);

	/**
	 * 清空购物车
	 * @param userId
	 */
	void clear(Long userId);

	/**
	 * 获取商品规格
	 * @param goodsInfoId
	 * @return
	 */
	List<GoodsSpec> getGoodsSpec(Long goodsInfoId);

	/**
	 * 绑定规格
	 * @param shoppingCartId
	 * @param goodsSpecId
	 */
	void bindGoodsSpec(Long shoppingCartId, Long goodsSpecId);
}
