test-print-trigger-direct.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // 直接测试PrintTriggerService
  2. const { DataSource } = require('typeorm');
  3. async function testPrintTriggerDirect() {
  4. console.log('=== 直接测试PrintTriggerService ===\n');
  5. // 创建数据源
  6. const dataSource = new DataSource({
  7. type: 'postgres',
  8. host: '127.0.0.1',
  9. port: 5432,
  10. username: 'postgres',
  11. password: '',
  12. database: 'postgres',
  13. synchronize: false,
  14. logging: false
  15. });
  16. try {
  17. await dataSource.initialize();
  18. console.log('✅ 数据库连接成功\n');
  19. const tenantId = 1;
  20. const orderId = 25;
  21. // 飞鹅API配置
  22. const feieConfig = {
  23. user: '2638601246@qq.com',
  24. ukey: 'tAwVmIEv48zcIu2Y',
  25. baseUrl: 'https://api.feieyun.cn/Api/Open/',
  26. timeout: 10000,
  27. maxRetries: 3
  28. };
  29. console.log('尝试动态导入飞鹅打印模块...');
  30. try {
  31. // 动态导入模块
  32. const modulePath = '/mnt/code/186-175-template-22/packages/feie-printer-module-mt';
  33. const { PrintTriggerService } = await import(modulePath);
  34. console.log('✅ 飞鹅打印模块导入成功\n');
  35. // 创建PrintTriggerService实例
  36. console.log('创建PrintTriggerService实例...');
  37. const printTriggerService = new PrintTriggerService(dataSource, feieConfig);
  38. console.log('✅ PrintTriggerService实例创建成功\n');
  39. // 调用handleOrderPaymentSuccess方法
  40. console.log(`调用handleOrderPaymentSuccess方法,订单ID: ${orderId}...`);
  41. await printTriggerService.handleOrderPaymentSuccess(tenantId, orderId);
  42. console.log('✅ handleOrderPaymentSuccess方法调用成功\n');
  43. // 检查数据库
  44. console.log('检查数据库中的打印任务...');
  45. const tasks = await dataSource.query(
  46. 'SELECT * FROM feie_print_task_mt WHERE tenant_id = $1 AND order_id = $2 ORDER BY created_at DESC',
  47. [tenantId, orderId]
  48. );
  49. if (tasks.length > 0) {
  50. console.log(`✅ 找到 ${tasks.length} 个打印任务:`);
  51. tasks.forEach((task, index) => {
  52. console.log(`\n任务 ${index + 1}:`);
  53. console.log(` 任务ID: ${task.task_id}`);
  54. console.log(` 状态: ${task.print_status}`);
  55. console.log(` 创建时间: ${task.created_at}`);
  56. console.log(` 计划时间: ${task.scheduled_at}`);
  57. });
  58. } else {
  59. console.log('❌ 没有找到打印任务');
  60. }
  61. } catch (importError) {
  62. console.error('❌ 导入飞鹅打印模块失败:', importError.message);
  63. console.error('错误堆栈:', importError.stack);
  64. // 检查是否是模块未找到错误
  65. if (importError.message.includes('Cannot find package') ||
  66. importError.message.includes('ERR_MODULE_NOT_FOUND') ||
  67. importError.code === 'MODULE_NOT_FOUND') {
  68. console.log('\n⚠️ 飞鹅打印模块可能未正确安装或路径不正确');
  69. console.log('模块路径:', modulePath);
  70. // 检查模块是否存在
  71. const fs = require('fs');
  72. if (fs.existsSync(modulePath)) {
  73. console.log('✅ 模块目录存在');
  74. const files = fs.readdirSync(modulePath);
  75. console.log('目录内容:', files.slice(0, 10));
  76. } else {
  77. console.log('❌ 模块目录不存在');
  78. }
  79. }
  80. }
  81. } catch (error) {
  82. console.error('测试失败:', error);
  83. } finally {
  84. try {
  85. await dataSource.destroy();
  86. console.log('\n🔌 数据库连接已关闭');
  87. } catch (error) {
  88. console.error('关闭数据库连接失败:', error);
  89. }
  90. }
  91. }
  92. // 运行测试
  93. testPrintTriggerDirect().catch(error => {
  94. console.error('测试脚本执行失败:', error);
  95. process.exit(1);
  96. });