package com.red.circle.wallet.inner.service.salary;

import com.red.circle.framework.dto.PageResult;
import com.red.circle.wallet.inner.model.cmd.SalaryIssueInnerCmd;
import com.red.circle.wallet.inner.model.cmd.SalaryRunningWaterQueryInnerCmd;
import com.red.circle.wallet.inner.model.cmd.SalaryWithdrawInnerCmd;
import com.red.circle.wallet.inner.model.dto.SalaryAccountBalanceDTO;
import com.red.circle.wallet.inner.model.dto.SalaryIssueResultDTO;
import com.red.circle.wallet.inner.model.dto.SalaryRunningWaterDTO;

import java.math.BigDecimal;

/**
 * 工资账户 Inner Service.
 */
public interface UserSalaryAccountClientService {

  /**
   * 查询余额.
   */
  SalaryAccountBalanceDTO getBalance(Long userId, String salaryType);

  /**
   * 发放工资.
   */
  SalaryIssueResultDTO issueSalary(SalaryIssueInnerCmd cmd);

  /**
   * 提现.
   */
  void withdrawRefund(SalaryWithdrawInnerCmd cmd);

  /**
   * 查询流水.
   */
  PageResult<SalaryRunningWaterDTO> queryRunningWater(SalaryRunningWaterQueryInnerCmd cmd);

  SalaryRunningWaterDTO existRunningWater(String trackId);

  /**
   * 查询用户累计收入.
   */
  BigDecimal getTotalIncome(Long userId, String salaryType, String salaryEvent, String startTime, String endTime);
}
