package com.red.circle.order.infra.database.rds.service.product;

import com.red.circle.framework.mybatis.service.BaseService;
import com.red.circle.order.infra.database.rds.entity.product.ProductConfig;
import com.red.circle.order.inner.model.dto.ProductConfigDTO;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 内购产品列表 服务类
 * </p>
 *
 * @author pengliang
 * @since 2020-08-06
 */
public interface ProductConfigService extends BaseService<ProductConfig> {

  /**
   * 获取系统平台所有上架金币产品.
   */
  List<ProductConfig> listGoldShowcaseIsTrue(String sysOrigin, String platform);

  /**
   * 获取平台产品上架列表(VIP+CANDY).
   *
   * @param sysOrigin 系统来源
   * @param platform  平台
   * @return ignore
   */
  @Deprecated
  List<ProductConfig> listVipAndCandyShowcaseIsTrue(String sysOrigin, String platform);

  /**
   * 获取平台产品上架列表(GIFT_PACK).
   *
   * @param sysOrigin 系统来源
   * @param platform  平台
   * @return ignore
   */
  List<ProductConfig> listGiftPackShowcaseIsTrue(String sysOrigin, String platform);

  /**
   * 根据产品信息.
   *
   * @param sysOrigin 来源平台
   * @param platform  来源客户端
   * @param productId 产品ID
   * @return dto
   */
  ProductConfig getSysOriginProduct(String sysOrigin, String platform, String productId);

  /**
   * 根据条件获得产品信息
   *
   * @param sysOrigin  系统
   * @param isAndroid  是否为安卓
   * @param productIds 产品ids
   * @return 结果
   */
  Map<String, ProductConfigDTO> mapByProductIds(String sysOrigin, Boolean isAndroid,
      Set<String> productIds);

  /**
   * 获得金币产品列表
   *
   * @return 金币产品列表
   */
  List<ProductConfig> listCandyGroupBySysOrigin(String sysOrigin);

}
