/**
 * 菜单权限调试工具
 * @file menuDebugger.js
 * @description 用于调试菜单权限问题的工具函数
 */

/**
 * 调试菜单权限问题
 * @param {Object} userData - 用户数据
 * @param {Array} routes - 路由配置
 */
export function debugMenuPermissions(userData, routes) {
  console.log('🔍 菜单权限调试开始...')
  console.log('📊 用户数据:', userData)
  console.log('📊 路由配置:', routes)
  
  if (!userData) {
    console.error('❌ 用户数据为空')
    return
  }
  
  console.log('📋 用户权限:', userData.permissions || [])
  console.log('📋 用户角色:', userData.role)
  console.log('📋 可访问菜单:', userData.accessibleMenus || [])
  
  // 检查每个路由的权限
  routes.forEach(route => {
    console.log(`\n🔍 检查路由: ${route.name}`)
    console.log('  - 路径:', route.path)
    console.log('  - 标题:', route.meta?.title)
    console.log('  - 图标:', route.meta?.icon)
    console.log('  - 权限要求:', route.meta?.permission)
    console.log('  - 角色要求:', route.meta?.roles)
    console.log('  - 菜单要求:', route.meta?.menu)
    
    // 检查权限
    if (route.meta?.permission) {
      const hasPerm = userData.permissions?.includes(route.meta.permission)
      console.log(`  - 权限检查: ${route.meta.permission} -> ${hasPerm ? '✅' : '❌'}`)
    }
    
    // 检查角色
    if (route.meta?.roles) {
      const hasRole = route.meta.roles.includes(userData.role?.name)
      console.log(`  - 角色检查: ${route.meta.roles} -> ${hasRole ? '✅' : '❌'}`)
    }
    
    // 检查菜单
    if (route.meta?.menu) {
      const canAccess = userData.accessibleMenus?.includes(route.meta.menu)
      console.log(`  - 菜单检查: ${route.meta.menu} -> ${canAccess ? '✅' : '❌'}`)
    }
  })
  
  console.log('🔍 菜单权限调试完成')
}

/**
 * 检查特定权限
 * @param {Object} userData - 用户数据
 * @param {string} permission - 权限名称
 */
export function checkPermission(userData, permission) {
  console.log(`🔍 检查权限: ${permission}`)
  console.log('用户权限列表:', userData.permissions || [])
  
  const hasPerm = userData.permissions?.includes(permission)
  console.log(`权限检查结果: ${hasPerm ? '✅' : '❌'}`)
  
  return hasPerm
}

/**
 * 检查特定角色
 * @param {Object} userData - 用户数据
 * @param {string} role - 角色名称
 */
export function checkRole(userData, role) {
  console.log(`🔍 检查角色: ${role}`)
  console.log('用户角色:', userData.role)
  
  const hasRole = userData.role?.name === role
  console.log(`角色检查结果: ${hasRole ? '✅' : '❌'}`)
  
  return hasRole
}

/**
 * 检查菜单访问
 * @param {Object} userData - 用户数据
 * @param {string} menuKey - 菜单键
 */
export function checkMenuAccess(userData, menuKey) {
  console.log(`🔍 检查菜单访问: ${menuKey}`)
  console.log('可访问菜单:', userData.accessibleMenus || [])
  
  const canAccess = userData.accessibleMenus?.includes(menuKey)
  console.log(`菜单访问检查结果: ${canAccess ? '✅' : '❌'}`)
  
  return canAccess
}

/**
 * 导出调试工具到全局
 */
export function setupGlobalDebugger() {
  if (typeof window !== 'undefined') {
    window.menuDebugger = {
      debugMenuPermissions,
      checkPermission,
      checkRole,
      checkMenuAccess
    }
    console.log('🔧 菜单权限调试工具已添加到 window.menuDebugger')
  }
}
