* [ * 'ip' => 'xxx', * 'ranseId' => 'xxx', * 'ranseStartAt' =>'xxx', * 'ranseEndAt' => 'xxx, * 'uid' => 'xxx', * 'traceInfo' => [] * ] * */ public function __construct($info) { $this->info = $info; } /** * Execute the job. */ public function handle(): void { /** * 1, ip , ranseId, 在最近的3 分钟里 找到检测链接记录 * 2, 如果找到了,就执行回传. * 3, 将信息记录入库. */ $traceContext = TraceContext::newFromParent($this->info['traceInfo']); myLog('JuliangAccountReportRanse')->info('开始执行回传', [ 'uid' => $this->info['uid'], 'ip' => $this->info['ip'], 'ranseId' => $this->info['ranseId'], 'traceInfo' => $traceContext->getTraceInfo() ]); $trackRecord = TrackService::getTrackRecord('juliangAccount', [ 'ip' => $this->info['ip'], 'ranseId' => $this->info['ranseId'] ]); if(is_null($trackRecord)) { myLog('JuliangAccountReportRanse')->warning('没有找到监测记录', [ 'traceInfo' => $traceContext->getTraceInfo() ]); return ; } $promotion = DB::table('promotions') ->where(['id' => $this->info['ranseId'], 'is_enabled' => 1]) ->select('callback_type', 'callback_config_id')->first(); if(!$promotion) { myLog('JuliangAccountReportRanse')->warning('end:染色推广记录不存在', [ 'traceInfo' => $traceContext->getTraceInfo() ]); return ; } if(1 != $promotion->callback_type) { myLog('JuliangAccountReportRanse')->warning('end:推广记录不是巨量账户级回传', [ 'traceInfo' => $traceContext->getTraceInfo() ]); return ; } $callbackConfig = DB::table('juliang_account_callback_config') ->where(['id' => $promotion->callback_config_id])->first(); if(!$callbackConfig) { myLog('JuliangAccountReportRanse')->warning('end:推广记录没有回传配置', [ 'traceInfo' => $traceContext->getTraceInfo() ]); return ; } if(0 == $callbackConfig->state) { myLog('JuliangAccountReportRanse')->info('end:推广记录对应回传配置关闭', [ 'traceInfo' => $traceContext->getTraceInfo() ]); return ; } if($callbackConfig->adv_account_id != $trackRecord['advertiser_id']) { myLog('JuliangAccountReportRanse')->warning('end:推广配置的广告主id和监测记录广告主id不一致', [ 'tuiguang_advertiser_id' => $callbackConfig->adv_account_id, 'jiance_advertiser_id' => $trackRecord['advertiser_id'], 'traceInfo' => $traceContext->getTraceInfo() ]); return ; } $service = new TiktokEventReportService(); $reportResult = $service->reportActive((object)[ 'callback' => $trackRecord['callback'] ]); myLog('JuliangAccountReportRanse')->debug('执行回传结果', [ 'reportResult' => $reportResult, 'traceInfo' => $traceContext->getTraceInfo() ]); $now = date('Y-m-d H:i:s'); DB::table('callback_report_ranse_record') ->insert([ 'uid' => $this->info['uid'], 'ranse_id' => $this->info['ranseId'], 'callback' => $trackRecord['callback'], 'advertiser_id' => $trackRecord['advertiser_id'], 'adv_promotion_id' => $trackRecord['adv_promotion_id'], 'report_result' => \json_encode($reportResult, JSON_UNESCAPED_UNICODE), 'created_at' => $now, 'updated_at' => $now, 'ranse_start_at' => $this->info['ranseStartAt'], 'ranse_end_at' => $this->info['ranseEndAt'], 'optimizer_uid' => $promotion->uid, 'ranse_ip' => $trackRecord['ip'], ]); } }