修复 扣费模式
This commit is contained in:
parent
a6c5e7e89a
commit
8885c2e64c
@ -29,7 +29,7 @@ protected function schedule(Schedule $schedule)
|
|||||||
$schedule->command('sanctum:prune-expired --hours=24')->daily();
|
$schedule->command('sanctum:prune-expired --hours=24')->daily();
|
||||||
|
|
||||||
// 扣费
|
// 扣费
|
||||||
$schedule->job(new HostCost(now()->hour))->hourly()->withoutOverlapping()->onOneServer();
|
$schedule->job(new HostCost(now()->minute))->everyMinute()->withoutOverlapping()->onOneServer();
|
||||||
|
|
||||||
// 获取模块暴露的信息(服务器等)
|
// 获取模块暴露的信息(服务器等)
|
||||||
$schedule->job(new FetchModule())->withoutOverlapping()->everyMinute();
|
$schedule->job(new FetchModule())->withoutOverlapping()->everyMinute();
|
||||||
|
@ -13,17 +13,17 @@ class HostCost implements ShouldQueue
|
|||||||
{
|
{
|
||||||
use InteractsWithQueue, Queueable, SerializesModels, Lock;
|
use InteractsWithQueue, Queueable, SerializesModels, Lock;
|
||||||
|
|
||||||
public $hour, $cache, $user;
|
public $minute, $cache, $user;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new job instance.
|
* Create a new job instance.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($hour)
|
public function __construct($minute)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
$this->hour = $hour;
|
$this->minute = $minute;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,7 +34,7 @@ public function __construct($hour)
|
|||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
// chunk hosts and load user
|
// chunk hosts and load user
|
||||||
Host::where('hour_at', $this->hour)->whereIn('status', ['running', 'stopped'])->with('user')->chunk(1000, function ($hosts) {
|
Host::where('minute_at', $this->minute)->whereIn('status', ['running', 'stopped'])->with('user')->chunk(500, function ($hosts) {
|
||||||
foreach ($hosts as $host) {
|
foreach ($hosts as $host) {
|
||||||
$host->cost();
|
$host->cost();
|
||||||
}
|
}
|
||||||
|
@ -201,8 +201,11 @@ public function safeDelete(): bool
|
|||||||
{
|
{
|
||||||
// 如果创建时间大于大于 1 小时
|
// 如果创建时间大于大于 1 小时
|
||||||
if ($this->created_at->diffInHours(now()) > 1) {
|
if ($this->created_at->diffInHours(now()) > 1) {
|
||||||
|
// 如果当前时间比扣费时间小,则说明没有扣费。执行扣费。
|
||||||
|
if (now()->minute < $this->minute_at) {
|
||||||
$this->cost();
|
$this->cost();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dispatch(new \App\Jobs\Module\Host($this, 'delete'));
|
dispatch(new \App\Jobs\Module\Host($this, 'delete'));
|
||||||
return true;
|
return true;
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('hosts', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
|
||||||
|
$table->tinyInteger('minute_at')->index()->nullable()->after('hour_at');
|
||||||
|
});
|
||||||
|
|
||||||
|
echo PHP_EOL . '将开始刷新主机的分钟数...';
|
||||||
|
Host::chunk(100, function ($hosts) {
|
||||||
|
foreach ($hosts as $host) {
|
||||||
|
echo '刷新: ' . $host->id . PHP_EOL;
|
||||||
|
$host->minute_at = $host->created_at->minute;
|
||||||
|
$host->save();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
echo ' 完成!' . PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('hosts', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user