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

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.app.AppIdLongCmd;
import com.red.circle.framework.core.dto.CommonCommand;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.wallet.app.dto.clientobject.*;
import com.red.circle.wallet.app.dto.cmd.*;
import com.red.circle.wallet.inner.model.cmd.UserSalaryDiamondRunningWaterQryCmd;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户工资钻石余额
 * @author zongpubin on 2024/3/27
 */
public interface SalaryDiamondService {

  UserSalaryDiamondCheckExchangeGoldCO checkBillAgentExchangeGold(AppIdLongCmd cmd);

  /**
   * 获取用户余额.
   */
  BigDecimal getBalance(AppExtCommand cmd);

  List<CommodityRunningWaterCO> latestOneMonthsFlow(DiamondRunningWaterQueryCmd cmd);

  /**
   * 获取流水详情.
   */
  List<UserBankWaterCO> listDetails(SalaryDiamondRunningWaterQueryCmd cmd);

  /**
   * 获取账单兑换流水详情.
   */
  List<UserBankWaterCO> billListDetails(SalaryDiamondRunningWaterQueryCmd cmd);

  /**
   * 获取工资兑换流水详情.
   */
  List<UserBankWaterCO> salaryListDetails(SalaryDiamondRunningWaterQueryCmd cmd);

  /**
   * 提现检查.
   */
  UserBankCheckWithdrawCO checkWithdraw(AppExtCommand cmd);

  /**
   * 兑换金币检查.
   */
  UserBankCheckExchangeGoldCO checkExchangeGold(CommonCommand cmd);

  /**
   * 转账检查.
   */
  UserBankCheckTransferCO checkTransfer(AppExtCommand cmd);

  /**
   * 兑换金币.
   */
  UserBankExchangeGoldResultCO exchangeGold(UserBankExchangeGoldCmd cmd);

  /**
   * 钱包钻石兑换金币.
   */
  UserBankExchangeGoldResultCO exchangeGoldYolo(UserBankExchangeGoldCmd cmd);

  /**
   * 代理团队账单兑换金币.
   */
  UserBankExchangeGoldResultCO agentBillExchangeGold(UserBillExchangeGoldCmd cmd);

  /**
   * 主播工作空间兑换金币.
   */
  UserBankExchangeGoldResultCO memberWorkExchangeGold(UserBillExchangeGoldCmd cmd);

  /**
   * 提现.
   */
  UserBankWithdrawResultCO withdraw(UserBankWithdrawCmd cmd);

  /**
   * 转账.
   */
  UserBankWithdrawResultCO transfer(UserBankWithdrawTransferCmd cmd);

}
