| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- namespace App\Http\Controllers;
- use App\Authority;
- use App\Components\AsyncResponse;
- use App\Menu;
- use App\Services\common\BatchUpdateService;
- use Illuminate\Support\Facades\DB;
- class MenuController extends Controller
- {
- use AsyncResponse;
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\View\View
- */
- public function index()
- {
- return \view("maintenance.menu.index",["menus"=>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();
- }
- }
|