作者 lyh

gx

@@ -30,20 +30,6 @@ class MenuController extends BaseController @@ -30,20 +30,6 @@ class MenuController extends BaseController
30 return $this->success(Arr::listToTree($list)); 30 return $this->success(Arr::listToTree($list));
31 } 31 }
32 32
33 - public function routes(Request $request){  
34 - //已绑定菜单的路由  
35 - $menu_route = array_filter(Menu::pluck('route_name')->toArray());  
36 - //路由  
37 - $list = [];  
38 - $routes = Route::getRoutes()->getRoutesByName();  
39 - foreach ($routes as $name => $route) {  
40 - if(Str::startsWith($name, 'admin.') && !Str::endsWith($name, '.white') && !in_array($name, $menu_route)){  
41 - $list[] = $name;  
42 - }  
43 - }  
44 - return $this->success($list);  
45 - }  
46 -  
47 public function info(Request $request, MenuLogic $logic){ 33 public function info(Request $request, MenuLogic $logic){
48 $request->validate([ 34 $request->validate([
49 'id'=>'required' 35 'id'=>'required'
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :RoleMenuController.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2023/7/25 14:03
  8 + */
  9 +
  10 +namespace App\Http\Controllers\Aside\Manage;
  11 +
  12 +use App\Enums\Common\Code;
  13 +use App\Http\Controllers\Aside\BaseController;
  14 +use App\Http\Logic\Aside\Manage\MenuLogic;
  15 +use App\Http\Requests\Aside\Manage\GroupRequest;
  16 +use App\Models\Manage\Menu;
  17 +use Illuminate\Http\Request;
  18 +use Illuminate\Support\Facades\Route;
  19 +use Illuminate\Support\Str;
  20 +
  21 +
  22 +/**
  23 + * @remark :权限菜单列表
  24 + * @name :RoleMenuController
  25 + * @author :lyh
  26 + * @method :post
  27 + * @time :2023/7/25 14:04
  28 + */
  29 +class RoleMenuController extends BaseController
  30 +{
  31 + /**
  32 + * @remark :权限菜单列表
  33 + * @name :lists
  34 + * @author :lyh
  35 + * @method :post
  36 + * @time :2023/7/25 14:05
  37 + */
  38 + public function lists(MenuLogic $menuLogic){
  39 + $lists = $menuLogic->roleMenuList();
  40 + $this->response('success',Code::SUCCESS,$lists);
  41 + }
  42 +
  43 + /**
  44 + * @remark :获取所有的路由
  45 + * @name :routes
  46 + * @author :lyh
  47 + * @method :post
  48 + * @time :2023/7/25 14:44
  49 + */
  50 + public function routes(){
  51 + //已绑定菜单的路由
  52 + $menu_route = array_filter(Menu::pluck('route_name')->toArray());
  53 + //路由
  54 + $list = [];
  55 + $routes = Route::getRoutes()->getRoutesByName();
  56 + foreach ($routes as $name => $route) {
  57 + if(Str::startsWith($name, 'admin.') && !Str::endsWith($name, '.white') && !in_array($name, $menu_route)){
  58 + $list[] = $name;
  59 + }
  60 + }
  61 + return $this->success($list);
  62 + }
  63 + /**
  64 + * @remark :保存权限菜单
  65 + * @name :save
  66 + * @author :lyh
  67 + * @method :post
  68 + * @time :2023/7/25 14:18
  69 + */
  70 + public function save(GroupRequest $groupRequest,MenuLogic $menuLogic){
  71 + if(isset($this->param['id']) && !empty($this->param['id'])){
  72 + $groupRequest->validate([
  73 + 'id'=>'required'
  74 + ],[
  75 + 'id.required' => 'ID不能为空'
  76 + ]);
  77 + }
  78 + $menuLogic->roleMenuSave();
  79 + $this->response('success');
  80 + }
  81 +
  82 + public function del(MenuLogic $menuLogic){
  83 + $this->request->validate([
  84 + 'id'=>'required'
  85 + ],[
  86 + 'id.required' => 'ID不能为空'
  87 + ]);
  88 + $menuLogic->roleMenuDel();
  89 + $this->response('success');
  90 + }
  91 +
  92 +}
@@ -19,8 +19,8 @@ class MenuLogic extends BaseLogic @@ -19,8 +19,8 @@ class MenuLogic extends BaseLogic
19 public function __construct() 19 public function __construct()
20 { 20 {
21 parent::__construct(); 21 parent::__construct();
22 -  
23 $this->model = new Menu(); 22 $this->model = new Menu();
  23 + $this->param = $this->requestAll;
24 } 24 }
25 25
26 public function getInfo($id) 26 public function getInfo($id)
@@ -60,6 +60,13 @@ class MenuLogic extends BaseLogic @@ -60,6 +60,13 @@ class MenuLogic extends BaseLogic
60 return parent::delete($ids); 60 return parent::delete($ids);
61 } 61 }
62 62
  63 + /**
  64 + * @remark :超级管理员获取菜单列表
  65 + * @name :getAllMenu
  66 + * @author :lyh
  67 + * @method :post
  68 + * @time :2023/7/25 14:37
  69 + */
63 public function getAllMenu(){ 70 public function getAllMenu(){
64 $map = [ 71 $map = [
65 'type' => 0, 72 'type' => 0,
@@ -102,4 +109,77 @@ class MenuLogic extends BaseLogic @@ -102,4 +109,77 @@ class MenuLogic extends BaseLogic
102 } 109 }
103 return $this->success($menu); 110 return $this->success($menu);
104 } 111 }
  112 +
  113 + /**
  114 + * @remark :获取所有权限菜单
  115 + * @name :roleMenuList
  116 + * @author :lyh
  117 + * @method :post
  118 + * @time :2023/7/25 14:17
  119 + */
  120 + public function roleMenuList(){
  121 + $rights = Group::where(['id' => $this->manager['id'], 'status' => Group::STATUS_NORMAL])->pluck('rights')->first();
  122 + $map = [
  123 + 'status' => Menu::STATUS_NORMAL,
  124 + 'id'=>['in',$rights] ,
  125 + ];
  126 + $lists = $this->model->list($map);
  127 + $menu = array();
  128 + foreach ($lists as $k => $v){
  129 + $v = (array)$v;
  130 + if ($v['pid'] == 0) {
  131 + $v['sub'] = _get_child($v['id'], $lists);
  132 + $menu[] = $v;
  133 + }
  134 + }
  135 + return $this->success($menu);
  136 + }
  137 +
  138 + /**
  139 + * @remark :保存权限节点
  140 + * @name :roleMenuSave
  141 + * @author :lyh
  142 + * @method :post
  143 + * @time :2023/7/25 14:22
  144 + */
  145 + public function roleMenuSave(){
  146 + if($this->param['pid'] == 0){
  147 + $this->fail('主菜单不允许添加权限菜单');
  148 + }
  149 + //设置为权限菜单
  150 + $this->param['type'] = $this->model::STATUS_NORMAL;
  151 + if(isset($this->param['id']) && !empty($this->param['id'])){
  152 + $rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
  153 + }else{
  154 + $rs = $this->model->add($this->param);
  155 + }
  156 + if($rs === false){
  157 + $this->fail('error');
  158 + }
  159 + return $this->success();
  160 + }
  161 +
  162 + /**
  163 + * @remark :删除权限节点
  164 + * @name :roleMenuDel
  165 + * @author :lyh
  166 + * @method :post
  167 + * @time :2023/7/25 14:32
  168 + */
  169 + public function roleMenuDel(){
  170 + $ids = $this->param['id'];
  171 + $this->param['id'] = ['in',$this->param['id']];
  172 + foreach ($ids as $v){
  173 + $menuModel = new Menu();
  174 + $info = $menuModel->read(['id'=>$v,'type'=>$this->model::STATUS_NORMAL]);
  175 + if($info === false){
  176 + $this->fail('当前菜单不是权限菜单,不允许删除');
  177 + }
  178 + }
  179 + $rs = $this->model->del($this->param);
  180 + if($rs === false){
  181 + $this->fail('error');
  182 + }
  183 + return $this->success();
  184 + }
105 } 185 }
@@ -61,6 +61,8 @@ class CustomTemplateLogic extends BaseLogic @@ -61,6 +61,8 @@ class CustomTemplateLogic extends BaseLogic
61 if(isset($this->param['html']) && !empty($this->param['html'])){ 61 if(isset($this->param['html']) && !empty($this->param['html'])){
62 $this->param['html'] = characterTruncation($this->param['html'],'/<main>(.*?)<\/main>/s'); 62 $this->param['html'] = characterTruncation($this->param['html'],'/<main>(.*?)<\/main>/s');
63 $this->param['html_style'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-styles">(.*?)<\/style>/s'); 63 $this->param['html_style'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-styles">(.*?)<\/style>/s');
  64 + @file_put_contents(storage_path('logs/lyh_error.log'), var_export($this->param['html_style'], true) . PHP_EOL, FILE_APPEND);
  65 + @file_put_contents(storage_path('logs/lyh_error.log'), var_export($this->param['html'], true) . PHP_EOL, FILE_APPEND);
64 } 66 }
65 $rs = $this->model->edit($this->param,['id'=>$this->param['id']]); 67 $rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
66 }else{ 68 }else{
@@ -34,7 +34,7 @@ class GroupRequest extends FormRequest @@ -34,7 +34,7 @@ class GroupRequest extends FormRequest
34 return [ 34 return [
35 'title' => ['required', 'max:32'], 35 'title' => ['required', 'max:32'],
36 'rights' => ['required', 'array'], 36 'rights' => ['required', 'array'],
37 - 'status' => ['required', Rule::in(array_keys(Group::statusMap()))], 37 + 'status' => ['required'],
38 ]; 38 ];
39 } 39 }
40 40
@@ -46,7 +46,6 @@ class GroupRequest extends FormRequest @@ -46,7 +46,6 @@ class GroupRequest extends FormRequest
46 'rights.required' => '请输入选择权限节点', 46 'rights.required' => '请输入选择权限节点',
47 'rights.array' => '权限节点无效', 47 'rights.array' => '权限节点无效',
48 'status.required' => '请选择状态', 48 'status.required' => '请选择状态',
49 - 'status.in' => '状态值无效',  
50 ]; 49 ];
51 } 50 }
52 51
@@ -14,16 +14,7 @@ class Group extends Base @@ -14,16 +14,7 @@ class Group extends Base
14 const STATUS_NORMAL = 1; 14 const STATUS_NORMAL = 1;
15 const STATUS_ABNORMAL = 0; 15 const STATUS_ABNORMAL = 0;
16 16
17 - /**  
18 - * @return string[]  
19 - */  
20 - public static function statusMap(){  
21 - return [  
22 - self::STATUS_NORMAL => '正常',  
23 - self::STATUS_ABNORMAL => '禁用',  
24 - ];  
25 - }  
26 - 17 + const TYPE_NORMAL = 1;//权限菜单
27 /** 18 /**
28 * 获取用户组路由权限 19 * 获取用户组路由权限
29 * @param $gid 20 * @param $gid
@@ -86,6 +86,13 @@ Route::middleware(['aloginauth'])->group(function () { @@ -86,6 +86,13 @@ Route::middleware(['aloginauth'])->group(function () {
86 Route::any('/delete', [Aside\Manage\MenuController::class, 'delete'])->name('admin.menu_delete'); 86 Route::any('/delete', [Aside\Manage\MenuController::class, 'delete'])->name('admin.menu_delete');
87 Route::any('/routes', [Aside\Manage\MenuController::class, 'routes'])->name('admin.menu_routes'); 87 Route::any('/routes', [Aside\Manage\MenuController::class, 'routes'])->name('admin.menu_routes');
88 }); 88 });
  89 + //权限菜单
  90 + Route::prefix('role_menu')->group(function () {
  91 + Route::get('/', [Aside\Manage\RoleMenuController::class, 'lists'])->name('admin.role_menu_list');
  92 + Route::get('/info', [Aside\Manage\RoleMenuController::class, 'save'])->name('admin.role_menu_info');
  93 + Route::any('/del', [Aside\Manage\RoleMenuController::class, 'del'])->name('admin.role_menu_del');
  94 + Route::any('/routes', [Aside\Manage\RoleMenuController::class, 'routes'])->name('admin.role_menu_routes');
  95 + });
89 //权限组 96 //权限组
90 Route::prefix('group')->group(function () { 97 Route::prefix('group')->group(function () {
91 Route::get('/', [Aside\Manage\GroupController::class, 'list'])->name('admin.group'); 98 Route::get('/', [Aside\Manage\GroupController::class, 'list'])->name('admin.group');