Merge branch 'cedar2025:dev' into dev

This commit is contained in:
大大白 2024-12-01 21:04:35 -05:00 committed by GitHub
commit 1d9cb2295c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 29 deletions

View File

@ -2,6 +2,7 @@
namespace App\Jobs;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
@ -17,7 +18,7 @@ class BatchTrafficFetchJob implements ShouldQueue
protected $protocol;
protected $timestamp;
public $tries = 1;
public $timeout = 10;
public $timeout = 20;
/**
* Create a new job instance.
@ -36,34 +37,16 @@ class BatchTrafficFetchJob implements ShouldQueue
public function handle(): void
{
// 获取子节点
$targetServer = $this->childServer ?? $this->server;
foreach ($this->data as $uid => $v) {
$u = $v[0];
$d = $v[1];
$result = \DB::transaction(function () use ($uid, $u, $d, $targetServer) {
$user = \DB::table('v2_user')->lockForUpdate()->where('id', $uid)->first();
if (!$user) {
return true;
}
$newTime = time();
$newU = $user->u + ($u * $targetServer['rate']);
$newD = $user->d + ($d * $targetServer['rate']);
$rows = \DB::table('v2_user')
->where('id', $uid)
->update([
't' => $newTime,
'u' => $newU,
'd' => $newD,
]);
if ($rows === 0) {
return false;
}
return true;
}, 3);
if (!$result) {
TrafficFetchJob::dispatch($u, $d, $uid, $targetServer, $this->protocol);
}
User::where('id', $uid)
->incrementEach(
[
'u' => $v[0] * $targetServer['rate'],
'd' => $v[1] * $targetServer['rate'],
],
['t' => time()]
);
}
}
}

View File

@ -196,7 +196,7 @@ class ServerService
// 获取可用的用户列表
public static function getAvailableUsers($groupId): Collection
{
return \DB::table('v2_user')
return User::toBase()
->whereIn('group_id', $groupId)
->whereRaw('u + d < transfer_enable')
->where(function ($query) {

View File

@ -12,6 +12,7 @@
"license": "MIT",
"require": {
"php": "^8.1",
"cedar2025/http-foundation": "6.4.x-dev",
"cweagans/composer-patches": "^1.7",
"doctrine/dbal": "^3.7",
"firebase/php-jwt": "^6.3",
@ -20,7 +21,7 @@
"guzzlehttp/guzzle": "^7.4.3",
"hhxsv5/laravel-s": "~3.7.0",
"joanhey/adapterman": "^0.6.1",
"laravel/framework": "^10.0",
"laravel/framework": "10.48.22",
"laravel/horizon": "^5.9.6",
"laravel/tinker": "^2.5",
"linfo/linfo": "^4.0",