改进 计费周期
This commit is contained in:
parent
3872b5a9bb
commit
04c2a75883
@ -61,7 +61,7 @@ public function destroy(HostRequest $request, Host $host): JsonResponse
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果时间大于 5 分钟,不满 1 小时
|
// 如果时间大于 5 分钟,不满 1 小时
|
||||||
if (now()->diffInMinutes($host->updated_at) > 5 && now()->diffInMinutes($host->updated_at) < 60) {
|
if (! $host->isCycle() && now()->diffInMinutes($host->updated_at) > 5 && now()->diffInMinutes($host->updated_at) < 60) {
|
||||||
$host->cost();
|
$host->cost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
45
app/Http/Controllers/Web/HostController.php
Normal file
45
app/Http/Controllers/Web/HostController.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Web;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Host;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
|
||||||
|
class HostController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*
|
||||||
|
* @return View
|
||||||
|
*/
|
||||||
|
public function index(): View
|
||||||
|
{
|
||||||
|
$hosts = Host::thisUser()->with(['user', 'module'])->paginate(20);
|
||||||
|
|
||||||
|
return view('hosts.index', compact('hosts'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function renew(Host $host)
|
||||||
|
{
|
||||||
|
if ($host->renew()) {
|
||||||
|
return back()->with('success', '续费成功,新的到期时间为:'.$host->next_due_at);
|
||||||
|
}
|
||||||
|
|
||||||
|
return back()->with('error', '续费失败,请检查是否有足够的余额。');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*
|
||||||
|
* @param Host $host
|
||||||
|
* @return RedirectResponse
|
||||||
|
*/
|
||||||
|
public function destroy(Host $host): RedirectResponse
|
||||||
|
{
|
||||||
|
$host->safeDelete();
|
||||||
|
|
||||||
|
return back()->with('success', '已添加到销毁队列。');
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@ class DispatchHostCostQueueJob implements ShouldQueue
|
|||||||
use InteractsWithQueue, Queueable, SerializesModels;
|
use InteractsWithQueue, Queueable, SerializesModels;
|
||||||
|
|
||||||
protected int $minute;
|
protected int $minute;
|
||||||
|
|
||||||
protected ?Host $host;
|
protected ?Host $host;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,7 +36,7 @@ public function __construct($minute, Host $host = null)
|
|||||||
*/
|
*/
|
||||||
public function handle(): void
|
public function handle(): void
|
||||||
{
|
{
|
||||||
if (!$this->host) {
|
if (! $this->host) {
|
||||||
$host = new Host();
|
$host = new Host();
|
||||||
|
|
||||||
if (app()->environment() != 'local') {
|
if (app()->environment() != 'local') {
|
||||||
|
@ -27,7 +27,6 @@ public function __construct(Module $module = null)
|
|||||||
$this->module = $module;
|
$this->module = $module;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the job.
|
* Execute the job.
|
||||||
*
|
*
|
||||||
@ -35,11 +34,10 @@ public function __construct(Module $module = null)
|
|||||||
*/
|
*/
|
||||||
public function handle(): void
|
public function handle(): void
|
||||||
{
|
{
|
||||||
if (!$this->module) {
|
if (! $this->module) {
|
||||||
(new Module)->whereNotNull('url')->chunk(100, function ($modules) {
|
(new Module)->whereNotNull('url')->chunk(100, function ($modules) {
|
||||||
foreach ($modules as $module) {
|
foreach ($modules as $module) {
|
||||||
dispatch(new self($module));
|
dispatch(new self($module));
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -52,7 +50,7 @@ public function handle(): void
|
|||||||
try {
|
try {
|
||||||
$response = $module->http()->get('remote');
|
$response = $module->http()->get('remote');
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Log::debug('无法连接到模块 - down: ' . $e->getMessage());
|
Log::debug('无法连接到模块 - down: '.$e->getMessage());
|
||||||
|
|
||||||
// 如果模块状态不为 down,则更新为 down
|
// 如果模块状态不为 down,则更新为 down
|
||||||
if ($module->status !== 'down') {
|
if ($module->status !== 'down') {
|
||||||
@ -67,7 +65,7 @@ public function handle(): void
|
|||||||
// 如果模块状态不为 up,则更新为 up
|
// 如果模块状态不为 up,则更新为 up
|
||||||
if ($module->status !== 'up') {
|
if ($module->status !== 'up') {
|
||||||
$module->status = 'up';
|
$module->status = 'up';
|
||||||
Log::debug('模块状态更新为 up: ' . $module->name);
|
Log::debug('模块状态更新为 up: '.$module->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
$json = $response->json();
|
$json = $response->json();
|
||||||
@ -99,16 +97,16 @@ public function handle(): void
|
|||||||
$module->status = 'down';
|
$module->status = 'down';
|
||||||
}
|
}
|
||||||
|
|
||||||
Log::debug('模块状态更新为 ' . $module->status . ': ' . $module->name);
|
Log::debug('模块状态更新为 '.$module->status.': '.$module->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
$module->save();
|
$module->save();
|
||||||
|
|
||||||
// if local
|
// if local
|
||||||
if (config('app.env') === 'local') {
|
if (config('app.env') === 'local') {
|
||||||
Cache::forever('module:' . $module->id . ':servers', $servers);
|
Cache::forever('module:'.$module->id.':servers', $servers);
|
||||||
} else {
|
} else {
|
||||||
Cache::put('module:' . $module->id . ':servers', $servers, now()->addMinutes(10));
|
Cache::put('module:'.$module->id.':servers', $servers, now()->addMinutes(10));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ public function isCycle(): bool
|
|||||||
public function safeDelete(): bool
|
public function safeDelete(): bool
|
||||||
{
|
{
|
||||||
// 如果创建时间大于大于 1 小时
|
// 如果创建时间大于大于 1 小时
|
||||||
if ($this->created_at->diffInHours(now()) > 1) {
|
if (! $this->isCycle() && $this->created_at->diffInHours(now()) > 1) {
|
||||||
// 如果当前时间比扣费时间小,则说明没有扣费。执行扣费。
|
// 如果当前时间比扣费时间小,则说明没有扣费。执行扣费。
|
||||||
if (now()->minute < $this->minute_at) {
|
if (now()->minute < $this->minute_at) {
|
||||||
$this->cost();
|
$this->cost();
|
||||||
|
@ -25,6 +25,6 @@ public function __construct(null|string $cycle = 'dynamic')
|
|||||||
*/
|
*/
|
||||||
public function render(): string
|
public function render(): string
|
||||||
{
|
{
|
||||||
return trans('hosts.' . $this->cycle);
|
return trans('hosts.'.$this->cycle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user