package com.tmerclub.cloud.api.combo.feign;

import com.tmerclub.cloud.common.product.vo.ComboVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity;

import java.util.List;

/**
 * @author xxw
 * @date 2022/8/16 14:45
 */
public interface ComboFeignClient {

    /**
     * 根据spuId获取相关的套餐信息
     *
     * @param shopId
     * @param spuId
     * @return
     */
    ServerResponseEntity<List<ComboVO>> listComboInfoBySpuId(Long shopId, Long spuId);

    /**
     * 根据商品id获取套餐信息
     *
     * @param spuId
     * @return
     */
    ServerResponseEntity<List<ComboVO>> comboVoListBySpuId(Long spuId);

    /**
     * 商品下架时如果商品在套餐活动中且为主商品则失效套餐活动
     *
     * @param spuId
     */
    void offComboMainSpu(Long spuId);

    /**
     * 检查商品是否为套餐活动（状态正在进行中的）的主商品
     * @param spuId
     * @param shopId
     * @return
     */
    ServerResponseEntity<Boolean> checkComboSpu(Long spuId, Long shopId);

    /**
     * 根据套餐id集合检查套餐是否全部可用
     *
     * @param comboIdList
     * @return 返回不可用套餐数量 0代表全部可用，其它数据代表有不可用的套餐
     */
    ServerResponseEntity<Integer> checkComboIsUsable(List<Long> comboIdList);

    /**
     * 根据套餐商品上下级时删除套餐缓存
     *
     * @param spuId
     */
    void removeComboSpuCache(Long spuId);

}
