message_data = $message_data; } /** * Execute the job. * * @return void */ public function handle() { try { $LowPriceGoodsModel = new LowPriceGoodsModel(); $ViolationProductModel = new ViolationProductModel(); $ProcessViolationStoreModel = new ProcessViolationStoreModel(); $CollectWarningNoticeModel = new CollectWarningNoticeModel(); //获取已经开启邮箱通知的用户 $email_notice_list = $CollectWarningNoticeModel->where([['email', '!=', '']])->where('status', 0)->get()->toarray(); if (empty($email_notice_list)) return true; $start_time = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00 // $end_time = Carbon::today()->endOfDay()->getTimestamp(); // 今天结束时间 23:59:59 $end_time = time(); //获取低价商品省份城市为空或者未知的数据 $map = []; $map[] = ['insert_time', '>=', $start_time]; $map[] = ['insert_time', '<=', $end_time]; //获取低价商品省份城市为空或者未知的数据 $low_price_goods_count = $LowPriceGoodsModel->where(function ($query) { $query->orWhere('province_id', '0')->orWhere('province_name', '未知')->orWhere('province_name', ''); })->where(function ($query) { $query->orWhere('city_id', '0')->orWhere('city_name', '未知')->orWhere('city_name', ''); })->where($map)->count(); //获取违规商品省份城市为空或者未知的数据 $violation_product_count = $ViolationProductModel->where(function ($query) { $query->orWhere('province_id', '0')->orWhere('province_name', '未知')->orWhere('province_name', ''); })->where(function ($query) { $query->orWhere('city_id', '0')->orWhere('city_name', '未知')->orWhere('city_name', ''); })->where($map)->count(); //获取违规门店省份城市为空或者未知的数据 $violation_store_count = $ProcessViolationStoreModel->where(function ($query) { $query->orWhere('province_id', '0')->orWhere('province_name', '未知')->orWhere('province_name', ''); })->where(function ($query) { $query->orWhere('city_id', '0')->orWhere('city_name', '未知')->orWhere('city_name', ''); })->where($map)->count(); //发送预警通知 if ($low_price_goods_count > 0 || $violation_product_count > 0 || $violation_store_count > 0) { $email_titl = "数据清洗-城市为空预警通知:\n"; $email_content = "数据查询时间:" . date('Y-m-d H:i:s', $start_time) . "-" . date('Y-m-d H:i:s', $end_time) . "\n"; if ($low_price_goods_count > 0) { $email_content .= "低价商品省份城市为空或者未知数据数量:" . $low_price_goods_count . "\n"; } if ($violation_product_count > 0) { $email_content .= "禁止商品省份城市为空或者未知数据数量:" . $violation_product_count . "\n"; } if ($violation_store_count > 0) { $email_content .= "违规店铺省份城市为空或者未知数据数量:" . $violation_store_count . "\n"; } //发送预警通知 foreach ($email_notice_list as $email_notice) { $message_data = [ 'email' => $email_notice['email'], 'title' => $email_titl, 'content' => $email_content, ]; SendEmailJobs::dispatch(['notice_data_info' => json_encode($message_data)]); } } } catch (\Exception $e) { Log::info('job_error', '数据清洗-城市为空预警通知队列失败', ['data' => $this->message_data, 'error' => $e->getMessage()]); } } public function failed(\Throwable $exception) { Log::info('job_error', '数据清洗-城市为空预警通知队列完全失败', ['data' => $this->message_data, 'error' => $exception->getMessage()]); } }