MenuController.php 2.2 KB

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