import request from '@/utils/request'

// 支付结算API服务

/**
 * 获取支付历史记录
 * @param {Object} query - 查询参数
 * @param {string} query.pageNum - 页码
 * @param {string} query.pageSize - 每页数量
 * @param {string} query.status - 支付状态
 * @param {string} query.paymentType - 支付类型
 * @param {string} query.startDate - 开始日期
 * @param {string} query.endDate - 结束日期
 * @returns {Promise} API响应
 */
export function listPaymentHistory(query) {
  return request({
    url: '/api/payment/history',
    method: 'get',
    params: query
  })
}

/**
 * 获取支付详情
 * @param {string} id - 支付ID
 * @returns {Promise} API响应
 */
export function getPayment(id) {
  return request({
    url: `/api/payment/${id}`,
    method: 'get'
  })
}

/**
 * 处理支付
 * @param {Object} data - 支付数据
 * @param {string} data.paymentType - 支付类型
 * @param {number} data.amount - 支付金额
 * @param {string} data.payerId - 付款方ID
 * @param {string} data.payeeId - 收款方ID
 * @param {string} data.relatedId - 关联业务ID（合同ID或融资ID）
 * @param {string} data.paymentMethod - 支付方式
 * @param {string} data.paymentNote - 支付备注
 * @returns {Promise} API响应
 */
export function processPayment(data) {
  return request({
    url: '/api/payment/process',
    method: 'post',
    data: data
  })
}

/**
 * 取消支付
 * @param {string} id - 支付ID
 * @param {Object} data - 取消原因
 * @returns {Promise} API响应
 */
export function cancelPayment(id, data) {
  return request({
    url: `/api/payment/${id}/cancel`,
    method: 'put',
    data: data
  })
}

/**
 * 创建监管账户
 * @param {Object} data - 账户数据
 * @param {string} data.accountName - 账户名称
 * @param {string} data.accountType - 账户类型
 * @param {string} data.relatedId - 关联业务ID
 * @param {string} data.financialInstitutionId - 金融机构ID
 * @returns {Promise} API响应
 */
export function createEscrowAccount(data) {
  return request({
    url: '/api/payment/escrow',
    method: 'post',
    data: data
  })
}

/**
 * 获取监管账户列表
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function listEscrowAccounts(query) {
  return request({
    url: '/api/payment/escrow',
    method: 'get',
    params: query
  })
}

/**
 * 获取监管账户详情
 * @param {string} id - 账户ID
 * @returns {Promise} API响应
 */
export function getEscrowAccount(id) {
  return request({
    url: `/api/payment/escrow/${id}`,
    method: 'get'
  })
}

/**
 * 获取监管账户余额
 * @param {string} id - 账户ID
 * @returns {Promise} API响应
 */
export function getEscrowBalance(id) {
  return request({
    url: `/api/payment/escrow/${id}/balance`,
    method: 'get'
  })
}

/**
 * 资金分配
 * @param {string} id - 监管账户ID
 * @param {Object} data - 分配数据
 * @param {Array} data.distributions - 分配明细
 * @param {string} data.distributionNote - 分配备注
 * @returns {Promise} API响应
 */
export function distributeEscrowFunds(id, data) {
  return request({
    url: `/api/payment/escrow/${id}/distribute`,
    method: 'put',
    data: data
  })
}

/**
 * 获取资金分配历史
 * @param {string} id - 监管账户ID
 * @returns {Promise} API响应
 */
export function getDistributionHistory(id) {
  return request({
    url: `/api/payment/escrow/${id}/distribution-history`,
    method: 'get'
  })
}

/**
 * 获取支付统计信息
 * @returns {Promise} API响应
 */
export function getPaymentStats() {
  return request({
    url: '/api/payment/stats',
    method: 'get'
  })
}

/**
 * 获取账户交易记录
 * @param {string} id - 账户ID
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function getAccountTransactions(id, query) {
  return request({
    url: `/api/payment/escrow/${id}/transactions`,
    method: 'get',
    params: query
  })
}

/**
 * 导出支付记录
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function exportPayment(query) {
  return request({
    url: '/api/payment/export',
    method: 'get',
    params: query,
    responseType: 'blob'
  })
}