Menu::query()->orderByRaw("level DESC,sequence")->get()]); } public function update() { $update = []; $mapping = app("MenuService")->getMenuAndAuthorityMapping(); $authorityUpdate = []; if (request()->has("parent_id")){ $update["parent_id"] = request("parent_id"); $authorityUpdate["id_parent"] = request("parent_id") ? $mapping[request("parent_id")] : null; } if (request()->has("level"))$update["level"] = request("level"); if (request()->has("name")){ $update["name"] = request("name"); $authorityUpdate["name"] = $mapping[request("name")]; } if (request()->has("font"))$update["font"] = request("font"); if (request()->has("font_style"))$update["font_style"] = request("font_style"); if (request()->has("route"))$update["route"] = request("route"); if (request()->has("diff")){ $diff = request("diff"); Menu::query()->whereIn("id",request("child"))->update(["level"=>DB::raw("level - {$diff}")]); } if ($update && Menu::query()->where("id",request("id"))->update($update)){ app("MenuService")->setMenu();//重建菜单缓存 if ($authorityUpdate){ Authority::query()->where("id",$mapping[request("id")])->update($authorityUpdate); app("AuthorityService")->removeAllAuth();//移除所有用户权限缓存,这将在用户下次访问时重新建立 } } $this->success(); } public function sort() { app(BatchUpdateService::class)->batchUpdate("menus",request("update")); app("MenuService")->setMenu();//重建菜单缓存 $this->success(); } }