
package com.tmerclub.cloud.product.mapper;

import com.tmerclub.cloud.common.order.vo.ShopCartItemVO;
import com.tmerclub.cloud.common.product.dto.SkuComboDTO;
import com.tmerclub.cloud.common.product.vo.SkuComboVO;
import com.tmerclub.cloud.product.model.SkuCombo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *
 *
 * @author lhd
 * @date 2023-11-06 15:52:12
 */
public interface SkuComboMapper {

    /**
     * 获取列表
     * @return 列表
     */
    List<SkuCombo> list();


    /**
     * 更新
     * @param skuCombo
     */
    void update(@Param("skuCombo") SkuCombo skuCombo);

    /**
     * 根据id删除
     * @param skuIds
     */
    void deleteBySkuIds(@Param("skuIds") List<Long> skuIds);

    /**
     * 根据id删除
     * @param skuIds
     */
    void deleteByComboSpuIds(@Param("spuIds") List<Long> spuIds);

    /**
     * 通过关联skuId删除关联信息
     * @param skuIds
     */
    void deleteByComboSkuIds(@Param("skuIds") List<Long> skuIds);

    /**
     * 批量保存
     *
     * @param skuComboList
     */
    void saveBatch(@Param("skuComboList") List<SkuComboDTO> skuComboList);

    /**
     * 根据skuId获取所有组合商品信息
     *
     * @param skuIds
     * @param lang
     * @return
     */
    List<SkuComboVO> getCombSpusBySkuIds(@Param("skuIds") List<Long> skuIds, @Param("lang") Integer lang);

    /**
     * 根据skuId获取所有组合商品信息
     *
     * @param spuIds
     * @return
     */
    List<SkuComboVO> getCombSpusBySpuIds(@Param("spuIds") List<Long> spuIds);

    /**
     * 获取组合商品购物项信息
     *
     * @param skuIds
     * @param lang
     * @return
     */
    List<ShopCartItemVO> getCombShopItemsAndBySkuId(@Param("skuIds") List<Long> skuIds, @Param("lang") Integer lang);

    /**
     * 根据组合关联的skuId获取所有组合商品信息
     *
     * @param spuIds
     * @param skuIds
     * @return
     */
    List<Long> getCombSpusByComboSpuIdsOrSkuIds(@Param("spuIds") List<Long> spuIds, @Param("skuIds") List<Long> skuIds);


    /**
     * 获取组合的商品中没有启用的商品数量
     *
     * @param spuId
     * @return
     */
    Integer countDisableComboSpuBySpuId(@Param("spuId") Long spuId);
}
