url = config('ProvinceInfo.center_ip'); $this->channelName = 'send_system_message_stats_report'; $this->provinceId = config('ProvinceInfo.id'); $this->provinceName = config('ProvinceInfo.name'); } /** * @throws ConnectionException * @throws RequestException */ public function execute(): void { try { $data = $this->prepare(); Http::post($this->url, $data)->throw(); Log::channel($this->channelName)->info(SendSystemMessageStatsService::class, [$this->provinceName, array_sum($data), 'successful']); } catch (Exception $e) { Log::channel($this->channelName)->error(SendSystemMessageStatsService::class, [$e->getMessage()]); throw $e; } } private function prepare(): array { $query = "SELECT {$this->provinceId} AS province_id, '{$this->provinceName}' AS province_name, date, COUNT(CASE WHEN message_quality=1 THEN 1 END) AS message_quality_ok, COUNT(CASE WHEN message_quality=0 THEN 1 END) AS message_quality_nok, COUNT(CASE WHEN format_quality=1 THEN 1 END) AS message_format_ok, COUNT(CASE WHEN format_quality=0 THEN 1 END) AS message_format_nok, FROM system_messages GROUP BY date ORDER BY date DESC LIMIT 5"; return DB::select($query); } }