优化代码

This commit is contained in:
iVampireSP.com 2022-11-19 14:04:42 +08:00
parent f107118db9
commit 1abe651bc9
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
7 changed files with 86 additions and 266 deletions

View File

@ -6,7 +6,6 @@
use App\Models\Host; use App\Models\Host;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\View\View; use Illuminate\View\View;
class HostController extends Controller class HostController extends Controller
@ -14,9 +13,11 @@ class HostController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return Response * @param Host $host
*
* @return View
*/ */
public function index(Host $host) public function index(Host $host): View
{ {
$host->load('user'); $host->load('user');
$hosts = $host->paginate(100); $hosts = $host->paginate(100);
@ -24,46 +25,12 @@ public function index(Host $host)
return view('admin.hosts.index', compact('hosts')); return view('admin.hosts.index', compact('hosts'));
} }
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Host $host
*
* @return Response
*/
public function show(Host $host)
{
//
}
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param \App\Models\Host $host * @param Host $host
* *
* @return Response * @return View
*/ */
public function edit(Host $host): View public function edit(Host $host): View
{ {
@ -75,8 +42,8 @@ public function edit(Host $host): View
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @param \App\Models\Host $host * @param Host $host
* *
* @return RedirectResponse * @return RedirectResponse
*/ */
@ -99,7 +66,7 @@ public function update(Request $request, Host $host): RedirectResponse
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Models\Host $host * @param Host $host
* *
* @return RedirectResponse * @return RedirectResponse
*/ */

View File

@ -15,9 +15,11 @@ class ModuleController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return Response * @param Module $module
*
* @return View
*/ */
public function index(Module $module) public function index(Module $module): View
{ {
$modules = $module->paginate(100); $modules = $module->paginate(100);
@ -39,11 +41,11 @@ public function create(): View
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* *
* @return Response * @return RedirectResponse
*/ */
public function store(Request $request) public function store(Request $request): RedirectResponse
{ {
// //
@ -64,10 +66,19 @@ public function store(Request $request)
} }
private function rules(): array
{
return [
'id' => 'required|string|max:255',
'name' => 'required|string|max:255',
'url' => 'required|url',
];
}
/** /**
* Display the specified resource. * Display the specified resource.
* *
* @param \App\Models\Module $module * @param Module $module
* *
* @return View * @return View
*/ */
@ -81,7 +92,7 @@ public function show(Module $module): View
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param \App\Models\Module $module * @param Module $module
* *
* @return Response * @return Response
*/ */
@ -95,8 +106,8 @@ public function edit(Module $module): View
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @param \App\Models\Module $module * @param Module $module
* *
* @return Response * @return Response
*/ */
@ -131,11 +142,11 @@ public function update(Request $request, Module $module): RedirectResponse
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Models\Module $module * @param Module $module
* *
* @return Response * @return RedirectResponse
*/ */
public function destroy(Module $module) public function destroy(Module $module): RedirectResponse
{ {
// //
@ -143,13 +154,4 @@ public function destroy(Module $module)
return redirect()->route('admin.modules.index')->with('success', '模块已删除。'); return redirect()->route('admin.modules.index')->with('success', '模块已删除。');
} }
private function rules(): array
{
return [
'id' => 'required|string|max:255',
'name' => 'required|string|max:255',
'url' => 'required|url',
];
}
} }

View File

@ -1,91 +0,0 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\WorkOrder\Reply;
use Illuminate\Http\Request;
class ReplyController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* 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 \App\Models\WorkOrder\Reply $reply
*
* @return \Illuminate\Http\Response
*/
public function show(Reply $reply)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\WorkOrder\Reply $reply
*
* @return \Illuminate\Http\Response
*/
public function edit(Reply $reply)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\WorkOrder\Reply $reply
*
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Reply $reply)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\WorkOrder\Reply $reply
*
* @return \Illuminate\Http\Response
*/
public function destroy(Reply $reply)
{
//
}
}

View File

@ -11,7 +11,6 @@
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\View\View; use Illuminate\View\View;
@ -20,9 +19,9 @@ class UserController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return Response * @return View
*/ */
public function index() public function index(): View
{ {
// //
@ -31,28 +30,6 @@ public function index()
return view('admin.users.index', compact('users')); return view('admin.users.index', compact('users'));
} }
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return Response
*/
public function store(Request $request)
{
//
}
/** /**
* Display the specified resource. * Display the specified resource.
* *
@ -93,10 +70,10 @@ public function edit(User $user)
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @param User $user * @param User $user
* *
* @return \Illuminate\Http\RedirectResponse|Response * @return RedirectResponse
*/ */
public function update(Request $request, User $user) public function update(Request $request, User $user)
{ {
@ -150,17 +127,4 @@ public function update(Request $request, User $user)
return back()->with('success', '已完成所有更改。'); return back()->with('success', '已完成所有更改。');
} }
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return Response
*/
public
function destroy($id)
{
//
}
} }

View File

