info(date('H:i') . ' 开始执行'); $curTime = time(); while (true) { if ((time() - $curTime) >= 600) break; try { $this->createOrder(); } catch (\Exception $e) { EmailQueue::rPush('批量创建流量助推订单流程发生异常', $e->getTraceAsString(), ['xiaohua.hou@kuxuan-inc.com'], '聚星'); Log::error('批量创建流量助推订单流程发生异常', [ 'msg' => $e->getMessage(), 'line' => $e->getLine() ], 'SupplementOrderCreateException'); break; } } } private function createOrder() { do { # 查询待处理的任务 $taskList = SupplementOrderTask::where('enable', 1)->where('status', 1) ->where('exec_time', '<=', date('Y-m-d H:i:s')) ->orderBy('exec_time')->limit($this->limit) ->get(); if(!$taskList->count()) sleep(10); if($taskList->isNotEmpty()) { foreach ($taskList as $task) { # 修改任务状态为正在执行 SupplementOrderTask::where('id', $task->id)->update(['status' => 2]); # 通过查询条件查找需要生成流量助推订单的聚星订单id $filter = json_decode($task->filter, true); // $task->advertiser_id = explode(',', $task->advertiser_id); $orderData = JxStarVideoOrderList::getOrderData($task->advertiser_id, $filter); $orderIds = $orderData->pluck('order_id'); Log::info('任务对应的订单信息为:', [ 'order_ids' => $orderIds, 'advertiser_id' => $task->advertiser_id ], 'SupplementOrderCreate'); # 开始创建流量助推订单 foreach ($orderData as $datum) { for($i=1;$i<=$task->times;$i++) { $accessToken = JuxingAdAccount::getAccessToken($task->advertiser_id); $jxSDK = new JuXing($accessToken); $params = [ 'advertiser_id' => $task->advertiser_id, 'order_id' => $datum->order_id, 'campaign_type' => $task->campaign_type, 'unit_charge_type' => $task->unit_charge_type, 'unit_price_type' => $task->unit_price_type, 'pay_method' => $task->pay_method, 'amount' => $task->amount, 'promotion_duration' => $task->promotion_duration, 'target_type' => $task->target_type, 'target_info' => json_decode($task->target_info, true), 'unit_price' => $task->unit_price ]; $rst = $jxSDK->supplementOrderV2()->starVideoCreate($params); $errCode = $rst['code'] ?? -1; $message = $rst['message'] ?? json_encode($rst, 256); $status = $errCode ? 2 : 1; $supplementId = $rst['data']['supplement_order_id'] ?? ''; if($errCode == -1) { EmailQueue::rPush('创建流量助推订单返回结果异常', json_encode($rst, 256), ['xiaohua.hou@kuxuan-inc.com'], '聚星'); } Log::info('创建助推订单的返回结果:', [ 'times' => $i, 'params' => $params, 'order_id' => $datum->order_id, 'response' => $rst ], 'SupplementOrderCreate'); # 创建的助推订单信息入record表 $result = SupplementOrderTaskRecord::saveRecord( $task->id, $task->advertiser_id, $datum->task_id, $datum->order_id, $status, $errCode, $message, $supplementId, $task->customer_id ); Log::info('创建助推订单的返回结果:', [ 'order_id' => $datum->order_id, 'result' => $result ], 'SupplementOrderCreate'); } } # 任务完成,变更状态 SupplementOrderTask::where('id', $task->id)->update(['status' => 3]); } } $count = $taskList->count(); } while ($this->limit == $count); } }