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

import com.red.circle.other.app.dto.clientobject.BdPermissionCO;
import com.red.circle.other.app.dto.clientobject.BdTeamMemberDetailCO;
import com.red.circle.other.app.dto.clientobject.BdTeamOverviewCO;
import com.red.circle.other.app.dto.clientobject.BdTeamSummaryCO;
import com.red.circle.other.app.dto.cmd.BdTeamMemberDetailQueryCmd;
import com.red.circle.other.app.dto.cmd.BdTeamQueryCmd;

/**
 * BD团队服务
 */
public interface BdTeamService {

    /**
     * 查询BD团队概览
     * <p>
     * 支持三种场景：
     * 1. 列表查询：不传targetUserId，返回当前用户的团队成员列表
     * 2. 详情查询：传targetUserId，返回指定成员的收入明细
     * </p>
     *
     * @param cmd 查询命令
     * @return 团队概览信息
     */
    BdTeamOverviewCO queryTeamOverview(BdTeamQueryCmd cmd);

    /**
     * 查询BD团队成员详情（More弹框）
     * <p>
     * 返回按半月周期分组的收入明细，包括成员列表
     * </p>
     *
     * @param cmd 查询命令
     * @return 成员详情
     */
    BdTeamMemberDetailCO queryMemberDetail(BdTeamMemberDetailQueryCmd cmd);

    /**
     * 查询BD团队总览
     * <p>
     * 返回当前用户在BD_LEADER、BD、AGENCY三个角色下的汇总数据
     * </p>
     *
     * @param userId 用户ID
     * @return 团队总览
     */
    BdTeamSummaryCO queryTeamSummary(Long userId);

    /**
     * 检查BD权限
     * <p>
     * 返回用户是否有User Editing和Room Editing权限
     * </p>
     *
     * @param userId 用户ID
     * @return 权限检查结果
     */
    BdPermissionCO checkPermission(Long userId);
}
