改进 主机和模块控制逻辑
This commit is contained in:
parent
92335ebc0d
commit
9b0f050828
@ -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);
|
||||
}
|
||||
}
|
@ -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',
|
||||
]);
|
||||
// 存储计费项目
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
|
@ -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');
|
||||
}
|
||||
|
||||
// set price to 0
|
||||
$model->price = 0;
|
||||
|
||||
// $model->load('module');
|
||||
// $model->module->load(['provider', 'module']);
|
||||
|
||||
// add to queue
|
||||
|
||||
});
|
||||
|
||||
// when Updated
|
||||
static::updated(function ($model) {
|
||||
dispatch(new \App\Jobs\Remote\Host($model, 'put'));
|
||||
});
|
||||
|
||||
// when delete
|
||||
static::deleting(function ($model) {
|
||||
// return false;
|
||||
|
||||
dispatch(new \App\Jobs\Remote\Host($model, 'delete'));
|
||||
});
|
||||
}
|
||||
// // 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;
|
||||
|
||||
// // // $model->load('module');
|
||||
// // // $model->module->load(['provider', 'module']);
|
||||
|
||||
// // // add to queue
|
||||
|
||||
// // });
|
||||
|
||||
// // when Updated
|
||||
// static::updated(function ($model) {
|
||||
// dispatch(new \App\Jobs\Remote\Host($model, 'put'));
|
||||
// });
|
||||
|
||||
// // when delete
|
||||
// static::deleting(function ($model) {
|
||||
// // return false;
|
||||
|
||||
// dispatch(new \App\Jobs\Remote\Host($model, 'delete'));
|
||||
// });
|
||||
// }
|
||||
}
|
||||
|
@ -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');
|
||||
|
||||
});
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user