| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- namespace App\Module\Task\Commands;
- use App\Module\Task\Events\TaskCompletedEvent;
- use App\Module\Task\Events\TaskRewardClaimedEvent;
- use Illuminate\Console\Command;
- use Carbon\Carbon;
- /**
- * 测试任务事件触发命令
- */
- class TestTaskEventCommand extends Command
- {
- /**
- * 命令签名
- *
- * @var string
- */
- protected $signature = 'task:test-event {user_id : 用户ID} {--type=completed : 事件类型(completed|reward)}';
- /**
- * 命令描述
- *
- * @var string
- */
- protected $description = '测试任务事件触发和暂存功能';
- /**
- * 执行命令
- *
- * @return int
- */
- public function handle(): int
- {
- $userId = (int) $this->argument('user_id');
- $type = $this->option('type');
- $this->info("测试用户 {$userId} 的任务事件触发");
- if ($type === 'completed') {
- // 触发任务完成事件
- $event = new TaskCompletedEvent(
- $userId,
- 1001, // 测试任务ID
- '测试任务',
- 'daily',
- Carbon::now(),
- [
- ['item_id' => 1001, 'quantity' => 10],
- ['item_id' => 1002, 'quantity' => 5]
- ]
- );
- event($event);
- $this->info('✓ 任务完成事件已触发');
- } elseif ($type === 'reward') {
- // 触发任务奖励领取事件
- $event = new TaskRewardClaimedEvent(
- $userId,
- 1001, // 测试任务ID
- '测试任务',
- [
- ['item_id' => 1001, 'quantity' => 10],
- ['item_id' => 1002, 'quantity' => 5]
- ],
- Carbon::now(),
- true
- );
- event($event);
- $this->info('✓ 任务奖励领取事件已触发');
- } else {
- $this->error('无效的事件类型,支持: completed, reward');
- return 1;
- }
- // 等待一下让事件处理完成
- sleep(1);
- // 检查暂存数据
- $this->info("\n检查暂存数据...");
- $this->call('task:test-temp', ['user_id' => $userId]);
- return 0;
- }
- }
|