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

import com.red.circle.console.app.dto.clienobject.user.UserGoldBalanceCO;
import com.red.circle.console.app.dto.clienobject.user.UserGoldRunningWaterCO;
import com.red.circle.console.app.dto.clienobject.user.UserGoldRunningWaterClsTmpCO;
import com.red.circle.wallet.inner.model.cmd.DeductGoldCmd;
import com.red.circle.wallet.inner.model.cmd.DiamondCmd;
import com.red.circle.wallet.inner.model.cmd.SendGoldCmd;
import com.red.circle.wallet.inner.model.cmd.UserGoldRunningWaterBackQryCmd;
import java.math.BigDecimal;
import java.util.List;

/**
 * 用户钱包 服务.
 *
 * @author pengliang on 2022/7/21
 */
public interface UserWalletService {

  /**
   * 用户金币余额.
   */
  BigDecimal getGoldBalance(Long userId);


  /**
   * 查询用户金币流水.
   */
  List<UserGoldRunningWaterCO> listGoldRunningWater(UserGoldRunningWaterBackQryCmd query);


  /**
   * 查询用户金币流水 cls.
   */
  UserGoldRunningWaterClsTmpCO getGoldRunningWaterCls(UserGoldRunningWaterBackQryCmd query);

  /**
   * 发送金币.
   */
  void sendGold(SendGoldCmd param);

  /**
   * 扣除金币.
   */
  void deductGold(DeductGoldCmd param);

  List<UserGoldBalanceCO> listGoldBalance();

  /**
   * 发送钻石.
   */
  void sendDiamond(DiamondCmd param);

  /**
   * 扣除钻石.
   */
  void deductDiamond(DiamondCmd param);
}
