From 90b357591eeef9670b19c0e7294ad4a35b67e07f Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Mon, 15 Aug 2022 21:20:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E8=AE=A1=E8=B4=B9?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/Host/HostController.php | 4 ++-- .../Remote/Host/DropController.php | 21 +++++++++++++++++++ .../Remote/User/DropController.php | 20 ------------------ app/Jobs/HostCost.php | 16 ++++++++++---- app/Jobs/UserSave.php | 3 ++- app/Models/User/Host.php | 15 +++++++------ routes/api/remote.php | 2 +- 7 files changed, 45 insertions(+), 36 deletions(-) create mode 100644 app/Http/Controllers/Remote/Host/DropController.php delete mode 100644 app/Http/Controllers/Remote/User/DropController.php diff --git a/app/Http/Controllers/Admin/Host/HostController.php b/app/Http/Controllers/Admin/Host/HostController.php index 84a4639..db33142 100644 --- a/app/Http/Controllers/Admin/Host/HostController.php +++ b/app/Http/Controllers/Admin/Host/HostController.php @@ -37,7 +37,7 @@ public function store(Request $request, Host $host) { $request->validate([ 'name' => 'required|max:255', - 'provider_module_id' => 'required|integer|exists:provider_modules,id', + 'module_id' => 'required|string|exists:modules,id', 'price' => 'required|numeric', ]); @@ -53,7 +53,7 @@ public function store(Request $request, Host $host) $data = [ 'name' => $request->name, - 'provider_module_id' => $request->provider_module_id, + 'module_id' => $request->module_id, 'user_id' => $user_id, 'price' => $request->price, 'configuration' => $request->configuration ?? [], diff --git a/app/Http/Controllers/Remote/Host/DropController.php b/app/Http/Controllers/Remote/Host/DropController.php new file mode 100644 index 0000000..5ba8d53 --- /dev/null +++ b/app/Http/Controllers/Remote/Host/DropController.php @@ -0,0 +1,21 @@ +validate([ + 'managed_price' => 'sometimes|numeric|max:1000|nullable', + ]); + + $host->managed_price = $request->managed_price; + $host->save(); + + return $this->updated($host); + } +} diff --git a/app/Http/Controllers/Remote/User/DropController.php b/app/Http/Controllers/Remote/User/DropController.php deleted file mode 100644 index 74531da..0000000 --- a/app/Http/Controllers/Remote/User/DropController.php +++ /dev/null @@ -1,20 +0,0 @@ -validate([ - 'amount' => 'required|numeric|max:1000', - ]); - - - - return $this->success(); - } -} diff --git a/app/Jobs/HostCost.php b/app/Jobs/HostCost.php index eee09dc..cb593cd 100644 --- a/app/Jobs/HostCost.php +++ b/app/Jobs/HostCost.php @@ -12,6 +12,7 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Log; class HostCost implements ShouldQueue { @@ -27,7 +28,6 @@ class HostCost implements ShouldQueue public function __construct() { // - $this->cache = Cache::tags(['users']); } /** @@ -37,6 +37,8 @@ public function __construct() */ public function handle() { + $this->cache = Cache::tags(['users']); + // chunk hosts and load user Host::active()->with('user')->chunk(100, function ($hosts) { foreach ($hosts as $host) { @@ -48,17 +50,23 @@ public function handle() if ($this->cache->has($this->cache_key)) { // if user is not instances of Model $user = $this->cache->get($this->cache_key); - if (!($user instanceof User)) { - $this->user = $this->cache->put($this->cache_key, $host->user, now()->addDay()); - } else { + + if ($user instanceof User) { $this->user = $user; + } else { + $this->user = $this->cache->put($this->cache_key, $host->user, now()->addDay()); } + } else { + $this->user = $this->cache->put($this->cache_key, $host->user, now()->addDay()); } + // Log::debug($user); + if ($host->managed_price) { $host->price = $host->managed_price; } + $this->user->drops -= $host->price; // update cache diff --git a/app/Jobs/UserSave.php b/app/Jobs/UserSave.php index 5aa8a15..0442f2a 100644 --- a/app/Jobs/UserSave.php +++ b/app/Jobs/UserSave.php @@ -26,7 +26,6 @@ class UserSave implements ShouldQueue public function __construct() { // - $this->cache = Cache::tags(['users']); } /** @@ -37,6 +36,8 @@ public function __construct() public function handle() { // + $this->cache = Cache::tags(['users']); + Host::active()->chunk(100, function ($hosts) { foreach ($hosts as $host) { $this->cache_key = 'user_' . $host->user_id; diff --git a/app/Models/User/Host.php b/app/Models/User/Host.php index e53687c..d823194 100644 --- a/app/Models/User/Host.php +++ b/app/Models/User/Host.php @@ -4,7 +4,6 @@ use App\Models\User; use App\Models\Module\Module; -// use App\Models\Module\ProviderModule; use Illuminate\Support\Facades\Cache; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; @@ -18,7 +17,7 @@ class Host extends Model protected $fillable = [ 'name', - 'provider_module_id', + 'module_id', 'user_id', 'price', 'configuration', @@ -36,10 +35,10 @@ public function user() { return $this->belongsTo(User::class); } - // // provider module - // public function provider_module() { - // return $this->belongsTo(ProviderModule::class); - // } + // module + public function module() { + return $this->belongsTo(Module::class); + } // workorders public function workorders() { @@ -63,8 +62,8 @@ protected static function boot() parent::boot(); static::creating(function ($model) { - $model->load(['provider_module']); - $model->provider_module->load(['provider', 'module']); + // $model->load('module'); + // $model->module->load(['provider', 'module']); // add to queue diff --git a/routes/api/remote.php b/routes/api/remote.php index 6a466eb..e2bcff4 100644 --- a/routes/api/remote.php +++ b/routes/api/remote.php @@ -6,7 +6,7 @@ Route::name('remote.')->middleware(['api'])->group(function () { Route::apiResource('modules', Remote\ModuleController::class)->only(['index']); Route::apiResource('servers', Remote\ServerController::class); - Route::delete('users/{user}/drops', [Remote\User\DropController::class, 'destroy']); + Route::patch('hosts/{host}/drops', [Remote\Host\DropController::class, 'update']); Route::apiResource('users.tasks', Remote\User\TaskController::class); // Route::apiResource('users', Controllers\User\UserController::class); });