MenuController.php 2.0 KB
<?php

namespace App\Http\Controllers\Aside\Manage;

use App\Helper\Arr;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Manage\MenuLogic;
use App\Http\Requests\Aside\Manage\MenuRequest;
use App\Models\Manage\Menu;
use App\Rules\Ids;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;

/**
 * 后台菜单
 * Class MenuController
 * @package App\Http\Controllers\Aside
 * @author zbj
 * @date 2023/4/19
 */
class MenuController extends BaseController
{

    public function list(Request $request, MenuLogic $logic)
    {
        $map = [];
        $sort = ['id' => 'desc'];
        $list = $logic->getList($map, $sort, ['id', 'pid', 'title', 'icon', 'type', 'menu_path'],0);
        return $this->success(Arr::listToTree($list));
    }

    public function routes(Request $request){
        //已绑定菜单的路由
        $menu_route = array_filter(Menu::pluck('route_name')->toArray());
        //路由
        $list = [];
        $routes = Route::getRoutes()->getRoutesByName();
        foreach ($routes as $name => $route) {
            if(Str::startsWith($name, 'admin.') && !Str::endsWith($name, '.white') && !in_array($name, $menu_route)){
                $list[] = $name;
            }
        }
        return $this->success($list);
    }

    public function info(Request $request, MenuLogic $logic){
        $request->validate([
            'id'=>'required'
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $data = $logic->getInfo($this->param['id']);
        return $this->success($data);
    }

    public function save(MenuRequest $request, MenuLogic $logic){
        $data = $logic->save($this->param);
        return $this->success($data);
    }

    public function delete(Request $request, MenuLogic $logic){
        $request->validate([
            'ids'=>['required', new Ids()]
        ],[
            'ids.required' => 'ID不能为空'
        ]);

        $data = $logic->delete($this->param['ids']);
        return $this->success($data);
    }

}