// 路由收集器 - 收集前端路由信息 import { directRouteMappings } from './direct-route-mappings.js' import { RouteUtils } from './RouteConfig.js' // 路由收集器 export class RouteCollector { constructor() { this.routes = [] } // 收集路由 collectRoutes() { try { console.log('🔄 开始收集路由...') console.log('📊 directRouteMappings:', directRouteMappings) console.log('📊 directRouteMappings类型:', typeof directRouteMappings) console.log('📊 directRouteMappings是否为undefined:', directRouteMappings === undefined) // 从生成的路由映射文件收集 if (!directRouteMappings || !directRouteMappings.routes) { console.warn('⚠️ 生成的路由映射文件格式不正确') console.log('🔍 调试信息:') console.log(' - directRouteMappings:', directRouteMappings) console.log(' - routes:', directRouteMappings?.routes) console.log(' - 导入是否成功:', directRouteMappings !== undefined) return [] } console.log(`📊 找到 ${directRouteMappings.routes.length} 个路由配置`) // 从路由配置中提取路由信息,并关联API映射 const frontendRoutes = directRouteMappings.routes.map(route => { console.log(`📋 处理路由: ${route.path} (${route.component})`) // 查找该路由对应的API调用 const apiCalls = this._findApiCallsForRoute(route) return { path: route.path, name: route.name, module: route.module, description: route.description || `${route.name || route.component}页面`, type: 'list', component: route.component, apiCalls: apiCalls } }) this.routes = frontendRoutes console.log(`✅ 成功收集到 ${frontendRoutes.length} 个前端路由`) return frontendRoutes } catch (error) { console.error('❌ 从生成的路由映射文件收集路由失败:', error) console.error('错误堆栈:', error.stack) return [] } } // 查找路由对应的API调用 _findApiCallsForRoute(route) { const apiCalls = [] if (!directRouteMappings.apiMappings) { return apiCalls } // 遍历API映射,找到与当前路由相关的调用 directRouteMappings.apiMappings.forEach(moduleMapping => { if (moduleMapping.module === route.module) { moduleMapping.apiMappings.forEach(apiMapping => { // 检查API调用是否与当前路由相关 const isRelated = apiMapping.callingComponents.some(component => component.component === route.component || component.path === route.path ) if (isRelated) { apiCalls.push({ type: 'api', method: apiMapping.method, path: apiMapping.path, methodName: apiMapping.methodName, serviceName: moduleMapping.serviceName }) } }) } }) return apiCalls } // 获取菜单路由 getMenuRoutes() { return this.routes.filter(route => route.name && route.name !== '') } // 获取操作路由 getOperationRoutes() { return this.routes.filter(route => route.type && route.type !== 'list') } // 按模块分组路由 getRoutesByModule() { const grouped = {} this.routes.forEach(route => { const module = route.module if (!grouped[module]) { grouped[module] = [] } grouped[module].push(route) }) return grouped } }