import request from '@/utils/request'

// 区块链集成API服务

/**
 * 获取区块链事件列表
 * @param {Object} query - 查询参数
 * @param {string} query.pageNum - 页码
 * @param {string} query.pageSize - 每页数量
 * @param {string} query.eventType - 事件类型
 * @param {string} query.startDate - 开始日期
 * @param {string} query.endDate - 结束日期
 * @returns {Promise} API响应
 */
export function listBlockchainEvents(query) {
  return request({
    url: '/api/blockchain/events',
    method: 'get',
    params: query
  })
}

/**
 * 获取区块链网络状态
 * @returns {Promise} API响应
 */
export function getBlockchainStatus() {
  return request({
    url: '/api/blockchain/status',
    method: 'get'
  })
}

/**
 * 数据上链存储
 * @param {Object} data - 上链数据
 * @param {string} data.dataType - 数据类型
 * @param {Object} data.content - 数据内容
 * @param {string} data.relatedId - 关联业务ID
 * @param {string} data.description - 数据描述
 * @returns {Promise} API响应
 */
export function storeDataOnChain(data) {
  return request({
    url: '/api/blockchain/store',
    method: 'post',
    data: data
  })
}

/**
 * 验证链上数据
 * @param {string} hash - 数据哈希值
 * @returns {Promise} API响应
 */
export function verifyChainData(hash) {
  return request({
    url: `/api/blockchain/verify/${hash}`,
    method: 'get'
  })
}

/**
 * 获取交易详情
 * @param {string} txHash - 交易哈希
 * @returns {Promise} API响应
 */
export function getTransaction(txHash) {
  return request({
    url: `/api/blockchain/transaction/${txHash}`,
    method: 'get'
  })
}

/**
 * 执行智能合约
 * @param {Object} data - 合约执行数据
 * @param {string} data.contractAddress - 合约地址
 * @param {string} data.functionName - 函数名称
 * @param {Array} data.parameters - 函数参数
 * @param {string} data.executorId - 执行者ID
 * @returns {Promise} API响应
 */
export function executeSmartContract(data) {
  return request({
    url: '/api/blockchain/contract/execute',
    method: 'post',
    data: data
  })
}

/**
 * 获取智能合约列表
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function listSmartContracts(query) {
  return request({
    url: '/api/blockchain/contracts',
    method: 'get',
    params: query
  })
}

/**
 * 获取智能合约详情
 * @param {string} address - 合约地址
 * @returns {Promise} API响应
 */
export function getSmartContract(address) {
  return request({
    url: `/api/blockchain/contracts/${address}`,
    method: 'get'
  })
}

/**
 * 部署智能合约
 * @param {Object} data - 合约部署数据
 * @param {string} data.contractCode - 合约代码
 * @param {string} data.contractName - 合约名称
 * @param {Array} data.constructorParams - 构造函数参数
 * @returns {Promise} API响应
 */
export function deploySmartContract(data) {
  return request({
    url: '/api/blockchain/contract/deploy',
    method: 'post',
    data: data
  })
}

/**
 * 获取合约执行历史
 * @param {string} address - 合约地址
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function getContractExecutionHistory(address, query) {
  return request({
    url: `/api/blockchain/contracts/${address}/history`,
    method: 'get',
    params: query
  })
}

/**
 * 获取区块链统计信息
 * @returns {Promise} API响应
 */
export function getBlockchainStats() {
  return request({
    url: '/api/blockchain/stats',
    method: 'get'
  })
}

/**
 * 获取区块信息
 * @param {string} blockNumber - 区块号
 * @returns {Promise} API响应
 */
export function getBlockInfo(blockNumber) {
  return request({
    url: `/api/blockchain/blocks/${blockNumber}`,
    method: 'get'
  })
}

/**
 * 批量验证数据
 * @param {Object} data - 批量验证数据
 * @param {Array} data.hashes - 哈希值列表
 * @returns {Promise} API响应
 */
export function batchVerifyData(data) {
  return request({
    url: '/api/blockchain/batch-verify',
    method: 'post',
    data: data
  })
}