| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- const axios = require('axios');
- const colors = require('colors');
- // 配置
- const BASE_URL = 'http://localhost/dev-api';
- // 获取Token
- async function getToken() {
- try {
- const { getToken } = require('./quick-token-getter');
- return await getToken();
- } catch (error) {
- console.log('获取Token失败,使用模拟Token'.yellow);
- return null;
- }
- }
- // 测试简单接口(不需要特殊权限)
- async function testSimpleAPIs(token) {
- console.log('\n🧪 测试基础接口(权限测试)'.blue.bold);
- console.log('='.repeat(60).blue);
- const headers = {
- 'Content-Type': 'application/json;charset=utf-8',
- clientid: 'e5cd7e4891bf95d1d19206ce24a7b32e',
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
- referer: 'http://localhost/login?redirect=%252Findex',
- };
- if (token) {
- headers['Authorization'] = `Bearer ${token}`;
- }
- // 测试系统字典接口
- try {
- console.log('1. 测试字典接口 (system:dict:list)'.cyan);
- const dictResult = await axios({
- method: 'get',
- url: `${BASE_URL}/system/dict/data/list`,
- headers: headers,
- params: { pageNum: 1, pageSize: 5 },
- timeout: 10000,
- });
- console.log(`✅ 字典接口调用成功,状态: ${dictResult.status}`.green);
- if (dictResult.data && dictResult.data.data) {
- console.log(
- `📊 字典数据条数: ${dictResult.data.data.total || dictResult.data.data.length}`
- .yellow,
- );
- }
- } catch (error) {
- console.log(`❌ 字典接口失败: ${error.response?.data?.msg || error.message}`.red);
- }
- // 测试菜单接口
- try {
- console.log('\n2. 测试菜单接口 (system:menu:list)'.cyan);
- const menuResult = await axios({
- method: 'get',
- url: `${BASE_URL}/system/menu/list`,
- headers: headers,
- timeout: 10000,
- });
- console.log(`✅ 菜单接口调用成功,状态: ${menuResult.status}`.green);
- if (menuResult.data && menuResult.data.data) {
- console.log(`📊 菜单数据条数: ${menuResult.data.data.length}`.yellow);
- }
- } catch (error) {
- console.log(`❌ 菜单接口失败: ${error.response?.data?.msg || error.message}`.red);
- }
- // 测试报修工单接口(使用修改后的权限)
- try {
- console.log('\n3. 测试报修工单接口 (system:user:list权限)'.cyan);
- const repairResult = await axios({
- method: 'get',
- url: `${BASE_URL}/pm/repairOrder/list`,
- headers: headers,
- params: { pageNum: 1, pageSize: 10 },
- timeout: 10000,
- });
- console.log(`✅ 报修工单接口调用成功,状态: ${repairResult.status}`.green);
- if (repairResult.data) {
- console.log(`📊 响应消息: ${repairResult.data.msg}`.yellow);
- if (repairResult.data.data) {
- if (repairResult.data.data.rows) {
- console.log(`📄 数据条数: ${repairResult.data.data.total}`.yellow);
- console.log(`📋 当前页: ${repairResult.data.data.rows.length}条`.yellow);
- } else if (Array.isArray(repairResult.data.data)) {
- console.log(`📄 数据数组长度: ${repairResult.data.data.length}`.yellow);
- }
- } else {
- console.log('⚠️ 响应中没有data字段'.yellow);
- }
- }
- } catch (error) {
- console.log(`❌ 报修工单接口失败: ${error.response?.data?.msg || error.message}`.red);
- if (error.response?.data) {
- console.log('详细错误信息:', JSON.stringify(error.response.data, null, 2));
- }
- }
- // 测试维修分类接口
- try {
- console.log('\n4. 测试维修分类接口'.cyan);
- const categoryResult = await axios({
- method: 'get',
- url: `${BASE_URL}/pm/repairCategory/list`,
- headers: headers,
- params: { pageNum: 1, pageSize: 10 },
- timeout: 10000,
- });
- console.log(`✅ 维修分类接口调用成功,状态: ${categoryResult.status}`.green);
- if (categoryResult.data && categoryResult.data.data) {
- if (categoryResult.data.data.rows) {
- console.log(`📊 维修分类数据: ${categoryResult.data.data.total}条`.yellow);
- }
- }
- } catch (error) {
- console.log(`❌ 维修分类接口失败: ${error.response?.data?.msg || error.message}`.red);
- }
- }
- // 测试路径映射
- async function testPathMappings(token) {
- console.log('\n🛣️ 测试路径映射'.blue.bold);
- console.log('='.repeat(60).blue);
- const headers = {
- 'Content-Type': 'application/json;charset=utf-8',
- clientid: 'e5cd7e4891bf95d1d19206ce24a7b32e',
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
- referer: 'http://localhost/login?redirect=%252Findex',
- };
- if (token) {
- headers['Authorization'] = `Bearer ${token}`;
- }
- const testPaths = [
- '/pm/repairOrder/list',
- '/pm/repairOrder/statistics',
- '/pm/repairCategory/list',
- '/pm/repairCategory/options',
- '/pm/repairCategory/tree',
- ];
- for (let path of testPaths) {
- try {
- console.log(`测试路径: ${path}`.cyan);
- const result = await axios({
- method: 'get',
- url: `${BASE_URL}${path}`,
- headers: headers,
- timeout: 5000,
- });
- console.log(` ✅ ${path} - 状态: ${result.status}`.green);
- } catch (error) {
- const status = error.response?.status || 'timeout';
- const message = error.response?.data?.msg || error.message;
- console.log(` ❌ ${path} - 状态: ${status}, 消息: ${message}`.red);
- }
- }
- }
- // 主函数
- async function runDatabaseTest() {
- console.log('🔍 数据库和API简单测试工具'.rainbow.bold);
- console.log('='.repeat(80).rainbow);
- try {
- // 1. 获取Token
- console.log('\n🔐 获取认证Token'.magenta.bold);
- const token = await getToken();
- if (token && token.length > 50) {
- console.log('✅ 获取到有效Token'.green);
- } else {
- console.log('⚠️ Token获取失败,将进行无认证测试'.yellow);
- }
- // 2. 测试基础接口
- await testSimpleAPIs(token);
- // 3. 测试路径映射
- await testPathMappings(token);
- console.log('\n📋 测试总结'.rainbow.bold);
- console.log('='.repeat(60).rainbow);
- console.log('如果报修工单接口仍然失败,可能的原因:');
- console.log('1. 🔄 后端代码未重新编译');
- console.log('2. 🏗️ Controller类包路径问题');
- console.log('3. 🗄️ 数据库表不存在');
- console.log('4. 🔐 权限配置问题');
- console.log('5. 🌐 路由映射问题');
- } catch (error) {
- console.error('\n💥 测试过程出错:'.red.bold, error.message);
- }
- }
- // 运行测试
- if (require.main === module) {
- runDatabaseTest()
- .then(() => {
- console.log('\n👋 测试完成'.cyan);
- })
- .catch((error) => {
- console.error('测试脚本执行失败:', error);
- process.exit(1);
- });
- }
- module.exports = { runDatabaseTest };
-
|