Example #1
0
 /**
  * @param Rule[] $fitRules
  * @param array  $data
  *
  * @return array
  */
 public function processSendResults($fitRules, $data)
 {
     $countFitRules = count($fitRules);
     Log::info("Найдено подходящих правил: {$countFitRules}");
     //Проходим циклом по каждому правилу и отправляем результат
     foreach ($fitRules as $fitRule) {
         Log::info("Соответствующее правило: ", $fitRule->getAttributes());
         $signalSid = $fitRule->signal->signal_sid;
         $resultSignal = new ResultSignal();
         $resultSignal->newResultSignal($this->incomeEvent->id, $signalSid);
         Log::info("Запись в таблицу сигналов: id  = {$resultSignal->id}");
         //Отправляем результат по http
         $sendResults = App::make(SendResults::class);
         $url = $this->incomeEvent->terminal->url;
         if ($url != '') {
             $sendResults->sendHttp($url, $resultSignal->id, $data);
         }
         //Отправляем результат в очередь
         $queue = $this->incomeEvent->terminal->queue;
         if ($queue != '') {
             $sendResults->sendQueue($queue, $signalSid, $data);
             $resultSignal->setFlagQueueTrue();
         }
     }
     return ['countFitRules' => $countFitRules];
 }
Example #2
0
 /**
  * @param Job   $job
  * @param array $data
  */
 public function fire(Job $job, $data)
 {
     $signalId = $data['signalId'];
     $signalResult = ResultSignal::find($signalId);
     if ($signalResult == null) {
         $job->delete();
         exit;
     }
     $url = $data['url'];
     $signalSid = $signalResult->signal_sid;
     $isSend = $this->makeCurl($url, $signalSid);
     //Если отправлен результат то удаляем задачу и ставим флаг
     if ($isSend) {
         $job->delete();
         $signalResult->setFlagUrlTrue();
         Log::info('Результат отправлен по http.');
     }
     $cnt = $job->attempts();
     if ($cnt > 50) {
         $job->delete();
         Log::info('Выполнено ' . $cnt . ' попыток отправить curl. Задача удалена.', $data);
         exit;
     }
     Log::info('Перевыставлена задача, попытка номер ' . $cnt, $data);
     $job->release(60);
 }
 public function setUp()
 {
     parent::setUp();
     Config::set('termId', 1);
     IncomeEvent::truncate();
     Event::truncate();
     Terminal::truncate();
     Rule::truncate();
     ResultSignal::truncate();
     Signal::truncate();
     Terminal::create(array('name' => 'test', 'url' => 'http://test', 'queue' => 'queueTest', 'key' => 'key'));
     Event::create(array('terminal_id' => 1, 'name' => 'Хочу есть', 'event_sid' => 'im_hungry'));
     Signal::create(array('terminal_id' => 1, 'name' => 'Иди кушай', 'signal_sid' => 'go_eat'));
     Signal::create(array('terminal_id' => 1, 'name' => 'Жди', 'signal_sid' => 'wait'));
     Signal::create(array('terminal_id' => 1, 'name' => 'Терпи до дома', 'signal_sid' => 'endure'));
     Rule::create(array('terminal_id' => 1, 'name' => 'Иди кушай', 'event_id' => 1, 'rule' => 'time >= 13.00 AND time <= 14.00 AND have_money === true', 'signal_id' => 1, 'flag_active' => true));
     Rule::create(array('terminal_id' => 1, 'name' => 'Жди', 'event_id' => 1, 'rule' => 'time < 13.00', 'signal_id' => 2, 'flag_active' => true));
     Rule::create(array('terminal_id' => 1, 'name' => 'Терпи до дома', 'event_id' => 1, 'rule' => 'time > 14.00', 'signal_id' => 3, 'flag_active' => true));
 }