123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- namespace App\Console\Commands;
- use App\Models\JuxingAdAccount;
- use App\Models\JxStarVideoOrderList;
- use App\Models\SupplementOrderTask;
- use App\Models\SupplementOrderTaskRecord;
- use App\Support\EmailQueue;
- use App\Support\Log;
- use Illuminate\Console\Command;
- use kwaiSDK\JuXing;
- class SupplementOrderCreate extends Command
- {
- protected $signature = 'SupplementOrderCreate';
- protected $description = '批量创建流量助推订单';
- protected $limit = 10;
- public function handle()
- {
- $this->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);
- }
- }
|