match_logging_test.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Mex模块撮合日志测试
  4. *
  5. * 测试撮合命令是否正确记录日志,包括没有待撮合订单的情况
  6. */
  7. require_once __DIR__ . '/../../../../vendor/autoload.php';
  8. use App\Module\Mex\Logic\MexMatchLogic;
  9. use App\Module\Mex\Models\MexMatchLog;
  10. use App\Module\Mex\Enums\MatchType;
  11. echo "=== Mex模块撮合日志测试 ===\n\n";
  12. // 记录测试开始前的日志数量
  13. $initialLogCount = MexMatchLog::count();
  14. echo "测试开始前日志总数: {$initialLogCount}\n\n";
  15. // 测试1:用户买入物品撮合(可能没有待撮合订单)
  16. echo "1. 测试用户买入物品撮合日志记录\n";
  17. try {
  18. $buyResult = MexMatchLogic::executeUserBuyItemMatch(null, 10);
  19. echo "用户买入物品撮合结果: " . ($buyResult['success'] ? '成功' : '失败') . " - " . $buyResult['message'] . "\n";
  20. echo " - 处理商品数: " . count($buyResult['processed_items']) . "\n";
  21. echo " - 撮合订单数: {$buyResult['total_matched']}\n";
  22. echo " - 成交金额: {$buyResult['total_amount']}\n";
  23. // 检查是否产生了新的日志
  24. $newBuyLogCount = MexMatchLog::where('match_type', MatchType::USER_BUY)
  25. ->where('created_at', '>=', now()->subMinutes(1))
  26. ->count();
  27. echo " - 新增买入撮合日志数: {$newBuyLogCount}\n";
  28. if ($newBuyLogCount > 0) {
  29. $latestBuyLog = MexMatchLog::where('match_type', MatchType::USER_BUY)
  30. ->orderBy('created_at', 'desc')
  31. ->first();
  32. echo " - 最新日志: item_id={$latestBuyLog->item_id}, message='{$latestBuyLog->message}'\n";
  33. }
  34. } catch (\Exception $e) {
  35. echo "用户买入物品撮合测试失败: " . $e->getMessage() . "\n";
  36. }
  37. echo "\n";
  38. // 测试2:用户卖出物品撮合(可能没有待撮合订单)
  39. echo "2. 测试用户卖出物品撮合日志记录\n";
  40. try {
  41. $sellResult = MexMatchLogic::executeUserSellItemMatch(null, 10);
  42. echo "用户卖出物品撮合结果: " . ($sellResult['success'] ? '成功' : '失败') . " - " . $sellResult['message'] . "\n";
  43. echo " - 处理商品数: " . count($sellResult['processed_items']) . "\n";
  44. echo " - 撮合订单数: {$sellResult['total_matched']}\n";
  45. echo " - 成交金额: {$sellResult['total_amount']}\n";
  46. // 检查是否产生了新的日志
  47. $newSellLogCount = MexMatchLog::where('match_type', MatchType::USER_SELL)
  48. ->where('created_at', '>=', now()->subMinutes(1))
  49. ->count();
  50. echo " - 新增卖出撮合日志数: {$newSellLogCount}\n";
  51. if ($newSellLogCount > 0) {
  52. $latestSellLog = MexMatchLog::where('match_type', MatchType::USER_SELL)
  53. ->orderBy('created_at', 'desc')
  54. ->first();
  55. echo " - 最新日志: item_id={$latestSellLog->item_id}, message='{$latestSellLog->message}'\n";
  56. }
  57. } catch (\Exception $e) {
  58. echo "用户卖出物品撮合测试失败: " . $e->getMessage() . "\n";
  59. }
  60. echo "\n";
  61. // 测试3:指定商品撮合(测试单个商品的日志记录)
  62. echo "3. 测试指定商品撮合日志记录\n";
  63. $testItemId = 1001; // 使用一个不存在的商品ID来测试条件检查失败的情况
  64. try {
  65. $itemBuyResult = MexMatchLogic::executeUserBuyItemMatch($testItemId, 5);
  66. echo "指定商品买入撮合结果: " . ($itemBuyResult['success'] ? '成功' : '失败') . " - " . $itemBuyResult['message'] . "\n";
  67. // 检查是否为该商品产生了日志
  68. $itemLogCount = MexMatchLog::where('match_type', MatchType::USER_BUY)
  69. ->where('item_id', $testItemId)
  70. ->where('created_at', '>=', now()->subMinutes(1))
  71. ->count();
  72. echo " - 商品 {$testItemId} 的买入撮合日志数: {$itemLogCount}\n";
  73. } catch (\Exception $e) {
  74. echo "指定商品撮合测试失败: " . $e->getMessage() . "\n";
  75. }
  76. echo "\n";
  77. // 记录测试结束后的日志数量
  78. $finalLogCount = MexMatchLog::count();
  79. $addedLogs = $finalLogCount - $initialLogCount;
  80. echo "测试结束后日志总数: {$finalLogCount}\n";
  81. echo "本次测试新增日志数: {$addedLogs}\n\n";
  82. // 显示最近的几条日志
  83. echo "=== 最近的撮合日志 ===\n";
  84. $recentLogs = MexMatchLog::orderBy('created_at', 'desc')->limit(5)->get();
  85. foreach ($recentLogs as $log) {
  86. echo "ID: {$log->id}, 类型: {$log->match_type->value}, 商品: {$log->item_id}, ";
  87. echo "成功: " . ($log->success ? '是' : '否') . ", 消息: {$log->message}\n";
  88. }
  89. echo "\n=== 撮合日志测试完成 ===\n";