dootask/app/Http/Controllers/InvokeController.php
2021-06-23 12:07:13 +08:00

71 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Module\Base;
use App\Tasks\IhttpTask;
use Hhxsv5\LaravelS\Swoole\Task\Task;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
use Request;
class InvokeController extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
/**
* @param $method
* @param string $action
* @return array|void
*/
public function __invoke($method, $action = '')
{
$app = $method ?: 'main';
if ($action) {
$app .= "__" . $action;
}
// 接口不存在
if (!method_exists($this, $app)) {
$msg = "404 not found (" . str_replace("__", "/", $app) . ").";
return Base::ajaxError($msg);
}
// 使用websocket请求
$apiWebsocket = Request::header('Api-Websocket');
if ($apiWebsocket) {
$userid = User::userid();
if ($userid > 0) {
$url = 'http://127.0.0.1:' . env('LARAVELS_LISTEN_PORT') . Request::getRequestUri();
$task = new IhttpTask($url, Request::post(), [
'Content-Type' => Request::header('Content-Type'),
'language' => Request::header('language'),
'token' => Request::header('token'),
]);
$task->setApiWebsocket($apiWebsocket);
$task->setApiUserid($userid);
Task::deliver($task);
return Base::retSuccess('wait');
}
}
// 正常请求
$res = $this->__before($method, $action);
if ($res === true || Base::isSuccess($res)) {
return $this->$app();
} else {
return is_array($res) ? $res : Base::ajaxError($res);
}
}
/**
* @param $method
* @param $action
* @return bool|array|string
*/
public function __before($method, $action)
{
return true;
}
}