
package com.tmerclub.cloud.product.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
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 java.util.List;

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


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

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


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


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

    /**
     * 根据skuId获取所有组合商品信息
     * @param skuIds
     * @return
     */
    List<ShopCartItemVO> getCombShopItemsAndBySkuIds(List<Long> skuIds);

    /**
     * 根据组合关联的spuId获取所有组合商品ids
     * @param spuIds
     * @param skuIds
     * @return
     */
    List<Long> getCombSpusByComboSpuIds(List<Long> spuIds,List<Long> skuIds);

    /**
     * 删除关联信息
     * @param spuIds
     */
    void deleteByComboSpuIds(List<Long> spuIds);

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

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