作者 赵彬吉

update

@@ -61,9 +61,7 @@ class SyncInquiry extends Command @@ -61,9 +61,7 @@ class SyncInquiry extends Command
61 foreach ($result as $key=>$val) { 61 foreach ($result as $key=>$val) {
62 ReInquiryForm::createInquiry($val['id'], $val['origin_id'], $val['adset_id'], $val['adset_name'], $val['ad_id'], $val['ad_name'], $val['full_name'], $val['email'], $val['phone_number'], $val['whatapp'], $val['ai_inquery'], $val['country'], $val['inquiry_time']); 62 ReInquiryForm::createInquiry($val['id'], $val['origin_id'], $val['adset_id'], $val['adset_name'], $val['ad_id'], $val['ad_name'], $val['full_name'], $val['email'], $val['phone_number'], $val['whatapp'], $val['ai_inquery'], $val['country'], $val['inquiry_time']);
63 } 63 }
64 - exit;  
65 } 64 }
66 - return true;  
67 } 65 }
68 66
69 /** 67 /**
  1 +<?php
  2 +namespace App\Console\Commands\Inquiry;
  3 +
  4 +use App\Models\Inquiry\ReInquiryDetail;
  5 +use App\Models\Inquiry\ReInquiryDetailLog;
  6 +use App\Models\Inquiry\ReInquiryForm;
  7 +use Illuminate\Console\Command;
  8 +use Illuminate\Support\Facades\Http;
  9 +use Illuminate\Support\Facades\Log;
  10 +
  11 +/**
  12 + * Class postInquiry
  13 + * @package App\Console\Commands\Inquiry
  14 + */
  15 +class postInquiry extends Command
  16 +{
  17 + /**
  18 + * The name and signature of the console command.
  19 + *
  20 + * @var string
  21 + */
  22 + protected $signature = 'post_inquiry';
  23 +
  24 + /**
  25 + * The console command description.
  26 + *
  27 + * @var string
  28 + */
  29 + protected $description = '执行询盘请求';
  30 +
  31 + /**
  32 + * Create a new command instance.
  33 + *
  34 + * @return void
  35 + */
  36 + public function __construct()
  37 + {
  38 + parent::__construct();
  39 + }
  40 +
  41 +
  42 + public function handle()
  43 + {
  44 + while (true) {
  45 + $list = ReInquiryDetailLog::where('status', ReInquiryDetailLog::STATUS_INIT)->where('start_at', '<=', date('Y-m-d H:i:s'))->limit(100)->get();
  46 + if (!$list->count()){
  47 + //5分钟同步一次
  48 + sleep(1);
  49 + }
  50 + // 询盘数据入库
  51 + foreach ($list as $key => $val) {
  52 + try {
  53 + $detail = ReInquiryDetail::find($val['detail_id']);
  54 + if($val['type'] == 1){
  55 + $this->visit($detail, $val);
  56 + }else{
  57 + $res = $this->inquiry($detail, $val);
  58 +
  59 + //转发详情
  60 + $detail->status = $res ? ReInquiryDetail::STATUS_SUCCESS : ReInquiryDetail::STATUS_FAIL;
  61 + $detail->result = $val['url'];
  62 + $detail->save();
  63 + //转发表单
  64 + if($res){
  65 + $form = ReInquiryForm::find($detail['form_id']);
  66 + $form->success_num = $form->success_num + 1;
  67 + $form->save();
  68 + }
  69 + }
  70 + }catch (\Exception $e){
  71 +
  72 + }
  73 + }
  74 + }
  75 + }
  76 +
  77 + public function visit(ReInquiryDetail $detail, ReInquiryDetailLog $log){
  78 + if($detail['is_v6']) {
  79 + $data = [
  80 + 'ip' => $detail['ip'],
  81 + 'url' => $log['url'],
  82 + 'device_port' => $detail['device_port'],
  83 + 'referrer_url' => $detail['referrer'],
  84 + 'user_agent' => $detail['user_agent'],
  85 + ];
  86 + $res = Http::withoutVerifying()->post($detail['re_website'] . 'api/traffic_visit/', $data)->json();
  87 + if (empty($res['status']) || $res['status'] != 200) {
  88 + $log->status = ReInquiryDetailLog::STATUS_FAIL;
  89 + $log->remark = $res['message'] ?? '';
  90 + $log->save();
  91 +
  92 + Log::channel('inquiry_relay')->error('inquiry_relay visit error', [$res, $detail['re_website'] . 'api/traffic_visit/',$data]);
  93 + }
  94 + }else{
  95 + //v4 v5分离项目 往测试链接推
  96 + $website = $detail['re_website'];
  97 + $site_array = file_get_contents('https://www.quanqiusou.cn/extend_api/saas/split.php');
  98 + $site_array = json_decode($site_array, true);
  99 + $mail_urls = array_column($site_array, 'main_url');
  100 + $key = array_search($detail['re_website'], $mail_urls);
  101 + if ($key !== false) {
  102 + // 分离项目 推送到测试链接
  103 + $website = $site_array[$key]['test_url'];
  104 + }
  105 +
  106 + $data = [
  107 + 'action' => 'stats_init',
  108 + 'assort' => 0,
  109 + 'referrer' => $detail['referrer'],
  110 + 'currweb' => $log['url'],
  111 + 'user_agent' => $detail['user_agent'],
  112 + "ip" => $detail['ip'],
  113 + ];
  114 + $res = Http::get($website . 'wp-admin/admin-ajax.php', $data)->json();
  115 + if($res != 200){
  116 + $log->status = ReInquiryDetailLog::STATUS_FAIL;
  117 + $log->remark = $res['message'] ?? '';
  118 + $log->save();
  119 +
  120 + Log::channel('inquiry_relay')->error('inquiry_relay v4|v5 visit error', [$res, $website . 'wp-admin/admin-ajax.php', $data]);
  121 + }
  122 + }
  123 + }
  124 +
  125 + public function inquiry(ReInquiryDetail $detail, ReInquiryDetailLog $log){
  126 + // v6
  127 + if($detail['is_v6']) {
  128 + $data = [
  129 + 'name' => $detail['name'],
  130 + 'phone' => $detail['phone'],
  131 + 'message' => $detail['message'],
  132 + 'submit_ip' => $detail['ip'],
  133 + 'refer' => $log->url,
  134 + ];
  135 + if($detail->email){
  136 + $data['email'] = $detail->email;
  137 + }else{
  138 + $data['__amp_source_origin'] = trim($detail['re_website'], '/');
  139 + }
  140 +
  141 + $res = Http::withoutVerifying()->withHeaders(['User-Agent' => $detail['user_agent']])->post($detail['re_website'] . 'api/inquiryQd/', $data)->json();
  142 + if(empty($res['code']) || $res['code'] != 200){
  143 + $log->status = ReInquiryDetailLog::STATUS_FAIL;
  144 + $log->remark = $res['message'] ?? '';
  145 + $log->save();
  146 +
  147 + Log::channel('inquiry_relay')->error('inquiry_relay v6 inquiry error', [$res, $detail['website'] . 'api/inquiryQd/', $data]);
  148 + return false;
  149 + }
  150 + }else{
  151 + $data = [
  152 + 'name' => $detail['name'],
  153 + 'phone' => $detail['phone'],
  154 + 'message' => $detail['message'],
  155 + 'email' => $detail['email'],
  156 + 'ip' => $detail['ip'],
  157 + 'token' => md5($log->url . $detail['name'] . $detail['ip'] . date("Y-m-d")),
  158 + 'refer' => $log->url,
  159 + 'submit_time' => date('Y-m-d H:i:s'),
  160 + 'source' => 5,
  161 + ];
  162 +
  163 + $res = Http::withoutVerifying()->post('https://form.globalso.com/api/external-interface/add/fa043f9cbec6b38f', $data)->json();
  164 + if(empty($res['code']) || $res['code'] != 200){
  165 + $log->status = ReInquiryDetailLog::STATUS_FAIL;
  166 + $log->remark = $res['message'] ?? '';
  167 + $log->save();
  168 +
  169 + Log::channel('inquiry_relay')->error('inquiry_relay v4|v5 inquiry error', [$res, 'https://form.globalso.com/api/external-interface/add/fa043f9cbec6b38f', $data]);
  170 + return false;
  171 + }
  172 + }
  173 + return true;
  174 + }
  175 +
  176 +
  177 + public function output($message)
  178 + {
  179 + echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
  180 + }
  181 +}
