<?php
namespace App\Jobs\pdd;
use App\Http\service\oceanengine\OceanengineReport;
use App\Models\oceanengine\OceanengineAdvertiser;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use GuzzleHttp\Client;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
class CaijiOrder implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* 可以尝试任务的次数
*
* @var int
*/
public $tries = 25;
public $timeout = 36000; // 30分钟超时
/**
* 失败前允许的最大未处理异常数
*
* @var int
*/
public $maxExceptions = 3;
protected $page;
public function __construct($page)
{
$this->page = $page;
}
public function handle()
{
try {
$oceanengineReport = new OceanengineReport();
$accessToken='bf7d92e0b9d24f96c7df82d9a12ce11e8679c2b5';
// Step 2: 获取广告主账户列表
$advertisers = $oceanengineReport->getAdvertiserList($accessToken,$this->page);
$list=Arr::get($advertisers,'data.list');
if(!empty($list)){
// Step 3: 遍历广告主,获取余额、消耗、转化数和转化成本
foreach ($list as $advertiser) {
$advertiserId = $advertiser['advertiser_id'];
// 获取消耗、转化数和转化成本
$reportData = $oceanengineReport->getReportData(
$accessToken,
$advertiserId,
);
if(!empty($reportData['data'])){
$oceanengineReport->processReportData($reportData['data']);
}
}
// 如果还有更多页,继续分发任务
$total_pages=Arr::get($advertisers,'data.page_info.total_page');
if ($total_pages > $this->page) {
CaijiOrder::dispatch($this->page + 1);
}
}
} catch (\Exception $e) {
// 处理请求异常
report($e);
}
}
}
php artisan queue:work
SendEmailJob::dispatch(['email' => 'user@example.com']);