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

import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillCO;
import com.red.circle.other.app.dto.clientobject.TeamBdMemberBillDetailCO;
import com.red.circle.other.app.dto.clientobject.TeamBdMemberCO;
import com.red.circle.other.app.dto.clientobject.TeamBdMonthlyIncomeCO;
import com.red.circle.other.app.dto.clientobject.team.bd.BdDetailItemCO;
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillCmd;
import com.red.circle.other.app.dto.cmd.TeamBdMemberBillDetailCmd;
import com.red.circle.other.app.dto.cmd.TeamBdMonthlyIncomeCmd;
import com.red.circle.other.app.dto.cmd.activity.LotteryWithdrawCmd;
import com.red.circle.other.app.dto.cmd.team.bd.BdDetailsQryCmd;

import java.util.List;

/**
 * BD 账单服务接口.
 *
 * @author tf
 * @since 2025-10-28
 */
public interface TeamBdBillService {

    /**
     * 查询 BD 成员账单列表.
     *
     * @param cmd 查询命令
     * @return 账单列表
     */
    TeamBdMemberCO queryMemberBillList(TeamBdMemberBillCmd cmd);

    /**
     * 查询 BD 成员账单明细列表.
     *
     * @param cmd 查询命令
     * @return 账单明细列表
     */
    List<TeamBdMemberBillDetailCO> queryMemberBillDetailList(TeamBdMemberBillDetailCmd cmd);

    /**
     * 查询 BD 团队月度收入汇总.
     *
     * @param cmd 查询命令
     * @return 月度收入
     */
    TeamBdMonthlyIncomeCO queryMonthlyIncome(TeamBdMonthlyIncomeCmd cmd);

    void applyWithdraw(LotteryWithdrawCmd cmd);

    /**
     * 查询 BD Details（聚合所有交易记录）.
     *
     * @param cmd 查询命令
     * @return BD Details 分页结果
     */
    List<BdDetailItemCO> queryBdDetails(BdDetailsQryCmd cmd);
}
