改进 主机和模块控制逻辑

This commit is contained in:
iVampireSP.com 2022-08-29 01:17:57 +08:00
parent 92335ebc0d
commit 9b0f050828
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
6 changed files with 53 additions and 67 deletions

View File

@ -1,21 +0,0 @@
<?php
namespace App\Http\Controllers\Remote\Host;
use App\Http\Controllers\Controller;
use App\Models\Host;
use Illuminate\Http\Request;
class DropController extends Controller
{
public function update(Request $request, Host $host) {
$request->validate([
'managed_price' => 'sometimes|numeric|max:1000|nullable',
]);
$host->managed_price = $request->managed_price;
$host->save();
return $this->updated($host);
}
}

View File

@ -17,7 +17,7 @@ class HostController extends Controller
public function index()
{
//
Host::all();
// Host::all();
}
/**
@ -28,13 +28,8 @@ public function index()
*/
public function store(Request $request)
{
// 保存服务器
$request->validate([
'name' => 'required|string',
'ip' => 'sometimes|ip',
// status only allow online or offline
'status' => 'required|in:online,offline,maintenance',
]);
// 存储计费项目
}
/**

View File

@ -14,12 +14,14 @@ public function index()
return $this->success(auth('remote')->user());
}
public function call(Request $request, Module $module, $func)
public function call(Request $request, Module $module)
{
$request->validate([
'func' => 'required|string'
]);
$func = $request->func;
// 不能让 func 的首个字符为 /
if (Str::startsWith($func, '/')) {
$func = substr($func, 1);

View File

@ -110,41 +110,49 @@ public function cost($price = null)
return true;
}
/**
* 创建主机
*
* 在此之后,所有的主机都将由 module 创建,并且主机的数据仅被用作计费。
*
* 废弃
* @deprecated
*/
// on create
protected static function boot()
{
parent::boot();
// protected static function boot()
// {
// parent::boot();
static::creating(function ($model) {
// if sanctum
if (auth('sanctum')->check()) {
$model->user_id = auth('sanctum')->id();
} else {
// if user_id is null
// check user_id is exists
throw_if(!User::find($model->user_id), CommonException::class, 'user is not exists');
}
// // static::creating(function ($model) {
// // // if sanctum
// // // if (auth('sanctum')->check()) {
// // // $model->user_id = auth('sanctum')->id();
// // // } else {
// // // // if user_id is null
// // // // check user_id is exists
// // // throw_if(!User::find($model->user_id), CommonException::class, 'user is not exists');
// // // }
// set price to 0
$model->price = 0;
// // // // set price to 0
// // // $model->price = 0;
// $model->load('module');
// $model->module->load(['provider', 'module']);
// // // $model->load('module');
// // // $model->module->load(['provider', 'module']);
// add to queue
// // // add to queue
});
// // });
// when Updated
static::updated(function ($model) {
dispatch(new \App\Jobs\Remote\Host($model, 'put'));
});
// // when Updated
// static::updated(function ($model) {
// dispatch(new \App\Jobs\Remote\Host($model, 'put'));
// });
// when delete
static::deleting(function ($model) {
// return false;
// // when delete
// static::deleting(function ($model) {
// // return false;
dispatch(new \App\Jobs\Remote\Host($model, 'delete'));
});
}
// dispatch(new \App\Jobs\Remote\Host($model, 'delete'));
// });
// }
}

View File

@ -1,23 +1,25 @@
<?php
use App\Http\Controllers\User;
use App\Http\Controllers\Remote;
use User\WorkOrder\ReplyController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\User\TaskController;
use User\WorkOrder\WorkOrderController;
use App\Http\Controllers\User\DropController;
use App\Http\Controllers\Remote\ModuleController;
use App\Http\Controllers\Admin\User\UserController;
Route::name('api.')->middleware(['api', 'auth:sanctum'])->group(function () {
// Route::apiResource('users', Controllers\User\UserController::class);
Route::apiResource('users', UserController::class);
Route::apiResource('drops', User\DropController::class);
Route::apiResource('drops', DropController::class);
Route::get('tasks', [TaskController::class, 'index']);
Route::apiResource('work-orders', User\WorkOrder\WorkOrderController::class);
Route::apiResource('work-orders.replies', User\WorkOrder\ReplyController::class);
Route::apiResource('work-orders', WorkOrderController::class);
Route::apiResource('work-orders.replies', ReplyController::class);
// 调用远程 API
// Route::post('hosts/{host}/func/{func}', [Remote\CallController::class, 'host'])->name('host.call');
Route::post('/modules/{module}', [Remote\ModuleController::class, 'call'])->name('module.call');
Route::post('/modules/{module}', [ModuleController::class, 'call'])->name('module.call');
});

View File

@ -7,7 +7,7 @@
Route::apiResource('modules', Remote\ModuleController::class)->only(['index']);
Route::apiResource('servers', Remote\ServerController::class);
Route::apiResource('hosts', Remote\Host\HostController::class);
Route::patch('hosts/{host}', [Remote\Host\DropController::class, 'update']);
// Route::patch('hosts/{host}', [Remote\Host\DropController::class, 'update']);
// Route::patch('tasks', Remote\Host\TaskController::class);
Route::apiResource('tasks', Remote\Host\TaskController::class);