#!/usr/bin/env node const fs = require('fs'); const path = require('path'); console.log('🔧 修复后端API路由问题...\n'); // 1. 检查TgAccountRouter.js文件 const routerPath = '/Users/hahaha/telegram-management-system/backend/src/routers/TgAccountRouter.js'; if (!fs.existsSync(routerPath)) { console.error('❌ TgAccountRouter.js 文件不存在'); process.exit(1); } console.log('✅ 找到 TgAccountRouter.js 文件'); // 2. 读取并检查路由文件内容 const routerContent = fs.readFileSync(routerPath, 'utf8'); // 检查路由路径配置 if (routerContent.includes('this.path="/tgAccount"')) { console.log('✅ 路由路径配置正确: /tgAccount'); } else { console.log('⚠️ 路由路径可能有问题'); } // 检查list接口 if (routerContent.includes('path: this.path+"/list"')) { console.log('✅ list接口路径配置正确'); } else { console.log('❌ 缺少list接口配置'); } // 3. 创建测试API脚本 const testApiScript = `#!/usr/bin/env node const mysql = require('mysql2/promise'); async function createMockApi() { const connection = await mysql.createConnection({ host: '127.0.0.1', user: 'root', password: '', database: 'tg_manage' }); try { // 查询TG账号数据 const [rows] = await connection.execute( 'SELECT id, phone, firstname, lastname, status, usageId FROM accounts ORDER BY id DESC LIMIT 20' ); console.log('📊 TG账号数据样例:'); console.log(JSON.stringify(rows.slice(0, 5), null, 2)); // 统计数据 const [stats] = await connection.execute( \`SELECT COUNT(*) as total, SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as active, SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) as inactive, SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) as banned FROM accounts\` ); console.log('📈 账号统计:'); console.log(JSON.stringify(stats[0], null, 2)); // 用途统计 const [usages] = await connection.execute( 'SELECT usageId, COUNT(*) as count FROM accounts GROUP BY usageId' ); console.log('📋 用途分布:'); console.log(JSON.stringify(usages, null, 2)); } catch (error) { console.error('❌ 数据库查询失败:', error.message); } finally { await connection.end(); } } if (require.main === module) { createMockApi().catch(console.error); } module.exports = { createMockApi }; `; fs.writeFileSync('/Users/hahaha/telegram-management-system/test-api-data.js', testApiScript); console.log('✅ 创建API测试脚本: test-api-data.js'); // 4. 创建临时修复方案 const fixContent = ` // 临时修复方案:为前端创建模拟数据接口 const express = require('express'); const cors = require('cors'); const mysql = require('mysql2/promise'); const app = express(); app.use(cors()); app.use(express.json()); // 数据库连接配置 const dbConfig = { host: '127.0.0.1', user: 'root', password: '', database: 'tg_manage' }; // TG账号列表接口 app.post('/api/tgAccount/list', async (req, res) => { try { const connection = await mysql.createConnection(dbConfig); const page = req.body.page || 1; const size = req.body.size || 10; const offset = (page - 1) * size; // 查询总数 const [countResult] = await connection.execute( 'SELECT COUNT(*) as total FROM accounts' ); const total = countResult[0].total; // 查询数据 const [rows] = await connection.execute( \`SELECT id, phone, firstname, lastname, status, usageId, createdAt, updatedAt, lastOnline FROM accounts ORDER BY id DESC LIMIT ? OFFSET ?\`, [size, offset] ); // 统计数据 const [stats] = await connection.execute( \`SELECT COUNT(*) as total, SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as active, SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) as inactive, SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) as banned FROM accounts\` ); await connection.end(); res.json({ success: true, code: 200, data: { list: rows, total: total, page: page, size: size, totalPages: Math.ceil(total / size), stats: stats[0] }, msg: '查询成功' }); } catch (error) { console.error('API错误:', error); res.status(500).json({ success: false, code: 500, data: null, msg: '服务器错误: ' + error.message }); } }); // 账号用途列表接口 app.post('/api/tgAccount/usageList', async (req, res) => { try { const connection = await mysql.createConnection(dbConfig); const [rows] = await connection.execute( \`SELECT usageId, COUNT(*) as count, CASE usageId WHEN 1 THEN '营销推广' WHEN 2 THEN '客服咨询' WHEN 3 THEN '群组管理' WHEN 4 THEN '自动回复' WHEN 5 THEN '数据采集' ELSE '未分类' END as usageName FROM accounts GROUP BY usageId ORDER BY count DESC\` ); await connection.end(); res.json({ success: true, code: 200, data: { list: rows, total: rows.length }, msg: '查询成功' }); } catch (error) { console.error('API错误:', error); res.status(500).json({ success: false, code: 500, data: null, msg: '服务器错误: ' + error.message }); } }); // 启动服务 const PORT = 3002; app.listen(PORT, () => { console.log(\`🚀 临时API服务启动成功,端口: \${PORT}\`); console.log(\`📡 TG账号列表: POST http://localhost:\${PORT}/api/tgAccount/list\`); console.log(\`📊 账号用途统计: POST http://localhost:\${PORT}/api/tgAccount/usageList\`); }); `; fs.writeFileSync('/Users/hahaha/telegram-management-system/temp-api-server.js', fixContent); console.log('✅ 创建临时API服务: temp-api-server.js'); console.log(` 🎯 修复步骤: 1. 问题诊断: ❌ 后端 /tgAccount/list 路由返回 404 ✅ 数据库有 2909 条 TG 账号数据 ❌ 前端无法获取数据显示"暂无数据" 2. 立即修复方案: 📡 启动临时API服务(推荐): cd /Users/hahaha/telegram-management-system npm install mysql2 express cors node temp-api-server.js 3. 前端配置修改: 📝 修改前端API基础URL指向临时服务 🔄 重新测试页面数据加载 4. 长期修复方案: 🔧 修复后端路由配置问题 🧪 确保路由正确注册和认证 📊 完善数据返回格式 📊 数据验证: • MySQL表: accounts (2909条记录) • 状态分布: 全部为活跃状态 • 临时API将提供正确的数据格式 🚀 现在执行临时修复方案! `);