<?php /** * Created by IntelliJ IDEA. * User: kelyliang * Date: 2024/8/13 * Time: 上午 10:36 */ namespace App\Services\User; use App\Models\Department; use App\Models\User; use Illuminate\Support\Facades\Auth; use function Nette\Utils\isEmpty; class UserService { public function getUserList(array $whitelistDepartment = [],array $whitelistUser =[]){ $departmentsCount = Department::where("company_id", Auth::user()->company_id)->whereIn('id', $whitelistDepartment)->count(); if ($departmentsCount != count($whitelistDepartment)) { throw_validation_if("The selected department is invalid."); } $departmentUserIds =[]; if(!empty($whitelistDepartment)){ $departmentUserIds=User::query()->whereIn('department_id',$whitelistDepartment)->pluck('id')->toArray(); } $users= User::where("company_id", Auth::user()->company_id)->whereIn('id', $whitelistUser); $userIds=[]; if ($users->count()!= count($whitelistUser)) { throw_validation_if("The selected user is invalid."); } $userIds=$users->pluck('id')->toArray(); // 合并两个数组并去重 $allUserIds = array_merge($departmentUserIds, $userIds); $uniqueUserIds = array_unique($allUserIds); return $uniqueUserIds; } public function decomposeWhitelist(array $whitelist =[]){ $departmentIds=[]; if(!empty($whitelist)){ $departmentIds=User::query()->whereIn('id',$whitelist)->pluck('department_id')->unique()->toArray(); } return [ 'departmentIds' => $departmentIds, 'userIds' => $whitelist, ]; } public static function clearCache(): void { $user = Auth::user(); $cacheKey = '4s_token_' . $user->username; cache()->forget($cacheKey); } }