diff --git a/app/Console/Commands/UpdateUserSpeedLimit.php b/app/Console/Commands/UpdateUserSpeedLimit.php
new file mode 100644
index 00000000..561a7dd2
--- /dev/null
+++ b/app/Console/Commands/UpdateUserSpeedLimit.php
@@ -0,0 +1,27 @@
+whereIsExpire(0)->where('goods_id', '>', '0')->oldest()->with(['user', 'goods'])->has('goods')->has('user')->get() as $order) {
+ $order->user->update(['speed_limit' => $order->goods->speed_limit]);
+ }
+
+ $jobEndTime = microtime(true);
+ $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
+
+ Log::info('---【'.$this->description.'】完成---,耗时'.$jobUsedTime.'秒');
+ }
+}
diff --git a/app/Http/Controllers/Api/WebApi/TrojanController.php b/app/Http/Controllers/Api/WebApi/TrojanController.php
index 9f4943bf..cbd5e3a5 100644
--- a/app/Http/Controllers/Api/WebApi/TrojanController.php
+++ b/app/Http/Controllers/Api/WebApi/TrojanController.php
@@ -27,16 +27,10 @@ class TrojanController extends BaseController
public function getUserList(Node $node): JsonResponse
{
foreach ($node->users() as $user) {
- $order = $user->orders()->activePlan()->first(); // 取出用户正在使用的套餐
- if ($order) {
- $speed_limit = $order->goods->getRawOriginal('speed_limit');
- } else {
- $speed_limit = $user->getRawOriginal('speed_limit');
- }
$data[] = [
'uid' => $user->id,
'password' => $user->passwd,
- 'speed_limit' => $speed_limit,
+ 'speed_limit' => $user->getRawOriginal('speed_limit'),
];
}
diff --git a/app/Http/Controllers/Api/WebApi/V2RayController.php b/app/Http/Controllers/Api/WebApi/V2RayController.php
index 7f33ce90..924fedee 100644
--- a/app/Http/Controllers/Api/WebApi/V2RayController.php
+++ b/app/Http/Controllers/Api/WebApi/V2RayController.php
@@ -44,16 +44,10 @@ class V2RayController extends BaseController
public function getUserList(Node $node): JsonResponse
{
foreach ($node->users() as $user) {
- $order = $user->orders()->activePlan()->first(); // 取出用户正在使用的套餐
- if ($order) {
- $speed_limit = $order->goods->getRawOriginal('speed_limit');
- } else {
- $speed_limit = $user->getRawOriginal('speed_limit');
- }
$data[] = [
'uid' => $user->id,
'vmess_uid' => $user->vmess_id,
- 'speed_limit' => $speed_limit,
+ 'speed_limit' => $user->getRawOriginal('speed_limit'),
];
}
diff --git a/app/Models/User.php b/app/Models/User.php
index f45d825c..d18a2fcb 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -43,6 +43,11 @@ class User extends Authenticatable implements JWTSubject
return $telegram->identifier ?? null;
}
+ public function userAuths(): HasMany
+ {
+ return $this->hasMany(UserOauth::class);
+ }
+
public function profile()
{
return [
@@ -70,11 +75,6 @@ class User extends Authenticatable implements JWTSubject
];
}
- public function userAuths(): HasMany
- {
- return $this->hasMany(UserOauth::class);
- }
-
public function onlineIpLogs(): HasMany
{
return $this->hasMany(NodeOnlineIp::class);
@@ -264,7 +264,7 @@ class User extends Authenticatable implements JWTSubject
}
public function incrementData(int $data): bool
- {// 添加用户流量
+ { // 添加用户流量
$this->transfer_enable += $data;
return $this->save();
@@ -272,7 +272,6 @@ class User extends Authenticatable implements JWTSubject
public function isNotCompleteOrderByUserId(int $userId): bool
{ // 添加用户余额
-
return Order::uid($userId)->whereIn('status', [0, 1])->exists();
}
@@ -299,7 +298,7 @@ class User extends Authenticatable implements JWTSubject
}
public function isTrafficWarning(): bool
- {// 流量异常警告
+ { // 流量异常警告
return $this->recentTrafficUsed() >= (sysConfig('traffic_ban_value') * GB);
}
diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php
index 32b10064..b1e226b3 100644
--- a/app/Services/OrderService.php
+++ b/app/Services/OrderService.php
@@ -103,9 +103,10 @@ class OrderService
Order::whereId(self::$order->id)->update(['expired_at' => date('Y-m-d H:i:s', strtotime(self::$goods->days.' days'))]);
$oldData = self::$user->transfer_enable;
$updateData = [
- 'invite_num' => self::$user->invite_num + (self::$goods->invite_num ?: 0),
- 'level' => self::$goods->level,
- 'enable' => 1,
+ 'invite_num' => self::$user->invite_num + (self::$goods->invite_num ?: 0),
+ 'level' => self::$goods->level,
+ 'speed_limit' => self::$goods->speed_limit,
+ 'enable' => 1,
];
// 无端口用户 添加端口
diff --git a/resources/lang/en/user.php b/resources/lang/en/user.php
index 2f01c042..e7416f1b 100644
--- a/resources/lang/en/user.php
+++ b/resources/lang/en/user.php
@@ -177,6 +177,10 @@ return [
'active_prepaid_question' => 'Are you sure to active prepaid order?',
'active_prepaid_tips' => 'After active:
Current order will be set to expired!
Expired dates will be recalculated!',
],
+ 'service' => [
+ 'node_count' => 'Include :num Nodes',
+ 'unlimited' => 'Unlimited Speed',
+ ],
'node' => [
'info' => 'Configuration information',
'setting' => 'Proxy settings',
diff --git a/resources/lang/zh_CN/user.php b/resources/lang/zh_CN/user.php
index 9d9a13ec..352a1f53 100644
--- a/resources/lang/zh_CN/user.php
+++ b/resources/lang/zh_CN/user.php
@@ -161,6 +161,10 @@ return [
'conflict_tips' => '
当前购买套餐将自动设置为 预支付套餐
:num条优质线路',
+ 'unlimited' => '不限速',
+ ],
'payment' => [
'error' => '充值余额不合规',
'creating' => '创建支付单中...',
diff --git a/resources/views/user/buy.blade.php b/resources/views/user/buy.blade.php
index 66d76bc1..e4275a4a 100644
--- a/resources/views/user/buy.blade.php
+++ b/resources/views/user/buy.blade.php
@@ -24,7 +24,7 @@
'.$dataPlusDays.' '.trans('validation.attributes.day'):'/'.trans('validation.attributes.month')!!}