This commit is contained in:
iVampireSP.com 2022-08-16 18:44:16 +08:00
parent 00029f75d5
commit 3d4b28a545
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
11 changed files with 197 additions and 45 deletions

View File

@ -2,17 +2,19 @@
namespace App\Http\Controllers\Admin\Host; namespace App\Http\Controllers\Admin\Host;
use App\Models\User;
use App\Models\User\Host;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Host;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class HostController extends Controller class HostController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index(Request $request) public function index(Request $request)
{ {
@ -31,7 +33,8 @@ public function index(Request $request)
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response *
* @return JsonResponse|Response
*/ */
public function store(Request $request, Host $host) public function store(Request $request, Host $host)
{ {
@ -69,8 +72,9 @@ public function store(Request $request, Host $host)
/** /**
* Display the specified resource. * Display the specified resource.
* *
* @param \App\Models\User\Host $host * @param Host $host
* @return \Illuminate\Http\Response *
* @return JsonResponse
*/ */
public function show(User $user, Host $host) public function show(User $user, Host $host)
{ {
@ -82,9 +86,10 @@ public function show(User $user, Host $host)
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \App\Models\User\Host $host * @param Host $host
* @return \Illuminate\Http\Response *
* @return Response
*/ */
public function update(Request $request, Host $host) public function update(Request $request, Host $host)
{ {
@ -94,8 +99,9 @@ public function update(Request $request, Host $host)
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Models\User\Host $host * @param Host $host
* @return \Illuminate\Http\Response *
* @return Response
*/ */
public function destroy(Host $host) public function destroy(Host $host)
{ {

View File

@ -3,8 +3,8 @@
namespace App\Http\Controllers\Admin\WorkOrder; namespace App\Http\Controllers\Admin\WorkOrder;
use App\Models\User; use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\WorkOrder\Reply;
use App\Models\WorkOrder\WorkOrder; use App\Models\WorkOrder\WorkOrder;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
@ -14,7 +14,7 @@ class WorkOrderController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return JsonResponse
*/ */
public function index(WorkOrder $work_order) public function index(WorkOrder $work_order)
{ {
@ -26,8 +26,9 @@ public function index(WorkOrder $work_order)
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return \Illuminate\Http\Response *
* @return JsonResponse
*/ */
public function store(Request $request) public function store(Request $request)
{ {
@ -54,8 +55,10 @@ public function store(Request $request)
/** /**
* Display the specified resource. * Display the specified resource.
* *
* @param \App\Models\WorkOrder\WorkOrder $workorder * @param User $user
* @return \Illuminate\Http\Response * @param WorkOrder $work_order
*
* @return JsonResponse
*/ */
public function show(User $user, Workorder $work_order) public function show(User $user, Workorder $work_order)
{ {
@ -67,9 +70,11 @@ public function show(User $user, Workorder $work_order)
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @param \App\Models\WorkOrder\WorkOrder $work_order * @param User $user
* @return \Illuminate\Http\Response * @param WorkOrder $work_order
*
* @return JsonResponse
*/ */
public function update(Request $request, User $user, WorkOrder $work_order) public function update(Request $request, User $user, WorkOrder $work_order)
{ {
@ -85,8 +90,10 @@ public function update(Request $request, User $user, WorkOrder $work_order)
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Models\WorkOrder\WorkOrder $work_order * @param User $user
* @return \Illuminate\Http\Response * @param WorkOrder $work_order
*
* @return JsonResponse
*/ */
public function destroy(User $user, WorkOrder $work_order) public function destroy(User $user, WorkOrder $work_order)
{ {

View File

@ -3,7 +3,7 @@
namespace App\Http\Controllers\Remote\Host; namespace App\Http\Controllers\Remote\Host;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\User\Host; use App\Models\Host;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class DropController extends Controller class DropController extends Controller

View File

@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers\Remote\Host;
use App\Http\Controllers\Controller;
use App\Models\Host;
use Illuminate\Http\Request;
class HostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
Host::all();
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View File

@ -3,16 +3,14 @@
namespace App\Jobs; namespace App\Jobs;
use App\Helpers\Lock; use App\Helpers\Lock;
use App\Models\Host;
use App\Models\User; use App\Models\User;
use App\Models\User\Host;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
class HostCost implements ShouldQueue class HostCost implements ShouldQueue
{ {

View File

@ -3,15 +3,14 @@
namespace App\Jobs; namespace App\Jobs;
use App\Helpers\Lock; use App\Helpers\Lock;
use App\Models\Host;
use App\Models\User; use App\Models\User;
use App\Models\User\Host;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Cache;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache;
class UserSave implements ShouldQueue class UserSave implements ShouldQueue
{ {

81
app/Models/Host.php Normal file
View File

@ -0,0 +1,81 @@
<?php
namespace App\Models;
use App\Exceptions\CommonException;
use App\Models\Module\Module;
use App\Models\WorkOrder\WorkOrder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Host extends Model
{
use HasFactory, SoftDeletes;
protected $table = 'hosts';
protected $fillable = [
'name',
'module_id',
'user_id',
'price',
'configuration',
'status',
'managed_price',
];
protected $casts = [
'configuration' => 'array'
];
// user
public function user() {
return $this->belongsTo(User::class);
}
// module
public function module() {
return $this->belongsTo(Module::class);
}
// workOrders
public function workOrders() {
return $this->hasMany(WorkOrder::class);
}
// module 远程一对一
// public function module() {
// return $this->hasOneThrough(Module::class, ProviderModule::class);
// }
// scope
public function scopeActive($query) {
return $query->where('status', 'running')->where('price', '!=', 0);
}
// on create
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');
}
// $model->load('module');
// $model->module->load(['provider', 'module']);
// add to queue
});
}
}

View File

@ -2,12 +2,11 @@
namespace App\Models\WorkOrder; namespace App\Models\WorkOrder;
use App\Models\User\Host;
use Illuminate\Support\Arr;
use App\Models\Module\Module;
use App\Exceptions\CommonException; use App\Exceptions\CommonException;
use Illuminate\Database\Eloquent\Model; use App\Models\Host;
use App\Models\Module\Module;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class WorkOrder extends Model class WorkOrder extends Model
{ {

View File

@ -1,9 +1,6 @@
<?php <?php
use App\Models\Module\Module;
use App\Models\Module\ProviderModule; use App\Models\Module\ProviderModule;
use App\Models\User;
use App\Models\User\Host;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;

View File

@ -1,11 +1,9 @@
<?php <?php
use App\Models\User;
use App\Models\User\Host;
use App\Models\Module\ProviderModule; use App\Models\Module\ProviderModule;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration return new class extends Migration
{ {

View File

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