package com.red.circle.other.domain.gateway.props;

import com.red.circle.common.business.core.enums.SysOriginPlatformEnum;
import com.red.circle.other.inner.enums.activity.PropsActivityTypeEnum;
import com.red.circle.other.inner.model.dto.activity.props.ActivityPropsGroup;
import com.red.circle.other.inner.model.dto.activity.props.ActivityPropsRule;
import com.red.circle.other.inner.model.dto.activity.props.ActivityResource;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 活动道具配置.
 *
 * @author pengliang on 2021/6/21
 */
public interface ActivitySourceGroupGateway {

  /**
   * 获取规则信息.
   */
  ActivityPropsRule getByRuleId(Long id);

  /**
   * 获取平台指定道具类型.
   *
   * @param sysOrigin    平台来源
   * @param activityType 类型
   * @return list
   */
  List<ActivityPropsRule> listRule(SysOriginPlatformEnum sysOrigin,
      PropsActivityTypeEnum activityType);

  /**
   * 获取指定类型活动资源.
   *
   * @param sysOrigin    平台信息
   * @param activityType 活动类型
   * @return 活动资源组信息
   */
  List<ActivityResource> listActivityResource(SysOriginPlatformEnum sysOrigin,
      PropsActivityTypeEnum activityType);

  /**
   * 获取指定类型活动资源组id.
   *
   * @param sysOrigin    平台信息
   * @param activityType 活动类型
   * @return 活动资源组ids
   */
  List<Long> listActivityResourceGroupIds(SysOriginPlatformEnum sysOrigin,
      PropsActivityTypeEnum activityType);

  /**
   * 获取指定规则道具信息.
   *
   * @param ruleId 用户id
   * @return rule
   */
  ActivityResource getActivityResource(Long ruleId);

  /**
   * 获得资源组详细信息
   *
   * @param sysOrigin 平台信息
   * @param groupIds  资源组ID集合
   * @return 资源组详细信息
   */
  Map<Long, ActivityPropsGroup> mapActivityPropsGroup(String sysOrigin,
      Set<Long> groupIds);

  /**
   * 获得资源组详细信息
   *
   * @param sysOrigin 平台信息
   * @param groupId   资源组ID
   * @return 资源组详细信息
   */
  ActivityPropsGroup getActivityPropsGroup(String sysOrigin, Long groupId);

}
