webman后台
This commit is contained in:
79
dafuweng-webman/app/common/controller/Api.php
Normal file
79
dafuweng-webman/app/common/controller/Api.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\common\controller;
|
||||
|
||||
use app\support\BaseController;
|
||||
use support\Response;
|
||||
use support\think\Db;
|
||||
use think\db\exception\PDOException;
|
||||
use Webman\Http\Request as WebmanRequest;
|
||||
|
||||
/**
|
||||
* API 控制器基类
|
||||
* 迁移自 app/common/controller/Api.php,适配 Webman
|
||||
*/
|
||||
class Api extends BaseController
|
||||
{
|
||||
/**
|
||||
* 默认响应输出类型
|
||||
*/
|
||||
protected string $responseType = 'json';
|
||||
|
||||
/**
|
||||
* 是否开启系统站点配置(数据库检查、ip_check、set_timezone)
|
||||
*/
|
||||
protected bool $useSystemSettings = true;
|
||||
|
||||
/**
|
||||
* API 初始化(需在控制器方法开头调用)
|
||||
* @param WebmanRequest $request
|
||||
* @return Response|null 若需直接返回(如 ip 禁止、数据库错误)则返回 Response,否则 null
|
||||
*/
|
||||
public function initializeApi(WebmanRequest $request): ?Response
|
||||
{
|
||||
$this->setRequest($request);
|
||||
|
||||
if ($this->useSystemSettings) {
|
||||
// 检查数据库连接
|
||||
try {
|
||||
Db::execute('SELECT 1');
|
||||
} catch (PDOException $e) {
|
||||
return $this->error(mb_convert_encoding($e->getMessage(), 'UTF-8', 'UTF-8,GBK,GB2312,BIG5'));
|
||||
}
|
||||
|
||||
// IP 检查
|
||||
$ipCheckResponse = ip_check(null, $request);
|
||||
if ($ipCheckResponse !== null) {
|
||||
return $ipCheckResponse;
|
||||
}
|
||||
|
||||
// 时区设定
|
||||
set_timezone();
|
||||
}
|
||||
|
||||
// 语言包由 LoadLangPack 中间件加载
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 Request 或路由解析控制器路径(如 user/user)
|
||||
* 优先从 $request->controller 解析,否则从 path 解析
|
||||
*/
|
||||
protected function getControllerPath(WebmanRequest $request): ?string
|
||||
{
|
||||
return get_controller_path($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 Request 解析应用名(api 或 admin)
|
||||
*/
|
||||
protected function getAppFromRequest(WebmanRequest $request): string
|
||||
{
|
||||
$path = trim($request->path(), '/');
|
||||
$parts = explode('/', $path);
|
||||
return $parts[0] ?? 'api';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user