作者 lyh

gx

... ... @@ -30,20 +30,6 @@ class MenuController extends BaseController
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'
... ...
<?php
/**
* @remark :
* @name :RoleMenuController.php
* @author :lyh
* @method :post
* @time :2023/7/25 14:03
*/
namespace App\Http\Controllers\Aside\Manage;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Manage\MenuLogic;
use App\Http\Requests\Aside\Manage\GroupRequest;
use App\Models\Manage\Menu;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;
/**
* @remark :权限菜单列表
* @name :RoleMenuController
* @author :lyh
* @method :post
* @time :2023/7/25 14:04
*/
class RoleMenuController extends BaseController
{
/**
* @remark :权限菜单列表
* @name :lists
* @author :lyh
* @method :post
* @time :2023/7/25 14:05
*/
public function lists(MenuLogic $menuLogic){
$lists = $menuLogic->roleMenuList();
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :获取所有的路由
* @name :routes
* @author :lyh
* @method :post
* @time :2023/7/25 14:44
*/
public function routes(){
//已绑定菜单的路由
$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);
}
/**
* @remark :保存权限菜单
* @name :save
* @author :lyh
* @method :post
* @time :2023/7/25 14:18
*/
public function save(GroupRequest $groupRequest,MenuLogic $menuLogic){
if(isset($this->param['id']) && !empty($this->param['id'])){
$groupRequest->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
}
$menuLogic->roleMenuSave();
$this->response('success');
}
public function del(MenuLogic $menuLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$menuLogic->roleMenuDel();
$this->response('success');
}
}
... ...
... ... @@ -19,8 +19,8 @@ class MenuLogic extends BaseLogic
public function __construct()
{
parent::__construct();
$this->model = new Menu();
$this->param = $this->requestAll;
}
public function getInfo($id)
... ... @@ -60,6 +60,13 @@ class MenuLogic extends BaseLogic
return parent::delete($ids);
}
/**
* @remark :超级管理员获取菜单列表
* @name :getAllMenu
* @author :lyh
* @method :post
* @time :2023/7/25 14:37
*/
public function getAllMenu(){
$map = [
'type' => 0,
... ... @@ -102,4 +109,77 @@ class MenuLogic extends BaseLogic
}
return $this->success($menu);
}
/**
* @remark :获取所有权限菜单
* @name :roleMenuList
* @author :lyh
* @method :post
* @time :2023/7/25 14:17
*/
public function roleMenuList(){
$rights = Group::where(['id' => $this->manager['id'], 'status' => Group::STATUS_NORMAL])->pluck('rights')->first();
$map = [
'status' => Menu::STATUS_NORMAL,
'id'=>['in',$rights] ,
];
$lists = $this->model->list($map);
$menu = array();
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
return $this->success($menu);
}
/**
* @remark :保存权限节点
* @name :roleMenuSave
* @author :lyh
* @method :post
* @time :2023/7/25 14:22
*/
public function roleMenuSave(){
if($this->param['pid'] == 0){
$this->fail('主菜单不允许添加权限菜单');
}
//设置为权限菜单
$this->param['type'] = $this->model::STATUS_NORMAL;
if(isset($this->param['id']) && !empty($this->param['id'])){
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
$rs = $this->model->add($this->param);
}
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @remark :删除权限节点
* @name :roleMenuDel
* @author :lyh
* @method :post
* @time :2023/7/25 14:32
*/
public function roleMenuDel(){
$ids = $this->param['id'];
$this->param['id'] = ['in',$this->param['id']];
foreach ($ids as $v){
$menuModel = new Menu();
$info = $menuModel->read(['id'=>$v,'type'=>$this->model::STATUS_NORMAL]);
if($info === false){
$this->fail('当前菜单不是权限菜单,不允许删除');
}
}
$rs = $this->model->del($this->param);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ...
... ... @@ -61,6 +61,8 @@ class CustomTemplateLogic extends BaseLogic
if(isset($this->param['html']) && !empty($this->param['html'])){
$this->param['html'] = characterTruncation($this->param['html'],'/<main>(.*?)<\/main>/s');
$this->param['html_style'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-styles">(.*?)<\/style>/s');
@file_put_contents(storage_path('logs/lyh_error.log'), var_export($this->param['html_style'], true) . PHP_EOL, FILE_APPEND);
@file_put_contents(storage_path('logs/lyh_error.log'), var_export($this->param['html'], true) . PHP_EOL, FILE_APPEND);
}
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
... ...
... ... @@ -34,7 +34,7 @@ class GroupRequest extends FormRequest
return [
'title' => ['required', 'max:32'],
'rights' => ['required', 'array'],
'status' => ['required', Rule::in(array_keys(Group::statusMap()))],
'status' => ['required'],
];
}
... ... @@ -46,7 +46,6 @@ class GroupRequest extends FormRequest
'rights.required' => '请输入选择权限节点',
'rights.array' => '权限节点无效',
'status.required' => '请选择状态',
'status.in' => '状态值无效',
];
}
... ...
... ... @@ -14,16 +14,7 @@ class Group extends Base
const STATUS_NORMAL = 1;
const STATUS_ABNORMAL = 0;
/**
* @return string[]
*/
public static function statusMap(){
return [
self::STATUS_NORMAL => '正常',
self::STATUS_ABNORMAL => '禁用',
];
}
const TYPE_NORMAL = 1;//权限菜单
/**
* 获取用户组路由权限
* @param $gid
... ...
... ... @@ -86,6 +86,13 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/delete', [Aside\Manage\MenuController::class, 'delete'])->name('admin.menu_delete');
Route::any('/routes', [Aside\Manage\MenuController::class, 'routes'])->name('admin.menu_routes');
});
//权限菜单
Route::prefix('role_menu')->group(function () {
Route::get('/', [Aside\Manage\RoleMenuController::class, 'lists'])->name('admin.role_menu_list');
Route::get('/info', [Aside\Manage\RoleMenuController::class, 'save'])->name('admin.role_menu_info');
Route::any('/del', [Aside\Manage\RoleMenuController::class, 'del'])->name('admin.role_menu_del');
Route::any('/routes', [Aside\Manage\RoleMenuController::class, 'routes'])->name('admin.role_menu_routes');
});
//权限组
Route::prefix('group')->group(function () {
Route::get('/', [Aside\Manage\GroupController::class, 'list'])->name('admin.group');
... ...