package com.red.circle.other.app.inner.service.team;

import com.red.circle.other.inner.model.dto.agency.agency.TeamExchangeSurplusTargetDTO;
import com.red.circle.other.inner.model.dto.agency.agency.TeamMemberDTO;
import com.red.circle.other.inner.model.dto.agency.agency.TeamProfileDTO;
import com.red.circle.other.inner.model.dto.agency.agency.UserTeamRegionDTO;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 代理团队服务.
 *
 * @author pengliang on 2023/6/1
 */
public interface AgentTeamClientService {

  /**
   * 是否存在，团队成员.
   *
   * @return true 是，false 不是
   */
  boolean existsTeamMember(Long userId);

  /**
   * 是否存在拥有者.
   *
   * @return true 是，false 不是
   */
  boolean existsTeamOwn(Long userId);

  /**
   * 刷新活跃，时间.
   */
  void refreshActiveTime(Long userId);

  /**
   * 获取成员信息.
   */
  TeamMemberDTO getByMemberId(Long memberId);

  /**
   * 获取团队资料
   */
  TeamProfileDTO getProfileByOwnUserId(Long ownUserId);

  /**
   * 获取用户所在团队资料.
   */
  TeamProfileDTO getProfileByMemberId(Long memberId);

  /**
   * 用户所在团队，区域信息.
   */
  List<UserTeamRegionDTO> listUserTeamRegion(Set<Long> userIds);

  /**
   * 获取团队资料
   */
  Map<Long, TeamProfileDTO> mapProfileByIds(Set<Long> ids);

  /**
   * 获取团队成员.
   */
  Map<Long, TeamMemberDTO> mapByMemberIds(Collection<Long> memberIds);

  /**
   * 获取存在的成员用户id.
   */
  List<Long> listMemberIds(Set<Long> userIds);

  /**
   * 获取指定团队资料.
   */
  TeamProfileDTO getProfileById(Long id);

  /**
   * 查询主播目标转换美金记录
   */
  List<TeamExchangeSurplusTargetDTO> listByCondition(Long lastId, Long userId, String sysOrigin,
      Integer dateNumber);

  /**
   * 获取主播目标转换美金金额
   */
  String getTotalAmountUsd(Long userId, String sysOrigin, Integer dateNumber);
}
