diff --git a/app/Http/Controllers/V2/Admin/UserController.php b/app/Http/Controllers/V2/Admin/UserController.php index b135270..48e7fb8 100644 --- a/app/Http/Controllers/V2/Admin/UserController.php +++ b/app/Http/Controllers/V2/Admin/UserController.php @@ -11,6 +11,7 @@ use App\Models\Plan; use App\Models\User; use App\Services\AuthService; use App\Services\NodeSyncService; +use App\Services\Plugin\HookManager; use App\Services\UserService; use App\Traits\QueryOperators; use App\Utils\Helper; @@ -33,7 +34,16 @@ class UserController extends Controller return $this->fail([400202, '用户不存在']); $user->token = Helper::guid(); $user->uuid = Helper::guid(true); - return $this->success($user->save()); + $result = $user->save(); + + if ($result) { + HookManager::call('admin.user.secret.reset', [ + 'user' => $user, + 'request' => $request, + ]); + } + + return $this->success($result); } // Apply filters and sorts to the query builder. @@ -178,6 +188,8 @@ class UserController extends Controller ->select((new User())->getTable() . '.*') ->selectRaw('(u + d) as total_used'); + $userModel = HookManager::filter('admin.user.fetch.query', $userModel, $request); + $this->applyFiltersAndSorts($request, $userModel); $users = $userModel->orderBy('id', 'desc') @@ -193,11 +205,12 @@ class UserController extends Controller // Transform user fields for API response. public static function transformUserData(User $user): array { + $model = $user; $user = $user->toArray(); $user['balance'] = $user['balance'] / 100; $user['commission_balance'] = $user['commission_balance'] / 100; $user['subscribe_url'] = Helper::getSubscribeUrl($user['token']); - return $user; + return HookManager::filter('admin.user.transform', $user, $model); } public function getUserInfoById(Request $request) @@ -208,6 +221,7 @@ class UserController extends Controller 'id.required' => '用户ID不能为空' ]); $user = User::find($request->input('id'))->load('invite_user'); + $user = HookManager::filter('admin.user.detail', $user, $request); return $this->success($user); } @@ -257,12 +271,27 @@ class UserController extends Controller $params['commission_balance'] = $params['commission_balance'] * 100; } + $params = HookManager::filter('admin.user.update.params', $params, $request, $user); + + HookManager::call('admin.user.update.before', [ + 'user' => $user, + 'params' => $params, + 'request' => $request, + ]); + try { $user->update($params); } catch (\Exception $e) { Log::error($e); return $this->fail([500, '保存失败']); } + + HookManager::call('admin.user.update.after', [ + 'user' => $user->refresh(), + 'params' => $params, + 'request' => $request, + ]); + return $this->success(true); } @@ -664,6 +693,11 @@ class UserController extends Controller 'id.exists' => '用户不存在' ]); $user = User::find($request->input('id')); + HookManager::call('admin.user.destroy.before', [ + 'user' => $user, + 'request' => $request, + ]); + try { DB::beginTransaction(); $user->orders()->delete(); @@ -672,6 +706,12 @@ class UserController extends Controller $user->tickets()->delete(); $user->delete(); DB::commit(); + + HookManager::call('admin.user.destroy.after', [ + 'user' => $user, + 'request' => $request, + ]); + return $this->success(true); } catch (\Exception $e) { DB::rollBack(); diff --git a/app/Http/Requests/Admin/UserUpdate.php b/app/Http/Requests/Admin/UserUpdate.php index afbf922..c692d95 100644 --- a/app/Http/Requests/Admin/UserUpdate.php +++ b/app/Http/Requests/Admin/UserUpdate.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Admin; +use App\Services\Plugin\HookManager; use Illuminate\Foundation\Http\FormRequest; class UserUpdate extends FormRequest @@ -13,7 +14,7 @@ class UserUpdate extends FormRequest */ public function rules() { - return [ + $rules = [ 'id' => 'required|integer', 'email' => 'email:strict', 'password' => 'nullable|min:8', @@ -34,11 +35,13 @@ class UserUpdate extends FormRequest 'speed_limit' => 'nullable|integer', 'device_limit' => 'nullable|integer' ]; + + return HookManager::filter('admin.user.update.rules', $rules, $this); } public function messages() { - return [ + $messages = [ 'email.required' => '邮箱不能为空', 'email.email' => '邮箱格式不正确', 'transfer_enable.numeric' => '流量格式不正确', @@ -65,5 +68,7 @@ class UserUpdate extends FormRequest 'speed_limit.integer' => '限速格式不正确', 'device_limit.integer' => '设备数量格式不正确' ]; + + return HookManager::filter('admin.user.update.messages', $messages, $this); } }