package com.red.circle.console.app.service.app.sys.pay;

import com.red.circle.order.inner.model.cmd.DelAssociatedChannelsCmd;
import com.red.circle.order.inner.model.cmd.SysPayChannelFactoryCmd;
import com.red.circle.order.inner.model.dto.PayCommodityPreviewDTO;
import com.red.circle.order.inner.model.dto.PayCountryAssociatedChannelsDTO;
import com.red.circle.order.inner.model.dto.SysPayChannelFactoryDTO;
import com.red.circle.order.inner.model.dto.SysPayFactoryAssociatedChannelsDTO;
import java.math.BigDecimal;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 厂商渠道关联 服务类
 * </p>
 *
 * @author pengliang
 * @since 2021-11-29
 */
public interface SysPayChannelFactoryService {

  /**
   * 保存关联渠道.
   */
  void addAssociatedChannels(List<SysPayChannelFactoryCmd> params);

  /**
   * 修改关联信息.
   */
  void updateAssociatedChannels(SysPayChannelFactoryCmd param);

  /**
   * 删除渠道关联.
   */
  void delAssociatedChannels(DelAssociatedChannelsCmd param);

  /**
   * 关联厂商列表.
   */
  List<SysPayChannelFactoryDTO> listChannelFactory();

  /**
   * 获取支付关联渠道.
   */
  List<PayCountryAssociatedChannelsDTO> listByPayCountry(Long payCountryId);

  /**
   * 获取当前价格支持的厂商.
   */
  PayCommodityPreviewDTO listSupportAmountUsd(Long payCountryId, BigDecimal amountUsd);

  /**
   * 厂商一关联渠道.
   */
  List<SysPayFactoryAssociatedChannelsDTO> listChannelByFactoryCode(String factoryCode);

  /**
   * 根据渠道，获取厂商code.
   */
  Set<String> listFactoryCodeByChannelCode(Set<String> channelCodes);
}
