55 lines
1.6 KiB
PHP
55 lines
1.6 KiB
PHP
|
<?php
|
|||
|
declare (strict_types = 1);
|
|||
|
|
|||
|
namespace app\middleware;
|
|||
|
use think\facade\Db;
|
|||
|
|
|||
|
class Route
|
|||
|
{
|
|||
|
public function handle($request, \Closure $next)
|
|||
|
{
|
|||
|
// 检查是否完成安装
|
|||
|
if(file_exists(root_path() . 'install.lock'))
|
|||
|
{
|
|||
|
$module = app('http')->getName();
|
|||
|
if(!file_exists(root_path() . '/route/'.$module.'/app.php'))
|
|||
|
{
|
|||
|
$route = Db::name('route')->where('module',$module)->where('status',1)->count();
|
|||
|
if($route > 0)
|
|||
|
{
|
|||
|
if (!file_exists(root_path() . '/route/'.$module))
|
|||
|
{
|
|||
|
mkdir (root_path() . '/route/'.$module,0777);
|
|||
|
}
|
|||
|
$route_str='
|
|||
|
<?php
|
|||
|
use think\facade\Route;
|
|||
|
use think\facade\Db;
|
|||
|
use think\facade\Cache;
|
|||
|
|
|||
|
$module = app("http")->getName();
|
|||
|
|
|||
|
if(Cache::has("route_".$module)) {
|
|||
|
$runtimeRoute = Cache::get("route".$module);
|
|||
|
} else {
|
|||
|
$runtimeRoute = Db::name("route")->where("module",$module)->where("status", 1)->order("create_time asc")->column("full_url","url");
|
|||
|
Cache::set("route".$module,$runtimeRoute);
|
|||
|
}
|
|||
|
|
|||
|
foreach ($runtimeRoute as $k => $v) {
|
|||
|
Route::rule($k,$v);
|
|||
|
}';
|
|||
|
|
|||
|
|
|||
|
// 创建应用路由配置文件
|
|||
|
if(false == file_put_contents(root_path() . '/route/'.$module.'/app.php',$route_str)) {
|
|||
|
return abort(404,'创建路由配置文件失败,请检查route目录的权限');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return $next($request);
|
|||
|
}
|
|||
|
}
|