import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '../stores'
import routes from './routes'

// 创建路由实例
const router = createRouter({
  history: createWebHistory('/farm/'),
  routes,
  scrollBehavior(to, from, savedPosition) {
    // 如果有保存的位置，则恢复到保存的位置
    if (savedPosition) {
      return savedPosition
    }
    // 否则滚动到顶部
    return { top: 0 }
  }
})

// 全局前置守卫
router.beforeEach(async (to, from, next) => {
  // 设置页面标题
  document.title = to.meta.title ? `${to.meta.title} - 宁夏智慧养殖监管平台` : '宁夏智慧养殖监管平台'
  
  // 获取用户存储
  const userStore = useUserStore()
  
  // 处理旧版本路由重定向
  if (to.path === '/admin' || to.path === '/admin/') {
    next('/dashboard')
    return
  }
  
  // 处理根路径访问，重定向到仪表盘
  if (to.path === '/') {
    next('/dashboard')
    return
  }
  
  // 如果访问登录页面且已有有效token，重定向到仪表盘
  if (to.path === '/login' && userStore.token && userStore.isLoggedIn) {
    const redirectPath = to.query.redirect || '/dashboard'
    next(redirectPath)
    return
  }
  
  // 检查该路由是否需要登录权限
  if (to.meta.requiresAuth) {
    // 如果需要登录但用户未登录，则重定向到登录页面
    if (!userStore.isLoggedIn) {
      next({
        path: '/login',
        query: { redirect: to.fullPath } // 保存原本要访问的路径，以便登录后重定向
      })
    } else {
      // 用户已登录，允许访问
      next()
    }
  } else {
    // 不需要登录权限的路由，直接访问
    next()
  }
})

// 全局后置钩子
router.afterEach((to, from) => {
  // 路由切换后的逻辑，如记录访问历史、分析等
  console.log(`路由从 ${from.path} 切换到 ${to.path}`)
})

export default router