From 50378a5e8408aa1c2b720c42f4be8b7820c49a7d Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Sat, 13 Aug 2022 18:23:34 +0800 Subject: [PATCH] Provider Remote --- .../Controllers/Remote/ServerController.php | 79 ++++++++++++++----- app/Models/Server/Status.php | 26 ++++++ app/Providers/RouteServiceProvider.php | 4 + ...08_12_082631_create_transcations_table.php | 3 +- .../2022_08_13_051148_create_hosts_table.php | 6 +- ...2_08_13_051705_create_workorders_table.php | 6 +- ..._051817_create_workorder_replies_table.php | 6 +- ...3_053432_create_provider_modules_table.php | 6 +- .../2022_08_13_083649_create_tasks_table.php | 9 ++- ...8_13_100808_create_server_status_table.php | 44 +++++++++++ routes/api/remote.php | 10 +++ 11 files changed, 169 insertions(+), 30 deletions(-) create mode 100644 app/Models/Server/Status.php create mode 100644 database/migrations/2022_08_13_100808_create_server_status_table.php create mode 100644 routes/api/remote.php diff --git a/app/Http/Controllers/Remote/ServerController.php b/app/Http/Controllers/Remote/ServerController.php index 15a5137..94a74d6 100644 --- a/app/Http/Controllers/Remote/ServerController.php +++ b/app/Http/Controllers/Remote/ServerController.php @@ -2,11 +2,27 @@ namespace App\Http\Controllers\Remote; -use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use App\Http\Controllers\Controller; +use App\Models\Server\Status; +use Illuminate\Support\Facades\Cache; class ServerController extends Controller { + // protected $cache; + + // public function __construct() { + // $this->cache = Cache::tags(['remote']); + + // // 临时修改 prefix + // $this->cache->setPrefix('remote_' . auth('remote')->id()); + // } + + // public function all() { + // return $this->cache->get('servers', function () { + // return []; + // }); + // } /** * Display a listing of the resource. * @@ -14,7 +30,14 @@ class ServerController extends Controller */ public function index() { - // + // // + // $servers = $this->cache->get('servers', function () { + // return []; + // }); + + $servers = Status::provider()->get(); + + return $this->success($servers); } /** @@ -23,21 +46,25 @@ public function index() * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request, Status $status) { - // 远程服务器汇报服务器状态 + // + $request->validate([ + 'name' => 'required|string', + 'ip' => 'sometimes|ip', + 'status' => 'required|string', + ]); + + $status = $status->create([ + 'name' => $request->name, + 'ip' => $request->ip, + 'status' => $request->status, + 'provider_id' => auth('remote')->id() + ]); + + return $this->success($status); } - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - // - } /** * Update the specified resource in storage. @@ -46,9 +73,22 @@ public function show($id) * @param int $id * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, Status $status) { - // + // update + $request->validate([ + 'name' => 'sometimes|string', + 'ip' => 'sometimes|ip', + 'status' => 'sometimes|string', + ]); + + $status->provider()->update([ + 'name' => $request->name, + 'ip' => $request->ip, + 'status' => $request->status, + ]); + + return $this->updated($status); } /** @@ -57,8 +97,11 @@ public function update(Request $request, $id) * @param int $id * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(Status $status) { - // + // delete + $status->provider()->delete(); + return $this->deleted(); + } } diff --git a/app/Models/Server/Status.php b/app/Models/Server/Status.php new file mode 100644 index 0000000..d0e9a5e --- /dev/null +++ b/app/Models/Server/Status.php @@ -0,0 +1,26 @@ +where('provider_id', auth('remote')->id()); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 2d08309..d7f0f1b 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -37,6 +37,10 @@ public function boot() ->prefix('admin') ->group(base_path('routes/api/admin.php')); + Route::middleware('auth:admin') + ->prefix('admin') + ->group(base_path('routes/api/remote.php')); + Route::middleware('web') ->group(base_path('routes/web.php')); }); diff --git a/database/migrations/2022_08_12_082631_create_transcations_table.php b/database/migrations/2022_08_12_082631_create_transcations_table.php index 1c3f339..f70b31a 100644 --- a/database/migrations/2022_08_12_082631_create_transcations_table.php +++ b/database/migrations/2022_08_12_082631_create_transcations_table.php @@ -21,7 +21,8 @@ public function up() $table->string('remote_id')->index(); // drops id - $table->foreignIdFor(Drop::class)->index(); + $table->unsignedBigInteger('drops_id')->index(); + $table->foreign('drops_id')->references('id')->on('drops'); // payment $table->string('payment')->index(); diff --git a/database/migrations/2022_08_13_051148_create_hosts_table.php b/database/migrations/2022_08_13_051148_create_hosts_table.php index d852a28..1e282d1 100644 --- a/database/migrations/2022_08_13_051148_create_hosts_table.php +++ b/database/migrations/2022_08_13_051148_create_hosts_table.php @@ -22,10 +22,12 @@ public function up() $table->string('name')->index(); // provider id - $table->foreignIdFor(ProviderModule::class)->index(); + $table->unsignedBigInteger('provider_id')->index(); + $table->foreign('provider_id')->references('id')->on('providers')->onDelete('cascade'); // user_id - $table->foreignIdFor(User::class)->index(); + $table->unsignedBigInteger('user_id')->index(); + $table->foreign('user_id')->references('id')->on('users'); // price $table->double('price', 60, 8)->index(); diff --git a/database/migrations/2022_08_13_051705_create_workorders_table.php b/database/migrations/2022_08_13_051705_create_workorders_table.php index 4b11024..b0162b0 100644 --- a/database/migrations/2022_08_13_051705_create_workorders_table.php +++ b/database/migrations/2022_08_13_051705_create_workorders_table.php @@ -27,10 +27,12 @@ public function up() $table->text('content'); // user id - $table->foreignIdFor(User::class)->index(); + $table->unsignedBigInteger('user_id')->index(); + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); // host id - $table->foreignIdFor(Host::class)->index()->nullable(); + $table->unsignedBigInteger('host_id')->index(); + $table->foreign('host_id')->references('id')->on('hosts')->onDelete('cascade'); // status $table->enum('status', ['open', 'user_read', 'closed', 'user_replied', 'replied', 'read', 'on_hold', 'in_progress', 'error', 'pending'])->default('pending')->index(); diff --git a/database/migrations/2022_08_13_051817_create_workorder_replies_table.php b/database/migrations/2022_08_13_051817_create_workorder_replies_table.php index 601f590..8b1144e 100644 --- a/database/migrations/2022_08_13_051817_create_workorder_replies_table.php +++ b/database/migrations/2022_08_13_051817_create_workorder_replies_table.php @@ -22,10 +22,12 @@ public function up() $table->text('content'); // workorder id (on delete cascade) - $table->foreignIdFor(WorkOrder::class)->index()->onDelete('cascade'); + $table->unsignedBigInteger('workorder_id')->index(); + $table->foreign('workorder_id')->references('id')->on('workorders')->onDelete('cascade'); // user id - $table->foreignIdFor(User::class)->index(); + $table->unsignedBigInteger('user_id')->index(); + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->boolean('is_pending')->default(false)->index(); diff --git a/database/migrations/2022_08_13_053432_create_provider_modules_table.php b/database/migrations/2022_08_13_053432_create_provider_modules_table.php index e2f469e..e54aeca 100644 --- a/database/migrations/2022_08_13_053432_create_provider_modules_table.php +++ b/database/migrations/2022_08_13_053432_create_provider_modules_table.php @@ -20,10 +20,12 @@ public function up() $table->id(); // provider id (on delete cascade) - $table->foreignIdFor(Provider::class)->index()->onDelete('cascade'); + $table->unsignedBigInteger('provider_id')->index(); + $table->foreign('provider_id')->references('id')->on('providers')->onDelete('cascade'); // module id - $table->foreignIdFor(Module::class)->index(); + $table->unsignedBigInteger('module_id')->index(); + $table->foreign('module_id')->references('id')->on('modules')->onDelete('cascade'); // api_token // $table->string('api_token')->index()->unique(); diff --git a/database/migrations/2022_08_13_083649_create_tasks_table.php b/database/migrations/2022_08_13_083649_create_tasks_table.php index e169d26..1c8cece 100644 --- a/database/migrations/2022_08_13_083649_create_tasks_table.php +++ b/database/migrations/2022_08_13_083649_create_tasks_table.php @@ -28,13 +28,16 @@ public function up() $table->enum('status', ['pending', 'done', 'success', 'failed', 'error', 'cancelled', 'processing', 'need_operation'])->index(); // user id - $table->foreignIdFor(User::class)->index(); + $table->unsignedBigInteger('user_id')->index(); + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); // provider module id - $table->foreignIdFor(ProviderModule::class)->index(); + $table->unsignedBigInteger('provider_module_id')->index(); + $table->foreign('provider_module_id')->references('id')->on('provider_modules')->onDelete('cascade'); // host id - $table->foreignIdFor(Host::class)->index(); + $table->unsignedBigInteger('host_id')->index(); + $table->foreign('host_id')->references('id')->on('hosts')->onDelete('cascade'); $table->timestamps(); }); diff --git a/database/migrations/2022_08_13_100808_create_server_status_table.php b/database/migrations/2022_08_13_100808_create_server_status_table.php new file mode 100644 index 0000000..794170a --- /dev/null +++ b/database/migrations/2022_08_13_100808_create_server_status_table.php @@ -0,0 +1,44 @@ +id(); + + $table->string('name'); + + $table->string('ip')->nullable(); + + $table->string('status'); + + // provider foreign key + $table->unsignedBigInteger('provider_id')->index(); + $table->foreign('provider_id')->references('id')->on('providers')->onDelete('cascade'); + + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('server_status'); + } +}; diff --git a/routes/api/remote.php b/routes/api/remote.php new file mode 100644 index 0000000..20edea2 --- /dev/null +++ b/routes/api/remote.php @@ -0,0 +1,10 @@ +middleware(['api', 'auth:remote'])->group(function () { + // Route::apiResource('users', Controllers\User\UserController::class); +});