app("MenuService")->getMenu()]); } public function update() { $update = []; if (request()->has("parent_id"))$update["parent_id"] = request("parent_id"); if (request()->has("level"))$update["level"] = request("level"); if (request()->has("name"))$update["name"] = 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();//重建菜单缓存 $mapping = app("MenuService")->getMenuAndAuthorityMapping(); $authorityUpdate = []; if (request()->has("parent_id"))$authorityUpdate["id_parent"] = $mapping[request("parent_id")]; if (request()->has("name"))$authorityUpdate["name"] = $mapping[request("name")]; if ($authorityUpdate){ Authority::query()->where("id",$mapping[request("id")])->update($authorityUpdate); app("AuthorityService")->removeAllAuth();//移除所有用户权限缓存,这将在用户下次访问时重新建立 } } $this->success(); } }