
package com.tmerclub.cloud.combo.service;

import com.tmerclub.cloud.combo.model.ComboSpu;
import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.common.product.vo.ComboSpuVO;

import java.util.List;

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

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

    /**
     * 根据套餐商品项id获取套餐商品项
     *
     * @param comboSpuId 套餐商品项id
     * @return 套餐商品项
     */
    ComboSpuVO getByComboSpuId(Long comboSpuId);

    /**
     * 保存套餐商品项
     * @param comboSpu 套餐商品项
     */
    void save(ComboSpu comboSpu);

    /**
     * 更新套餐商品项
     * @param comboSpu 套餐商品项
     */
    void update(ComboSpu comboSpu);

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

    /**
     * 批量保存
     * @param spuList
     * @param comboId
     */
    void insertBatch(List<ComboSpuVO> spuList, Long comboId);

    /**
     * 根据comboSpuIdList批量删除
     * @param comboSpuIdList
     */
    void deleteBatch(List<Long> comboSpuIdList);

    /**
     * 根据套餐id获取套餐商品信息
     * @param comboId
     * @return
     */
    List<ComboSpuVO> comboSpuByComboId(Long comboId);

    /**
     * 商品下架或者违规下架后套餐商品处理(下架的套餐商品不在用户端显示)
     * @param spuIdList
     */
    void comboSpuOfflineDispose(List<Long> spuIdList);
}
