MenuController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Authority;
  4. use App\Components\AsyncResponse;
  5. use App\Menu;
  6. use Illuminate\Support\Facades\DB;
  7. class MenuController extends Controller
  8. {
  9. use AsyncResponse;
  10. /**
  11. * Display a listing of the resource.
  12. *
  13. * @return \Illuminate\View\View
  14. */
  15. public function index()
  16. {
  17. return \view("maintenance.menu.index",["menus"=>app("MenuService")->getMenu()]);
  18. }
  19. public function update()
  20. {
  21. $update = [];
  22. if (request()->has("parent_id"))$update["parent_id"] = request("parent_id");
  23. if (request()->has("level"))$update["level"] = request("level");
  24. if (request()->has("name"))$update["name"] = request("name");
  25. if (request()->has("font"))$update["font"] = request("font");
  26. if (request()->has("font_style"))$update["font_style"] = request("font_style");
  27. if (request()->has("route"))$update["route"] = request("route");
  28. if (request()->has("diff")){
  29. $diff = request("diff");
  30. Menu::query()->whereIn("id",request("child"))->update(["level"=>DB::raw("level - {$diff}")]);
  31. }
  32. if ($update && Menu::query()->where("id",request("id"))->update($update)){
  33. app("MenuService")->setMenu();//重建菜单缓存
  34. $mapping = app("MenuService")->getMenuAndAuthorityMapping();
  35. $authorityUpdate = [];
  36. if (request()->has("parent_id"))$authorityUpdate["id_parent"] = $mapping[request("parent_id")];
  37. if (request()->has("name"))$authorityUpdate["name"] = $mapping[request("name")];
  38. if ($authorityUpdate){
  39. Authority::query()->where("id",$mapping[request("id")])->update($authorityUpdate);
  40. app("AuthorityService")->removeAllAuth();//移除所有用户权限缓存,这将在用户下次访问时重新建立
  41. }
  42. }
  43. $this->success();
  44. }
  45. }