作者 周海龙

合并分支 'zhl' 到 'master'

Zhl



查看合并请求 !329
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: zhl
  5 + * Date: 2024/1/4
  6 + * Time: 16:25
  7 + */
  8 +namespace App\Http\Controllers\Api;
  9 +
  10 +use App\Http\Controllers\Controller;
  11 +
  12 +/**
  13 + * Class BaseController
  14 + * @package App\Http\Controllers\Api
  15 + */
  16 +class BaseController extends Controller
  17 +{
  18 + /**
  19 + * @param array $data
  20 + * @param string $message
  21 + * @param int $status
  22 + * @return false|string
  23 + */
  24 + protected function success($data = [], $message = 'success', $status = 200)
  25 + {
  26 + $array = compact('status', 'message', 'data');
  27 + return json_encode($array, JSON_UNESCAPED_UNICODE);
  28 + }
  29 +
  30 + /**
  31 + * @param string $message
  32 + * @param int $status
  33 + * @param array $data
  34 + * @return false|string
  35 + */
  36 + protected function error($message = 'error', $status = 400, $data = [])
  37 + {
  38 + $array = compact('status', 'message', 'data');
  39 + return json_encode($array, JSON_UNESCAPED_UNICODE);
  40 + }
  41 +}
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: zhl
  5 + * Date: 2024/01/04
  6 + * Time: 16:08
  7 + */
  8 +namespace App\Http\Controllers\Api;
  9 +
  10 +use App\Models\Visit\SyncSubmitTask;
  11 +use App\Models\Visit\Visit;
  12 +use Illuminate\Http\Request;
  13 +
  14 +/**
  15 + * Class NoticeController
  16 + * @package App\Http\Controllers\Api
  17 + */
  18 +class NoticeController extends BaseController
  19 +{
  20 + /**
  21 + * 网站引流
  22 + * @param Request $request
  23 + * @return false|string
  24 + */
  25 + public function trafficVisit(Request $request)
  26 + {
  27 + $ip = $request->input('ip');
  28 + $url = $request->input('url');
  29 + $device_port = intval($request->input('device_port'));
  30 + $referrer_url = $request->input('referrer_url');
  31 + $user_agent = $request->input('user_agent');
  32 +
  33 + if (empty($ip))
  34 + return $this->error('IP不能为空');
  35 + if (empty($url))
  36 + return $this->error('访问链接不能为空');
  37 + if (empty($user_agent))
  38 + return $this->error('请求头信息user_agent不能为空');
  39 +
  40 + //
  41 + $url_array = parse_url($url);
  42 + $array = [
  43 + 'ip' => $ip,
  44 + 'domain' => $url_array['host'] ?? '',
  45 + 'referer' => $referrer_url,
  46 + 'user_agent' => $user_agent,
  47 + 'data' => [
  48 + 'url' => $url,
  49 + 'domain' => empty($url_array['host']) ? '' : $url_array['scheme'] . '://' . $url_array['host'],
  50 + 'device_port' => in_array($device_port, array_keys(Visit::deviceMap())) ? $device_port : 1,
  51 + 'referrer_url' => $referrer_url
  52 + ]
  53 + ];
  54 + SyncSubmitTask::createTask($array, SyncSubmitTask::TYPE_VISIT);
  55 + return $this->success([]);
  56 + }
  57 +}
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: zhl
  5 + * Date: 2024/1/5
  6 + * Time: 14:16
  7 + */
  8 +namespace App\Models\Visit;
  9 +
  10 +use App\Models\Base;
  11 +
  12 +/**
  13 + * Class SyncSubmitTask
  14 + * @package App\Models\Visit
  15 + */
  16 +class SyncSubmitTask extends Base
  17 +{
  18 + /**
  19 + * 表名
  20 + * @var string
  21 + */
  22 + protected $table = 'gl_sync_submit_task';
  23 +
  24 + const TYPE_INQUIRY = 'inquiry';
  25 + const TYPE_VISIT = 'visit';
  26 +
  27 + /**
  28 + * @param $data
  29 + * @param string $type
  30 + * @return mixed
  31 + */
  32 + public static function createTask($data, $type = self::TYPE_VISIT)
  33 + {
  34 + $task = new self();
  35 + $task->data = json_encode($data);
  36 + $task->type = $type;
  37 + $task->save();
  38 + return $task->id;
  39 + }
  40 +}
@@ -20,6 +20,9 @@ class Visit extends Base @@ -20,6 +20,9 @@ class Visit extends Base
20 protected $connection = 'custom_mysql'; 20 protected $connection = 'custom_mysql';
21 protected $appends = ['device_text']; 21 protected $appends = ['device_text'];
22 22
  23 + const DEVICE_PC = 1;
  24 + const DEVICE_MOBILE = 2;
  25 +
23 public static function deviceMap(){ 26 public static function deviceMap(){
24 return [ 27 return [
25 1 => 'PC', 28 1 => 'PC',
@@ -17,3 +17,5 @@ use Illuminate\Support\Facades\Route; @@ -17,3 +17,5 @@ use Illuminate\Support\Facades\Route;
17 Route::middleware('auth:sanctum')->get('/user', function (Request $request) { 17 Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
18 return $request->user(); 18 return $request->user();
19 }); 19 });
  20 +
  21 +Route::any('traffic_visit', [\App\Http\Controllers\Api\NoticeController::class, 'trafficVisit'])->name('api.traffic_visit');