import Decimal from 'decimal.js';
import { BalanceUpdateEnum } from '@/enums/payments/BalanceUpdateEnum';
import { CreditTypeEnum } from '@/enums/payments/CreditTypeEnum';

export interface PtBagVO {
  /**
   * 钱包Id,主键
   */
  bagId: string | number;

  /**
   * 所属账户Id
   */
  userId: string | number;

  /**
   * 钱包代码，见CARDBAGTYPE数据字典类别
   */
  bagCode: string;

  /**
   * 钱包余额
   */
  balance: Decimal;

  /**
   * 钱包加密余额
   */
  encryptBalance: string;

  /**
   * 消费总金额
   */
  consumeTotal: number;

  /**
   * 消费总次数
   */
  consumeCount: number;

  /**
   * 充值总金额
   */
  rechargeTotal: number;

  /**
   * 充值总次数
   */
  rechargeCount: number;
  /**
   * 钱包名称
   */
  bagName?: string;
}

export interface PtBagForm extends BaseEntity {
  /**
   * 钱包Id,主键
   */
  bagId?: string | number;

  /**
   * 所属账户Id
   */
  userId?: string | number;

  /**
   * 钱包代码，见CARDBAGTYPE数据字典类别
   */
  bagCode?: string;

  /**
   * 钱包余额
   */
  balance?: Decimal;

  /**
   * 钱包加密余额
   */
  encryptBalance?: string;

  /**
   * 消费总金额
   */
  consumeTotal?: Decimal;

  /**
   * 消费总次数
   */
  consumeCount?: number;

  /**
   * 充值总金额
   */
  rechargeTotal?: Decimal;

  /**
   * 充值总次数
   */
  rechargeCount?: number;

  /**
   * 资金来源
   */
  payStyle?: string;

  /**
   * 是否收管理费
   */
  takeCommission?: string;
  /**
   * 充值/退款金额
   */
  receiptMoney?: Decimal;

  /**
   * 充值/退款后余额
   */
  afterAmount?: Decimal;
  /**
   * 卡余的操作类型
   */
  operationMode?: BalanceUpdateEnum;
  /**
   * 卡片Id
   */
  cardId?: string | number;
  /**
   * 交易类型
   */
  creditType?: CreditTypeEnum;
  /**
   * 卡片类型Id
   */
  cardTypeId?: string | number;
  /**
   * 操作员d
   */
  operatorId?: string | number;
  /**
   * 操作员姓名
   */
  operatorName?: string;
}

export interface PtBagQuery extends PageQuery {
  /**
   * 所属账户Id
   */
  userId?: string | number;

  /**
   * 钱包代码，见CARDBAGTYPE数据字典类别
   */
  bagCode?: string;

  /**
   * 钱包余额
   */
  balance?: number;

  /**
   * 钱包加密余额
   */
  encryptBalance?: string;

  /**
   * 消费总金额
   */
  consumeTotal?: number;

  /**
   * 消费总次数
   */
  consumeCount?: number;

  /**
   * 充值总金额
   */
  rechargeTotal?: number;

  /**
   * 充值总次数
   */
  rechargeCount?: number;

  /**
   * 日期范围参数
   */
  params?: any;
}