@@ -13,6 +13,7 @@ use App\Http\Controllers\Aside\BaseController; @@ -13,6 +13,7 @@ use App\Http\Controllers\Aside\BaseController;
13 use App\Models\Channel\Channel; 13 use App\Models\Channel\Channel;
14 use App\Models\Domain\DomainInfo; 14 use App\Models\Domain\DomainInfo;
15 use App\Models\Inquiry\ReInquiryDetail; 15 use App\Models\Inquiry\ReInquiryDetail;
  16 +use App\Models\Inquiry\ReInquiryDetailLog;
16 use App\Models\Inquiry\ReInquiryForm; 17 use App\Models\Inquiry\ReInquiryForm;
17 use App\Models\Inquiry\ReInquiryTask; 18 use App\Models\Inquiry\ReInquiryTask;
18 use App\Models\Project\Project; 19 use App\Models\Project\Project;
@@ -46,6 +47,14 @@ class AdsController extends BaseController @@ -46,6 +47,14 @@ class AdsController extends BaseController
46 }) 47 })
47 ->orderBy('id', 'desc') 48 ->orderBy('id', 'desc')
48 ->paginate(); 49 ->paginate();
  50 +
  51 + $relay_site_total = 0;
  52 + foreach ($result as $item){
  53 + $relay_site_total += count($item->target);
  54 + }
  55 + $result = $result->toArray();
  56 + $result['relay_site_total'] = $relay_site_total;
  57 +
49 return $this->response('success', Code::SUCCESS, $result); 58 return $this->response('success', Code::SUCCESS, $result);
50 } 59 }
51 60