@ -2,12 +2,12 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Exceptions\CommonException;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\WorkOrder\Reply; use App\Models\WorkOrder\Reply;
use App\Models\WorkOrder\WorkOrder; use App\Models\WorkOrder\WorkOrder;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\View\View; use Illuminate\View\View;
class WorkOrderController extends Controller class WorkOrderController extends Controller
@ -23,34 +23,12 @@ public function index(WorkOrder $workOrder): View
return view('admin.work-orders.index', compact('workOrders')); return view('admin.work-orders.index', compact('workOrders'));
} }
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return Response
*/
public function store(Request $request)
{
//
}
/** /**
* Display the specified resource. * Display the specified resource.
* *
* @param \App\Models\WorkOrder\WorkOrder $workOrder * @param WorkOrder $workOrder
* *
* @return Response * @return View
*/ */
public function show(WorkOrder $workOrder): View public function show(WorkOrder $workOrder): View
{ {
@ -67,7 +45,7 @@ public function show(WorkOrder $workOrder): View
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param \App\Models\WorkOrder\WorkOrder $workOrder * @param WorkOrder $workOrder
* *
* @return View * @return View
*/ */
@ -81,8 +59,8 @@ public function edit(WorkOrder $workOrder): View
/** /**
* 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 $workOrder * @param WorkOrder $workOrder
* *
* @return RedirectResponse * @return RedirectResponse
*/ */
@ -102,14 +80,18 @@ public function update(Request $request, WorkOrder $workOrder): RedirectResponse
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Models\WorkOrder\WorkOrder $workOrder * @param WorkOrder $workOrder
* *
* @return Response * @return RedirectResponse
*/ */
public function destroy(WorkOrder $workOrder): RedirectResponse public function destroy(WorkOrder $workOrder): RedirectResponse
{ {
// //
try {
$workOrder->safeDelete(); $workOrder->safeDelete();
} catch (CommonException $e) {
return back()->with('error', $e->getMessage());
}
return redirect()->route('admin.work-orders.index')->with('success', '正在排队删除工单。'); return redirect()->route('admin.work-orders.index')->with('success', '正在排队删除工单。');
} }

View File

@ -11,7 +11,6 @@
use Illuminate\Database\Eloquent\Relations\BelongsTo as BelongsToAlias; use Illuminate\Database\Eloquent\Relations\BelongsTo as BelongsToAlias;
use Illuminate\Database\Eloquent\Relations\HasMany as HasManyAlias; use Illuminate\Database\Eloquent\Relations\HasMany as HasManyAlias;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
// use Illuminate\Database\Eloquent\SoftDeletes; // use Illuminate\Database\Eloquent\SoftDeletes;
@ -220,41 +219,6 @@ public function cost($price = null, $auto = true): bool
return true; return true;
} }
public function costBalance($amount = 1): bool
{
$transaction = new Transaction();
$month = now()->month;
$month_cache_key = 'user_' . $this->user_id . '_month_' . $month . '_hosts_balances';
$hosts_drops = Cache::get($month_cache_key, []);
// 统计 Host 消耗的 Drops
if (isset($hosts_drops[$this->id])) {
$hosts_drops[$this->id] += $amount;
} else {
$hosts_drops[$this->id] = $amount;
}
Cache::put($month_cache_key, $hosts_drops, 604800);
$left = $transaction->reduceHostAmount($this->user_id, $this->id, $this->module_id, $amount);
$this->addLog('balance', $amount);
broadcast(new UserEvent($this->user_id, 'balances.amount.reduced', $this->user));
if ($left < 0) {
$this->update([
'status' => 'suspended',
]);
}
return true;
}
public function addLog($type = 'drops', float $amount = 0) public function addLog($type = 'drops', float $amount = 0)
{ {
if ($amount == 0) { if ($amount == 0) {
@ -331,4 +295,38 @@ public function addLog($type = 'drops', float $amount = 0)
return true; return true;
} }
public function costBalance($amount = 1): bool
{
$transaction = new Transaction();
$month = now()->month;
$month_cache_key = 'user_' . $this->user_id . '_month_' . $month . '_hosts_balances';
$hosts_drops = Cache::get($month_cache_key, []);
// 统计 Host 消耗的 Drops
if (isset($hosts_drops[$this->id])) {
$hosts_drops[$this->id] += $amount;
} else {
$hosts_drops[$this->id] = $amount;
}
Cache::put($month_cache_key, $hosts_drops, 604800);
$left = $transaction->reduceHostAmount($this->user_id, $this->id, $this->module_id, $amount);
$this->addLog('balance', $amount);
broadcast(new UserEvent($this->user_id, 'balances.amount.reduced', $this->user));
if ($left < 0) {
$this->update([
'status' => 'suspended',
]);
}
return true;
}
} }

View File

@ -3,7 +3,6 @@
use App\Http\Controllers\Admin\AuthController; use App\Http\Controllers\Admin\AuthController;
use App\Http\Controllers\Admin\HostController; use App\Http\Controllers\Admin\HostController;
use App\Http\Controllers\Admin\ModuleController; use App\Http\Controllers\Admin\ModuleController;
use App\Http\Controllers\Admin\ReplyController;
use App\Http\Controllers\Admin\UserController; use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\Admin\WorkOrderController; use App\Http\Controllers\Admin\WorkOrderController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
@ -23,9 +22,8 @@
], function () { ], function () {
Route::resource('users', UserController::class)->only(['index', 'show', 'edit', 'update']); Route::resource('users', UserController::class)->only(['index', 'show', 'edit', 'update']);
Route::resource('modules', ModuleController::class); Route::resource('modules', ModuleController::class);
Route::resource('hosts', HostController::class); Route::resource('hosts', HostController::class)->only(['index', 'edit', 'update', 'destroy']);
Route::resource('work-orders', WorkOrderController::class); Route::resource('work-orders', WorkOrderController::class)->only(['index', 'show', 'edit', 'update', 'destroy']);
Route::resource('work-orders.replies', ReplyController::class);
Route::view('commands', 'admin.commands')->name('commands'); Route::view('commands', 'admin.commands')->name('commands');
}); });