TestHouseUpgradeCommand.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Module\Farm\Events\HouseUpgradedEvent;
  4. use App\Module\Farm\Models\FarmUpgradeLog;
  5. use App\Module\Farm\Models\FarmUser;
  6. use App\Module\Farm\Enums\UPGRADE_TYPE;
  7. use Illuminate\Console\Command;
  8. /**
  9. * 测试房屋升级事件命令
  10. */
  11. class TestHouseUpgradeCommand extends Command
  12. {
  13. /**
  14. * 命令签名
  15. *
  16. * @var string
  17. */
  18. protected $signature = 'test:house-upgrade {user_id} {old_level} {new_level}';
  19. /**
  20. * 命令描述
  21. *
  22. * @var string
  23. */
  24. protected $description = '测试房屋升级事件,验证土地是否正确进入暂存区';
  25. /**
  26. * 执行命令
  27. *
  28. * @return int
  29. */
  30. public function handle()
  31. {
  32. $userId = (int) $this->argument('user_id');
  33. $oldLevel = (int) $this->argument('old_level');
  34. $newLevel = (int) $this->argument('new_level');
  35. $this->info("开始测试用户 {$userId} 的房屋升级事件");
  36. $this->info("从等级 {$oldLevel} 升级到等级 {$newLevel}");
  37. // 获取用户农场信息
  38. $farmUser = FarmUser::where('user_id', $userId)->first();
  39. if (!$farmUser) {
  40. $this->error("用户 {$userId} 的农场信息不存在");
  41. return 1;
  42. }
  43. // 创建升级记录
  44. $upgradeLog = new FarmUpgradeLog();
  45. $upgradeLog->user_id = $userId;
  46. $upgradeLog->upgrade_type = UPGRADE_TYPE::HOUSE->value;
  47. $upgradeLog->old_level = $oldLevel;
  48. $upgradeLog->new_level = $newLevel;
  49. $upgradeLog->materials_consumed = [];
  50. $upgradeLog->upgrade_time = now();
  51. $upgradeLog->created_at = now();
  52. $upgradeLog->save();
  53. $this->info("创建升级记录,ID: {$upgradeLog->id}");
  54. // 触发房屋升级事件
  55. event(new HouseUpgradedEvent($userId, $farmUser, $oldLevel, $newLevel, $upgradeLog));
  56. $this->info("房屋升级事件已触发");
  57. $this->info("请检查:");
  58. $this->info("1. 是否创建了新的土地");
  59. $this->info("2. 新土地是否进入了暂存区");
  60. return 0;
  61. }
  62. }