message_data = $message_data; } /** * Execute the job. * * @return void */ public function handle() { $page = isset($this->message_data['page']) ? $this->message_data['page'] : 1; $limit = isset($this->message_data['limit']) ? $this->message_data['limit'] : 50; $field = [ 'id', //ID 'manufacturer', //公司名称 'drugname', //药品名称 'specification', //规格 'approval', //批准文号 'provider_id', //供应商(店铺)ID 'provider_name', //供应商(店铺)名称 'minPrice', //最低价 'real_crawler_time', //真实采集时间 'url', //药品详情页url ]; try { $YsbangProductModel = new YsbangProductModel(); //获取分页数据,多个字段进行分组去重 $list_config_data = $YsbangProductModel->where([['real_crawler_time', '<', time() - 86400]]) ->orderby('id', 'desc')->paginate($limit, $field, 'page', $page)->toarray(); if (!$list_config_data || empty($list_config_data['data'])) { $totle_data = isset($this->message_data['total']) ? $this->message_data['total'] : 0; Log::info('job_info', '采集数据-药师帮数据同步队列,执行完毕', ['data' => ['page' => $page, 'limit' => $limit, 'totle' => $totle_data], 'message' => '没有数据可同步']); return true; } $list_data = $list_config_data['data']; $total = $list_config_data['total']; YsbangStoreJobs::dispatch($list_data); // YsbangStoreJobs::dispatchSync($list_data); Log::info('job_info', '采集数据-药师帮数据同步队列日志', ['data' => ['page' => $page, 'limit' => $limit, 'totle' => $total]]); //继续执行下一页 $message_data['page'] = $page + 1; $message_data['limit'] = $limit; $message_data['total'] = $total; $this->dispatch($message_data); } catch (\Exception $e) { Log::info('job_error', '采集数据-药师帮数据同步队列失败', ['error' => $e->getMessage()]); } } }