feat: 完成sys模块迁移,对齐PHP/Java框架

- 重构sys模块架构,严格按admin/api/core分层
- 对齐所有sys实体与数据库表结构
- 实现完整的adminapi控制器,匹配PHP/Java契约
- 修复依赖注入问题,确保服务正确注册
- 添加自动迁移工具和契约验证
- 完善多租户支持和审计功能
- 统一命名规范,与PHP业务逻辑保持一致
This commit is contained in:
万物街
2025-09-21 21:29:28 +08:00
parent 2e361795d9
commit 127a4db1e3
839 changed files with 24932 additions and 57988 deletions

107
wwjcloud/test-migration.js Normal file
View File

@@ -0,0 +1,107 @@
const axios = require('axios');
// 测试迁移工具的脚本
async function testMigration() {
const baseURL = 'http://localhost:3000';
try {
console.log('🚀 开始测试迁移工具...\n');
// 1. 获取所有表列表
console.log('📋 获取数据库表列表...');
const tablesResponse = await axios.get(`${baseURL}/adminapi/migration/tables`);
console.log('✅ 表列表:', tablesResponse.data.data?.slice(0, 5)); // 只显示前5个
// 2. 获取 sys_user 表信息
console.log('\n👤 获取 sys_user 表信息...');
const userTableResponse = await axios.get(`${baseURL}/adminapi/migration/table/sys_user`);
console.log('✅ sys_user 表信息:', {
tableName: userTableResponse.data.data?.tableName,
className: userTableResponse.data.data?.className,
moduleName: userTableResponse.data.data?.moduleName,
fieldsCount: userTableResponse.data.data?.fields?.length
});
// 3. 预览 sys_user 代码生成
console.log('\n👁 预览 sys_user 代码生成...');
const previewResponse = await axios.post(`${baseURL}/adminapi/migration/preview`, {
tableName: 'sys_user',
generateController: true,
generateService: true,
generateEntity: true,
generateDto: true,
generateMapper: true,
generateEvents: true,
generateListeners: true
});
console.log('✅ 预览结果:');
previewResponse.data.data?.forEach((file, index) => {
console.log(` ${index + 1}. ${file.filePath} (${file.type})`);
});
// 4. 测试 PHP 迁移服务
console.log('\n🐘 测试 PHP 迁移服务...');
const phpMigrateResponse = await axios.post(`${baseURL}/adminapi/migration/php/migrate`, {
tableName: 'sys_user',
options: {
generateController: true,
generateService: true,
generateEntity: true,
generateDto: true,
generateMapper: true,
generateEvents: true,
generateListeners: true
}
});
console.log('✅ PHP 迁移结果:');
phpMigrateResponse.data.data?.forEach((file, index) => {
console.log(` ${index + 1}. ${file.filePath} (${file.type})`);
});
// 5. 批量迁移测试
console.log('\n📦 测试批量迁移...');
const batchResponse = await axios.post(`${baseURL}/adminapi/migration/php/batch-migrate`, {
tableNames: ['sys_user', 'sys_menu', 'sys_config'],
options: {
generateController: true,
generateService: true,
generateEntity: true,
generateDto: true,
generateMapper: true,
generateEvents: true,
generateListeners: true
}
});
console.log('✅ 批量迁移结果:');
batchResponse.data.data?.forEach((result, index) => {
console.log(` ${index + 1}. ${result.tableName}: ${result.success ? '✅ 成功' : '❌ 失败'}`);
if (result.success) {
console.log(` 生成了 ${result.files?.length} 个文件`);
} else {
console.log(` 错误: ${result.error}`);
}
});
// 6. 生成迁移报告
console.log('\n📊 生成迁移报告...');
const reportResponse = await axios.post(`${baseURL}/adminapi/migration/php/report`, {
tableNames: ['sys_user', 'sys_menu', 'sys_config']
});
console.log('✅ 迁移报告:');
console.log(` 总表数: ${reportResponse.data.data?.totalTables}`);
console.log(` 成功: ${reportResponse.data.data?.successCount}`);
console.log(` 失败: ${reportResponse.data.data?.failedCount}`);
console.log('\n🎉 迁移工具测试完成!');
} catch (error) {
console.error('❌ 测试失败:', error.response?.data || error.message);
}
}
// 运行测试
testMigration();