diff --git a/app/Http/Controllers/Api/Nasa/V1/FnTemplateController.php b/app/Http/Controllers/Api/Nasa/V1/FnTemplateController.php
new file mode 100755
index 00000000..c8480cb8
--- /dev/null
+++ b/app/Http/Controllers/Api/Nasa/V1/FnTemplateController.php
@@ -0,0 +1,82 @@
+ 'id',
+ 'group_code' => 'group_code',
+ 'title' => 'title',
+ 'title_sub' => 'title_sub',
+ 'content' => 'content',
+ 'stauts' => 'stauts',
+ 'created_at' => 'created_at',
+ 'updated_at' => 'updated_at'
+ ];
+
+ protected array $aValueStyle = [ // 特定文字渲染样式
+// '关闭' => "关闭",
+// '开启' => "开启"
+ ];
+
+ protected array $aFieldTypes = [
+ 'content' => 'text',
+// 'content_custom' => 'text',
+// 'content_v2ray' => 'content_v2ray',
+// 'content_clash' => 'content_clash'
+ ];
+
+ protected array $aOrderBy = [
+// [
+// "sField" => "status",
+// "sSort" => "desc",
+// ],
+ [
+ "sField" => "id",
+ "sSort" => "desc",
+ ]
+ ];
+
+ protected array $aJsonFields = [ // json字段
+
+ ];
+
+ protected array $aDateFields = [ // date字段
+// 'dtUpdatedAt'
+ ];
+
+ protected array $aLenthFields = [ // 限制长度的字段
+// "xx" => 100,
+ ];
+
+ protected array $aSelectFields = [ // 作为默认select的字段
+// 'status',
+ ];
+
+ protected array $aValueFields = [ // 值映射
+// 'status' => [
+// '1' => '开启',
+// '0' => '关闭',
+// ]
+ ];
+
+ protected array $aCcExtFields = [
+// 'dtCreatedAt' => '创建时间'
+ ];
+
+// protected array $aLimit = [3, 15, 40, 100]; // list长度,第一个为默认
+
+}
diff --git a/app/Http/Controllers/Web/Nasa/V1/MasterFnTemplateController.php b/app/Http/Controllers/Web/Nasa/V1/MasterFnTemplateController.php
new file mode 100644
index 00000000..e35c968b
--- /dev/null
+++ b/app/Http/Controllers/Web/Nasa/V1/MasterFnTemplateController.php
@@ -0,0 +1,26 @@
+sSiteWww = config("path.url_master_base") ?? '';
+ }
+
+}
diff --git a/app/Services/Cron.php b/app/Services/Cron.php
index 0cf99a5a..a0b55c7d 100755
--- a/app/Services/Cron.php
+++ b/app/Services/Cron.php
@@ -61,7 +61,7 @@ final class Cron
if ($h % 3 === 0 && $i === 3) {
CronFreenodeSync::nodehub(); // fn分到到nodehub
- CronFreenodeSync::run(); // fn分发到各到各站,旧版
+ CronFreenodeSync::run(); // fn分发到各到各站,旧版!!
NasaTestFnSubfile::run_b(); // nasa测试订阅文件
}
diff --git a/routes/api.php b/routes/api.php
index 61e84967..b2de89f4 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -6,6 +6,7 @@ use App\Http\Controllers\Api\Nasa\V1\SettingNavController as NasaV1SettingNavCon
use App\Http\Controllers\Api\Nasa\V1\TestsFnSubfileController as NasaV1TestsFnSubfileController;
use App\Http\Controllers\Api\Nasa\V1\FnCrawController as NasaV1FnCrawController;
use App\Http\Controllers\Api\Nasa\V1\FnPoolController as NasaV1FnPoolController;
+use App\Http\Controllers\Api\Nasa\V1\FnTemplateController as NasaV1FnTemplateController;
use App\Http\Controllers\Api\Nasa\V1\BladeBaseController as NasaV1BladeBaseController;
use App\Http\Controllers\Api\Nasa\V1\ArticleBaseController as NasaV1ArticleBaseController;
use App\Http\Controllers\Api\Nasa\V1\ArticleCacheController as NasaV1ArticleCacheController;
@@ -52,6 +53,18 @@ Route::prefix('nasa/v1')->middleware('nasa.auth')->group(function () {
Route::put('clone/save', [NasaV1FnPoolController::class, 'cloneSave']);
Route::get('hit/{id}/{field}', [NasaV1FnPoolController::class, 'hit']);
});
+
+ Route::prefix('fn/template')->group(function() {
+ Route::get('', [NasaV1FnTemplateController::class, 'index']);
+ Route::get('detail/{id}', [NasaV1FnTemplateController::class, 'detail']);
+ Route::put('detail/save/{id}', [NasaV1FnTemplateController::class, 'detailSave']);
+ Route::delete('delete/{id}', [NasaV1FnTemplateController::class, 'delete']);
+ Route::get('add', [NasaV1FnTemplateController::class, 'add']);
+ Route::put('add/save', [NasaV1FnTemplateController::class, 'addSave']);
+ Route::get('clone/{id}', [NasaV1FnTemplateController::class, 'clone']);
+ Route::put('clone/save', [NasaV1FnTemplateController::class, 'cloneSave']);
+ Route::get('hit/{id}/{field}', [NasaV1FnTemplateController::class, 'hit']);
+ });
Route::prefix('fn/craw')->group(function() {
Route::get('', [NasaV1FnCrawController::class, 'index']);
diff --git a/routes/web.php b/routes/web.php
index 655f6d6b..76b64d14 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -30,6 +30,7 @@ use App\Http\Controllers\Web\Nasa\V1\AuthController;
use App\Http\Controllers\Web\Nasa\V1\MasterPanelNavController as NasaMasterPanelNavController;
use App\Http\Controllers\Web\Nasa\V1\MasterFnCrawController as NasaMasterFnCrawController;
use App\Http\Controllers\Web\Nasa\V1\MasterFnPoolController as NasaMasterFnPoolController;
+use App\Http\Controllers\Web\Nasa\V1\MasterFnTemplateController as NasaMasterFnTemplateController;
use App\Http\Controllers\Web\Nasa\V1\FuNodeBaseController as NasaFuNodeBaseController;
use App\Http\Controllers\Web\Nasa\V1\FuNodeActionController as NasaFuNodeActionController;
use App\Http\Controllers\Web\Nasa\V1\FuEnvConfigController as NasaFuEnvConfigController;
@@ -91,6 +92,7 @@ Route::prefix('nasa')->middleware(['auth'])->group(function () {
Route::get('/master/cachetg/base', [NasaMasterCachetgBaseController::class, 'index'])->name('nasa.master.cachetg.base');
Route::get('/master/telegram/keys', [NasaMasterTelegramKeysController::class, 'index'])->name('nasa.master.telegram.keys');
Route::get('/master/fn/pool', [NasaMasterFnPoolController::class, 'index'])->name('nasa.master.fn.pool');
+ Route::get('/master/fn/template', [NasaMasterFnTemplateController::class, 'index'])->name('nasa.master.fn.template');
Route::get('/resource/article/base', [NasaResourceArticleBaseController::class, 'index'])->name('nasa.resource.article.base');
Route::get('/resource/uploadimages/base', [NasaResourceUploadimagesBaseController::class, 'index'])->name('nasa.resource.uploadimages.base');
Route::get('/fu/node/base', [NasaFuNodeBaseController::class, 'index'])->name('nasa.fu.node.base');