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

import com.red.circle.framework.dto.PageResult;
import com.red.circle.order.inner.model.cmd.SysPayCountryAddCmd;
import com.red.circle.order.inner.model.cmd.SysPayCountryQryCmd;
import com.red.circle.order.inner.model.dto.PayCountryDTO;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 开通支付国家 服务类
 * </p>
 *
 * @author pengliang
 * @since 2021-11-29
 */
public interface SysPayCountryService {

  /**
   * 开通支付国家.
   */
  PageResult<PayCountryDTO> pageOpenPayCountry(SysPayCountryQryCmd query);

  /**
   * 开通支付国家列表, ids可为空.
   */
  List<PayCountryDTO> listOpenPayCountry(Set<Long> ids);

  /**
   * 添加开通支付国家.
   */
  void addOpenPayCountry(List<SysPayCountryAddCmd> params);

  /**
   * 删除.
   */
  void delOpenPayCountry(List<Long> ids);

  /**
   * 修改美元汇率.
   */
  void updateUsdExchangeRate(Long id, BigDecimal rate);

  /**
   * 修改国家货币.
   */
  void updateCountryCurrency(Long id, String currency);

  /**
   * 修改权重.
   */
  void updateSort(Long id, Integer sort);

  /**
   * 修改国家上下架状态.
   */
  void shelf(Long id, Boolean shelf);

  /**
   * 根据id集合获得.
   */
  Map<Long, PayCountryDTO> mapCountryByIds(Set<Long> ids);

  /**
   * 根据区域id集合获得支持支付的国家.
   */
  List<PayCountryDTO> listPayCountryByRegionId(String regionId);
}
