Controller.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\SiteAlbumFolder;
  4. use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
  5. use Illuminate\Foundation\Validation\ValidatesRequests;
  6. use Illuminate\Routing\Controller as BaseController;
  7. use Illuminate\Support\Facades\Auth;
  8. class Controller extends BaseController
  9. {
  10. use AuthorizesRequests, ValidatesRequests;
  11. public $foldersTree = [];
  12. public function __construct()
  13. {
  14. $this->middleware(function ($request, $next) {
  15. $user = Auth::guard('web')->user();
  16. $permission = $user->permission;
  17. if (!$permission) {
  18. $permission = [];
  19. } else {
  20. $permission = json_decode($permission, true);
  21. }
  22. // 一次性查询所有文件夹
  23. $folders = SiteAlbumFolder::all();
  24. if ($permission) {
  25. $folders = $folders->filter(function ($folder) use ($permission) {
  26. return in_array($folder->id, $permission);
  27. });
  28. }
  29. //dd($permission);
  30. if (empty($folders->count())) {
  31. die('未授权,请联系管理员');
  32. }
  33. // 构建父子关系树
  34. $fid = isset($_GET['fid'])? $_GET['fid'] : 0;
  35. $result = SiteAlbumFolder::buildTree($folders);
  36. $result = $result->toArray();
  37. foreach ($result as $key => $item) {
  38. $checked = false;
  39. foreach ($item['children'] as $child) {
  40. if ($fid == $child['id']) {
  41. $checked = true;
  42. }
  43. foreach ($child['children'] as $subChild) {
  44. if ($fid == $subChild['id']) {
  45. $checked = true;
  46. }
  47. }
  48. }
  49. if ($fid == $item['id']) {
  50. $checked = true;
  51. }
  52. $result[$key]['checked'] = $checked;
  53. }
  54. //dd($result);
  55. $this->foldersTree = $result;
  56. return $next($request);
  57. });
  58. }
  59. }