/**
 * @file 导航配置文件
 * @description 定义所有可用的导航链接和菜单结构
 */

// 主导航配置
export const mainNavigation = [
  {
    path: '/productList',
    name: '商城',
    icon: '🛍️',
    description: '浏览所有商品'
  },
  {
    path: '/cart',
    name: '购物车',
    icon: '🛒',
    description: '管理购物车商品'
  },
  // {
  //   path: '/checkout',
  //   name: '结算',
  //   icon: '💳',
  //   description: '完成订单结算'
  // },
  {
    path: '/account',
    name: '个人中心',
    icon: '👤',
    description: '管理个人资料和店铺'
  }
]

// 面包屑导航配置
export const breadcrumbConfig = {
  '/productList': ['首页', '商品列表'],
  '/product': ['首页', '商品列表', '商品详情'],
  '/cart': ['首页', '购物车'],
  '/checkout': ['首页', '购物车', '订单结算'],
  '/account': ['首页', '个人中心'],
  '/account/wallet': ['首页', '个人中心', '我的钱包'],
  '/account/shop-new': ['首页', '个人中心', '新增店铺'],
  '/account/shop-config': ['首页', '个人中心', '店铺配置'],
  '/account/shops': ['首页', '个人中心', '我的店铺'],
  '/account/product-new': ['首页', '个人中心', '新增商品'],
  '/account/products': ['首页', '个人中心', '商品列表']
}

// 获取面包屑导航
export const getBreadcrumb = (path) => {
  // 处理动态路由
  if (path.startsWith('/product/')) {
    return breadcrumbConfig['/product']
  }
  
  return breadcrumbConfig[path] || ['首页']
}

// 检查路由权限
export const checkRoutePermission = (route, userPermissions = []) => {
  if (!route.meta || !route.meta.allAuthority) {
    return true
  }
  
  const requiredPermissions = route.meta.allAuthority
  
  // 如果权限要求是 'all'，则所有人都可以访问
  if (requiredPermissions.includes('all')) {
    return true
  }
  
  // 检查用户是否有所需权限
  return requiredPermissions.some(permission => 
    userPermissions.includes(permission)
  )
}

// 获取页面标题
export const getPageTitle = (route) => {
  if (route.meta && route.meta.title) {
    return `${route.meta.title} - Power Leasing`
  }
  return 'Power Leasing - 电商系统'
}

// 获取页面描述
export const getPageDescription = (route) => {
  if (route.meta && route.meta.description) {
    return route.meta.description
  }
  return 'Power Leasing 电商系统 - 专业的电力设备租赁平台'
}

export default {
  mainNavigation,
  breadcrumbConfig,
  getBreadcrumb,
  checkRoutePermission,
  getPageTitle,
  getPageDescription
} 