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

import com.red.circle.console.app.dto.clienobject.user.UserBankCardCO;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.wallet.inner.model.cmd.UserBankCardBackQryCmd;
import com.red.circle.wallet.inner.model.cmd.UserBankCardCmd;
import com.red.circle.wallet.inner.model.dto.UserBankCardDTO;
import java.util.List;
import java.util.Set;

/**
 * 用户银行卡.
 *
 * @author pengshigang on 2022/12/5
 */
public interface UserBankCardBackService {

  /**
   * 添加.
   */
  void add(UserBankCardCmd param);

  /**
   * 修改.
   */
  void update(UserBankCardCmd param);

  /**
   * 根据用户id获得银行卡列表.
   *
   * @param userId 用户id.
   */
  List<UserBankCardCO> listByUserId(Long userId);

  /**
   * 获取用户通过银行卡列表.
   */
  List<UserBankCardDTO> listPassBankCard(Long userId);

  /**
   * 将卡片设置为使用状态.
   *
   * @param id id.
   */
  void use(Long id, Long currentUidLong);

  /**
   * 删除银行卡.
   *
   * @param id id.
   */
  void deleteById(Long id, Long currentUidLong);

  /**
   * 通过审核.
   *
   * @param ids ids.
   */
  void pass(Set<Long> ids, Long currentUidLong);

  /**
   * 驳回.
   *
   * @param ids ids.
   */
  void notPass(Set<Long> ids, Long currentUidLong);

  /**
   * 银行卡列表分页.
   */
  PageResult<UserBankCardCO> pageQuery(UserBankCardBackQryCmd query);

}
