UserService.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * Created by IntelliJ IDEA.
  4. * User: kelyliang
  5. * Date: 2024/8/13
  6. * Time: 上午 10:36
  7. */
  8. namespace App\Services\User;
  9. use App\Models\Department;
  10. use App\Models\User;
  11. use Illuminate\Support\Facades\Auth;
  12. use function Nette\Utils\isEmpty;
  13. class UserService
  14. {
  15. public function getUserList(array $whitelistDepartment = [],array $whitelistUser =[]){
  16. $departmentsCount = Department::where("company_id", Auth::user()->company_id)->whereIn('id', $whitelistDepartment)->count();
  17. if ($departmentsCount != count($whitelistDepartment)) {
  18. throw_validation_if("The selected department is invalid.");
  19. }
  20. $departmentUserIds =[];
  21. if(!empty($whitelistDepartment)){
  22. $departmentUserIds=User::query()->whereIn('department_id',$whitelistDepartment)->pluck('id')->toArray();
  23. }
  24. $users= User::where("company_id", Auth::user()->company_id)->whereIn('id', $whitelistUser);
  25. $userIds=[];
  26. if ($users->count()!= count($whitelistUser)) {
  27. throw_validation_if("The selected user is invalid.");
  28. }
  29. $userIds=$users->pluck('id')->toArray();
  30. // 合并两个数组并去重
  31. $allUserIds = array_merge($departmentUserIds, $userIds);
  32. $uniqueUserIds = array_unique($allUserIds);
  33. return $uniqueUserIds;
  34. }
  35. public function decomposeWhitelist(array $whitelist =[]){
  36. $departmentIds=[];
  37. if(!empty($whitelist)){
  38. $departmentIds=User::query()->whereIn('id',$whitelist)->pluck('department_id')->unique()->toArray();
  39. }
  40. return [
  41. 'departmentIds' => $departmentIds,
  42. 'userIds' => $whitelist,
  43. ];
  44. }
  45. public static function clearCache(): void
  46. {
  47. $user = Auth::user();
  48. $cacheKey = '4s_token_' . $user->username;
  49. cache()->forget($cacheKey);
  50. }
  51. }