diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 99b6eb4a..f3c42a1a 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -245,7 +245,7 @@ class UserController extends Controller (new UserService($user))->updateCredit(-$renewCost); // 记录余额操作日志 - Helpers::addUserCreditLog($user->id, '', $user->credit, $user->credit - $renewCost, -1 * $renewCost, '用户自行重置流量'); + Helpers::addUserCreditLog($user->id, 0, $user->credit, $user->credit - $renewCost, -1 * $renewCost, '用户自行重置流量'); return Response::json(['status' => 'success', 'message' => '重置成功']); } diff --git a/app/Jobs/VNet/editUser.php b/app/Jobs/VNet/editUser.php index ae689227..a50f31ad 100644 --- a/app/Jobs/VNet/editUser.php +++ b/app/Jobs/VNet/editUser.php @@ -38,10 +38,33 @@ class editUser implements ShouldQueue public function handle(): void { foreach ($this->nodes as $node) { - $this->send(($node->server ?: $node->ip).':'.$node->push_port, $node->auth->secret); + $host = ($node->server ?: $node->ip).':'.$node->push_port; + $secret = $node->auth->secret; + + // 如果用户已存在节点内,则执行修改;否者为添加 + $list = $this->list($host, $secret); + if ($list && in_array($this->data['uid'], $list)) { + $this->send($host, $secret); + } else { + addUser::dispatchNow($this->data['uid'], $node); + } } } + private function list($host, $secret) + { + $request = Http::baseUrl($host)->timeout(15)->withHeaders(['secret' => $secret]); + + $response = $request->get('api/user/list'); + $message = $response->json(); + if ($message && $response->ok()) { + return Arr::pluck($message, 'uid'); + } + + Log::warning('【用户列表】获取失败(推送地址:'.$host.')'); + return false; + } + private function send($host, $secret): void { $request = Http::baseUrl($host)->timeout(15)->withHeaders(['secret' => $secret]);