
package com.tmerclub.cloud.combo.service;

import com.tmerclub.cloud.api.combo.vo.ComboSkuVo;
import com.tmerclub.cloud.combo.dto.ComboSpuSkuDTO;
import com.tmerclub.cloud.combo.model.ComboSpuSku;
import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.common.product.vo.ComboSpuSkuVO;

import java.util.List;
import java.util.Set;

/**
 * 套装商品sku项
 *
 * @author tmerclub
 * @date 2022-08-16 09:18:06
 */
public interface ComboSpuSkuService {

    /**
     * 分页获取套装商品sku项列表
     * @param pageDTO 分页参数
     * @return 套装商品sku项列表分页数据
     */
    PageVO<ComboSpuSkuVO> page(PageDTO pageDTO);

    /**
     * 保存套装商品sku项
     * @param comboSpuSkuList 套装商品sku项
     * @param comboSpuId
     */
    void save(List<ComboSpuSkuVO> comboSpuSkuList, Long comboSpuId);

    /**
     * 更新套装商品sku项
     * @param comboSpuSku 套装商品sku项
     */
    void update(ComboSpuSku comboSpuSku);

    /**
     * 根据套装商品sku项id删除套装商品sku项
     * @param comboSpuId 套装商品sku项id
     */
    void deleteById(Long comboSpuId);

    /**
     * 保存商品sku项
     * @param skuList
     * @param comboSpuId
     */
    void insertBatch(List<ComboSpuSkuVO> skuList, Long comboSpuId);

    /**
     * 批量更新
     * @param comboSpuSkuList
     */
    void batchUpdate(List<ComboSpuSkuVO> comboSpuSkuList);

    /**
     * 根据套餐id列表和sku列表获取套餐信息Sku信息
     * @param comboIdList
     * @param skuIdList
     * @return
     */
    List<ComboSkuVo> comboVoListComboAndSkuList(Set<Long> comboIdList, List<Long> skuIdList);

    /**
     * 根据套餐商品表id获取套餐商品sku信息
     * @param comboSpuId
     * @return
     */
    List<ComboSpuSkuVO> comboVoListByComboSpuId(Long comboSpuId);

    /**
     * 根据套餐商品sku项id列表批量删除套餐商品sku项
     * @param comboSpuIdList
     */
    void deleteBatch(List<Long> comboSpuIdList);

    /**
     * 根据套餐商品项id获取套餐商品sku项
     *
     * @param comboSpuId 套餐商品项id
     * @return 套餐商品sku项
     */
    List<ComboSpuSkuVO> getByComboSpuId(Long comboSpuId);

    /**
     * 根据套餐商品表id集合获取套餐商品sku信息
     * @param comboSpuIdList
     * @return
     */
    List<ComboSpuSkuVO> comboSpuSkuList(List<Long> comboSpuIdList);

    /**
     * 根据套餐id和商品id获取套餐商品sku信息
     * @param comboSpuSkuDTO
     * @return
     */
    List<ComboSpuSkuVO> comboSpuSkuListByComboIdAndSpuId(ComboSpuSkuDTO comboSpuSkuDTO);

}
