import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** 租户提现订单表（申请-审核-打款-完成/失败）信息 */
export interface TenantWithdrawOrder {
          id: number; // 主键
          withdrawNo?: string; // 提现单号（业务唯一）
          bizNo: string; // 业务幂等号（防重复提交）
          currency?: string; // 币种（默认 CNY）
          amount?: number; // 提现申请金额（单位：分）
          feeAmount?: number; // 手续费金额（单位：分）
          actualAmount?: number; // 实际到账金额（单位：分 = amount - fee_amount）
          payChannel?: string; // 打款渠道：BANK/ALIPAY/WECHAT/PAYPAL 等
          payeeType?: string; // 收款方类型：PERSON（个人）/COMPANY（企业）
          payeeName: string; // 收款人姓名或公司名称（快照）
          payeeAccount: string; // 收款账号（银行卡/支付宝等，建议加密或脱敏）
          payeeBankName: string; // 收款银行名称
          payeeBankCode: string; // 银行编码（可选）
          payeeBankBranch: string; // 银行支行名称（可选）
          status?: string; // 提现状态：APPLIED/APPROVED/REJECTED/PAYING/PAID/FAILED/CANCELED
          auditStatus?: string; // 审核状态：PENDING/PASSED/REJECTED
          reason: string; // 拒绝原因或打款失败原因
          applyTime?: string | Dayjs; // 提现申请时间
          auditTime: string | Dayjs; // 审核完成时间
          payTime: string | Dayjs; // 发起打款时间（请求第三方）
          paidTime: string | Dayjs; // 打款成功时间（第三方确认）
          finishTime: string | Dayjs; // 业务终态时间（成功/失败/取消）
          payerBatchNo: string; // 打款批次号（内部使用）
          channelTradeNo: string; // 第三方打款交易号/流水号（对账用）
          channelRaw: object; // 第三方返回的原始报文（用于排查）
          balanceTxnId: number; // 关联余额流水ID（冻结/扣减/返还）
          version?: number; // 乐观锁版本号
          creatorId: number; // 提现申请人ID
          auditorId: number; // 审核人ID
          payerId: number; // 打款操作人ID
          createdAt?: string | Dayjs; // 创建时间
          updatedAt?: string | Dayjs; // 更新时间
  }

// 租户提现订单表（申请-审核-打款-完成/失败） API
export const TenantWithdrawOrderApi = {
  // 查询租户提现订单表（申请-审核-打款-完成/失败）分页
  getTenantWithdrawOrderPage: async (params: any) => {
    return await request.get({ url: `/keyboard/tenant-withdraw-order/page`, params })
  },

  // 查询租户提现订单表（申请-审核-打款-完成/失败）详情
  getTenantWithdrawOrder: async (id: number) => {
    return await request.get({ url: `/keyboard/tenant-withdraw-order/get?id=` + id })
  },

  // 新增租户提现订单表（申请-审核-打款-完成/失败）
  createTenantWithdrawOrder: async (data: TenantWithdrawOrder) => {
    return await request.post({ url: `/keyboard/tenant-withdraw-order/create`, data })
  },

  // 修改租户提现订单表（申请-审核-打款-完成/失败）
  updateTenantWithdrawOrder: async (data: TenantWithdrawOrder) => {
    return await request.put({ url: `/keyboard/tenant-withdraw-order/update`, data })
  },

  // 删除租户提现订单表（申请-审核-打款-完成/失败）
  deleteTenantWithdrawOrder: async (id: number) => {
    return await request.delete({ url: `/keyboard/tenant-withdraw-order/delete?id=` + id })
  },

  /** 批量删除租户提现订单表（申请-审核-打款-完成/失败） */
  deleteTenantWithdrawOrderList: async (ids: number[]) => {
    return await request.delete({ url: `/keyboard/tenant-withdraw-order/delete-list?ids=${ids.join(',')}` })
  },

  // 导出租户提现订单表（申请-审核-打款-完成/失败） Excel
  exportTenantWithdrawOrder: async (params) => {
    return await request.download({ url: `/keyboard/tenant-withdraw-order/export-excel`, params })
  },

  /** ç§Ÿæˆ·ä½™é¢æçŽ° */
  withdrawTenantBalance: async (data) => {
    return await request.post({ url: `/keyboard/tenant-balance/withdraw`, data })
  }
}
