作者 周海龙

合并分支 'zhl' 到 'master'

Zhl



查看合并请求 !329
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2024/1/4
* Time: 16:25
*/
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
/**
* Class BaseController
* @package App\Http\Controllers\Api
*/
class BaseController extends Controller
{
/**
* @param array $data
* @param string $message
* @param int $status
* @return false|string
*/
protected function success($data = [], $message = 'success', $status = 200)
{
$array = compact('status', 'message', 'data');
return json_encode($array, JSON_UNESCAPED_UNICODE);
}
/**
* @param string $message
* @param int $status
* @param array $data
* @return false|string
*/
protected function error($message = 'error', $status = 400, $data = [])
{
$array = compact('status', 'message', 'data');
return json_encode($array, JSON_UNESCAPED_UNICODE);
}
}
\ No newline at end of file
... ...
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2024/01/04
* Time: 16:08
*/
namespace App\Http\Controllers\Api;
use App\Models\Visit\SyncSubmitTask;
use App\Models\Visit\Visit;
use Illuminate\Http\Request;
/**
* Class NoticeController
* @package App\Http\Controllers\Api
*/
class NoticeController extends BaseController
{
/**
* 网站引流
* @param Request $request
* @return false|string
*/
public function trafficVisit(Request $request)
{
$ip = $request->input('ip');
$url = $request->input('url');
$device_port = intval($request->input('device_port'));
$referrer_url = $request->input('referrer_url');
$user_agent = $request->input('user_agent');
if (empty($ip))
return $this->error('IP不能为空');
if (empty($url))
return $this->error('访问链接不能为空');
if (empty($user_agent))
return $this->error('请求头信息user_agent不能为空');
//
$url_array = parse_url($url);
$array = [
'ip' => $ip,
'domain' => $url_array['host'] ?? '',
'referer' => $referrer_url,
'user_agent' => $user_agent,
'data' => [
'url' => $url,
'domain' => empty($url_array['host']) ? '' : $url_array['scheme'] . '://' . $url_array['host'],
'device_port' => in_array($device_port, array_keys(Visit::deviceMap())) ? $device_port : 1,
'referrer_url' => $referrer_url
]
];
SyncSubmitTask::createTask($array, SyncSubmitTask::TYPE_VISIT);
return $this->success([]);
}
}
... ...
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2024/1/5
* Time: 14:16
*/
namespace App\Models\Visit;
use App\Models\Base;
/**
* Class SyncSubmitTask
* @package App\Models\Visit
*/
class SyncSubmitTask extends Base
{
/**
* 表名
* @var string
*/
protected $table = 'gl_sync_submit_task';
const TYPE_INQUIRY = 'inquiry';
const TYPE_VISIT = 'visit';
/**
* @param $data
* @param string $type
* @return mixed
*/
public static function createTask($data, $type = self::TYPE_VISIT)
{
$task = new self();
$task->data = json_encode($data);
$task->type = $type;
$task->save();
return $task->id;
}
}
\ No newline at end of file
... ...
... ... @@ -20,6 +20,9 @@ class Visit extends Base
protected $connection = 'custom_mysql';
protected $appends = ['device_text'];
const DEVICE_PC = 1;
const DEVICE_MOBILE = 2;
public static function deviceMap(){
return [
1 => 'PC',
... ...
... ... @@ -17,3 +17,5 @@ use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::any('traffic_visit', [\App\Http\Controllers\Api\NoticeController::class, 'trafficVisit'])->name('api.traffic_visit');
\ No newline at end of file
... ...