import request from '@/utils/request'

// 安全管理API服务

/**
 * 获取审计日志列表
 * @param {Object} query - 查询参数
 * @param {string} query.pageNum - 页码
 * @param {string} query.pageSize - 每页数量
 * @param {string} query.userId - 用户ID
 * @param {string} query.action - 操作类型
 * @param {string} query.startDate - 开始日期
 * @param {string} query.endDate - 结束日期
 * @returns {Promise} API响应
 */
export function getAuditLogs(query) {
  return request({
    url: '/api/security/audit-logs',
    method: 'get',
    params: query
  })
}

/**
 * 获取审计日志详情
 * @param {string} id - 日志ID
 * @returns {Promise} API响应
 */
export function getAuditLogDetail(id) {
  return request({
    url: `/api/security/audit-logs/${id}`,
    method: 'get'
  })
}

/**
 * 生成MFA密钥
 * @param {Object} data - MFA配置数据
 * @param {string} data.userId - 用户ID
 * @param {string} data.deviceName - 设备名称
 * @returns {Promise} API响应
 */
export function generateMFA(data) {
  return request({
    url: '/api/security/mfa/generate',
    method: 'post',
    data: data
  })
}

/**
 * 验证MFA令牌
 * @param {Object} data - 验证数据
 * @param {string} data.userId - 用户ID
 * @param {string} data.token - MFA令牌
 * @returns {Promise} API响应
 */
export function validateMFA(data) {
  return request({
    url: '/api/security/mfa/validate',
    method: 'post',
    data: data
  })
}

/**
 * 禁用MFA
 * @param {Object} data - 禁用数据
 * @param {string} data.userId - 用户ID
 * @param {string} data.confirmToken - 确认令牌
 * @returns {Promise} API响应
 */
export function disableMFA(data) {
  return request({
    url: '/api/security/mfa/disable',
    method: 'post',
    data: data
  })
}

/**
 * 获取MFA状态
 * @param {string} userId - 用户ID
 * @returns {Promise} API响应
 */
export function getMFAStatus(userId) {
  return request({
    url: `/api/security/mfa/status/${userId}`,
    method: 'get'
  })
}

/**
 * 生成MFA备用码
 * @param {Object} data - 生成参数
 * @param {string} data.userId - 用户ID
 * @returns {Promise} API响应
 */
export function generateBackupCodes(data) {
  return request({
    url: '/api/security/mfa/backup-codes',
    method: 'post',
    data: data
  })
}

/**
 * 数据加密
 * @param {Object} data - 加密数据
 * @param {string} data.content - 待加密内容
 * @param {string} data.encryptionType - 加密类型
 * @returns {Promise} API响应
 */
export function encryptData(data) {
  return request({
    url: '/api/security/encrypt',
    method: 'post',
    data: data
  })
}

/**
 * 数据解密
 * @param {Object} data - 解密数据
 * @param {string} data.encryptedContent - 加密内容
 * @param {string} data.decryptionKey - 解密密钥
 * @returns {Promise} API响应
 */
export function decryptData(data) {
  return request({
    url: '/api/security/decrypt',
    method: 'post',
    data: data
  })
}

/**
 * 获取安全策略配置
 * @returns {Promise} API响应
 */
export function getSecurityPolicies() {
  return request({
    url: '/api/security/policies',
    method: 'get'
  })
}

/**
 * 更新安全策略
 * @param {Object} data - 策略数据
 * @param {Object} data.passwordPolicy - 密码策略
 * @param {Object} data.sessionPolicy - 会话策略
 * @param {Object} data.accessPolicy - 访问策略
 * @returns {Promise} API响应
 */
export function updateSecurityPolicies(data) {
  return request({
    url: '/api/security/policies',
    method: 'put',
    data: data
  })
}

/**
 * 获取安全事件列表
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function getSecurityEvents(query) {
  return request({
    url: '/api/security/events',
    method: 'get',
    params: query
  })
}

/**
 * 处理安全事件
 * @param {string} id - 事件ID
 * @param {Object} data - 处理数据
 * @param {string} data.action - 处理动作
 * @param {string} data.note - 处理备注
 * @returns {Promise} API响应
 */
export function handleSecurityEvent(id, data) {
  return request({
    url: `/api/security/events/${id}/handle`,
    method: 'put',
    data: data
  })
}

/**
 * 获取用户权限列表
 * @param {string} userId - 用户ID
 * @returns {Promise} API响应
 */
export function getUserPermissions(userId) {
  return request({
    url: `/api/security/permissions/${userId}`,
    method: 'get'
  })
}

/**
 * 更新用户权限
 * @param {string} userId - 用户ID
 * @param {Object} data - 权限数据
 * @param {Array} data.permissions - 权限列表
 * @returns {Promise} API响应
 */
export function updateUserPermissions(userId, data) {
  return request({
    url: `/api/security/permissions/${userId}`,
    method: 'put',
    data: data
  })
}

/**
 * 导出审计日志
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function exportAuditLogs(query) {
  return request({
    url: '/api/security/audit-logs/export',
    method: 'get',
    params: query,
    responseType: 'blob'
  })
}