package com.red.circle.console.app.service.app.team;

import com.red.circle.console.app.dto.clienobject.team.TeamDetailsCO;
import com.red.circle.console.app.dto.clienobject.team.TeamTableCO;
import com.red.circle.other.inner.model.cmd.team.TeamBatchStatusFromCmd;
import com.red.circle.other.inner.model.cmd.team.TeamBindBdCmd;
import com.red.circle.other.inner.model.cmd.team.TeamContactCmd;
import com.red.circle.other.inner.model.cmd.team.TeamContactIdCmd;
import com.red.circle.other.inner.model.cmd.team.TeamCreateCmd;
import com.red.circle.other.inner.model.cmd.team.TeamRemarkCmd;
import com.red.circle.other.inner.model.cmd.team.TeamRemarkIdCmd;
import com.red.circle.other.inner.model.cmd.team.TeamTableQryCmd;
import com.red.circle.other.inner.model.cmd.team.TeamUpdateCmd;
import com.red.circle.other.inner.model.dto.agency.agency.TeamContactDTO;
import com.red.circle.other.inner.model.dto.agency.agency.TeamRemarkDTO;
import java.util.List;

/**
 * 团队后台管理服务.
 *
 * @author pengliang on 2022/12/7
 */
public interface TeamProfileBackService {

  /**
   * 创建团队.
   */
  void createTeam(TeamCreateCmd cmd);

  /**
   * 修改团队.
   */
  void updateTeam(TeamUpdateCmd cmd);

  /**
   * 没有状态概念了，主播直接是删除； 相关数据全部del, 修改团队-状态.
   */
  @Deprecated
  void updateBatchTeamStatus(TeamBatchStatusFromCmd cmd);

  /**
   * 删除团队.
   */
  void delTeam(List<Long> teamIds);

  /**
   * 获取团队列表.
   */
  List<TeamTableCO> listTeam(TeamTableQryCmd query);

  /**
   * 获取团队详细信息.
   */
  TeamDetailsCO getTeamDetails(Long teamId);

  /**
   * 添加团队备注.
   */
  TeamRemarkDTO addTeamRemarks(TeamRemarkCmd cmd);

  /**
   * 移除团队备注.
   */
  void delTeamRemarks(TeamRemarkIdCmd cmd);

  /**
   * 添加联系方式.
   */
  TeamContactDTO addTeamContact(TeamContactCmd cmd);

  /**
   * 移除联系方式.
   */
  void delTeamContact(TeamContactIdCmd cmd);

  /**
   * 将团队绑定到指定BD名下.
   */
  void bindBd(TeamBindBdCmd cmd);

}
