Files
hzdyjs/test/simple-database-test.js
T
2025-06-30 20:33:58 +08:00

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 };