218 lines
7.4 KiB
JavaScript
218 lines
7.4 KiB
JavaScript
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 };
|
|
|