wufeng 2 years ago
parent
commit
e16c2d67ec
3 changed files with 90 additions and 36 deletions
  1. 1 1
      app/admin/controller/Base.php
  2. 78 35
      app/admin/controller/Menu.php
  3. 11 0
      app/common.php

+ 1 - 1
app/admin/controller/Base.php

@@ -52,7 +52,7 @@ class Base extends \app\BaseController
 
         $where_role = [['a.uid', '=', $this->uid], ['a.is_del', '=', 0], ['a.status', '=', 1]];
         if (isset($this->post['supplierNo']) && $this->post['supplierNo'] != '') {
-            $where_role[] = ['a.supplierNo', '=', $this->post['supplierNo']];
+            $where_role[] = ['a.companyNo', '=', $this->post['supplierNo']];
             $where_role[] = ['b.level', '<>', 1];
         } else $where_role[] = ['b.level', '=', 1];
 

+ 78 - 35
app/admin/controller/Menu.php

@@ -20,43 +20,86 @@ class Menu extends Base
 //        $this->post  =$this->request->post();
     }
 
-    public function list()
-    {
-        $uid = $this->uid;
-        if($uid==''){
-            return error_show(101,'未找到用户信息');
-        }
-        $role =$this->checkRole();
-//        var_dump($role);
-        if(empty($role)){
-            return app_show(0,"获取成功",[]);
+//    public function list()
+//    {
+//        $uid = $this->uid;
+//        if($uid==''){
+//            return error_show(101,'未找到用户信息');
+//        }
+//        $role =$this->checkRole();
+////        var_dump($role);
+//        if(empty($role)){
+//            return app_show(0,"获取成功",[]);
+//        }
+//        $data= Db::name("view_menu")->where('aid',"in",explode(",",$role['action_conllect']))->where(['status'=>1,"cstatus"=>1,"is_display"=>1])
+//            ->order("weight desc,id asc,cweight desc,cid asc")->select();
+//        $list=[];
+//        $act=[];
+//        foreach ($data as $value){
+//            $list[$value["id"]]['menu_name']=$value['menu_name'];
+//            $list[$value["id"]]['menu_img']=$value['menu_img'];
+//            $list[$value["id"]]['menu_route']=$value['menu_route'];
+//            $list[$value["id"]]['is_display']=$value['is_display'];
+//            $list[$value["id"]]['status']=$value['status'];
+//            $temp=[];
+//            $temp['menu_name']=$value['cname'];
+//            $temp['menu_img']=$value['cmenu_img'];
+//            $temp['menu_route']=$value['cmenu_route'];
+//            $temp['menu_url']=$value['cmenu_url'];
+//            $temp['status']=$value['cstatus'];
+//            $temp['is_private']=$value['cprivate'];
+//            $temp['is_display']=$value['cis_display'];
+//            $list[$value["id"]]['child'][$value['cid']]=$temp;
+//            $act[$value['id']][$value['cid']][]=$value['acode'];
+//            $list[$value["id"]]['child'][$value['cid']]['action']= $act[$value['id']][$value['cid']];
+//        }
+//        array_walk($list,function (&$value){
+//            $value['child']= array_values($value['child']);
+//        });
+//        return app_show(0,"获取成功",array_values($list));
+//    }
+    public function MenuList(){
+        $condition =["status"=>1,"is_del"=>0];
+        if($this->level=='') return json_show(10000,"账户角色账户已禁用",[]);
+        if ($this->level!=1){
+            $role = Db::name("role_action")->where("role_id","=",$this->roleid)->find();
+
+            if($role==false)  return json_show(0,"获取成功",[]);
+
+            $action = Db::name("action")
+                ->where(['id'=>explode(",",$role['action_conllect']),"status"=>1,"is_del"=>0])
+                ->column("id,menuid,action_code");
+            if (empty($action)) return json_show(0,"获取成功",[]);
+
+            $MenuAction=[];
+            foreach ($action as $value){
+                $MenuAction[$value['menuid']][]=$value['action_code'];
+            }
+
+            $menuid= array_column($action,"menuid");
+            $condition['id']=$menuid;
+        }else{
+            $action = Db::name("action")->where(["status"=>1,"is_del"=>0])->column("id,action_code,menuid");
+            $MenuAction=[];
+            foreach ($action as $value){
+                $MenuAction[$value['menuid']][]=$value['action_code'];
+            }
+            $menuid= array_column($action,"menuid");
+            $condition['id']=$menuid;
         }
-        $data= Db::name("view_menu")->where('aid',"in",explode(",",$role['action_conllect']))->where(['status'=>1,"cstatus"=>1,"is_display"=>1])
-            ->order("weight desc,id asc,cweight desc,cid asc")->select();
+        $menuAll =Db::name("admin_menu")
+            ->where($condition)
+            ->where("level",">=",$this->level)
+            ->column("id,menu_name,menu_img,menu_route,menu_url,pid,is_show,is_private,menu_type,level,status,weight");
         $list=[];
-        $act=[];
-        foreach ($data as $value){
-            $list[$value["id"]]['menu_name']=$value['menu_name'];
-            $list[$value["id"]]['menu_img']=$value['menu_img'];
-            $list[$value["id"]]['menu_route']=$value['menu_route'];
-            $list[$value["id"]]['is_display']=$value['is_display'];
-            $list[$value["id"]]['status']=$value['status'];
-            $temp=[];
-            $temp['menu_name']=$value['cname'];
-            $temp['menu_img']=$value['cmenu_img'];
-            $temp['menu_route']=$value['cmenu_route'];
-            $temp['menu_url']=$value['cmenu_url'];
-            $temp['status']=$value['cstatus'];
-            $temp['is_private']=$value['cprivate'];
-            $temp['is_display']=$value['cis_display'];
-            $list[$value["id"]]['child'][$value['cid']]=$temp;
-            $act[$value['id']][$value['cid']][]=$value['acode'];
-            $list[$value["id"]]['child'][$value['cid']]['action']= $act[$value['id']][$value['cid']];
-        }
-        array_walk($list,function (&$value){
-            $value['child']= array_values($value['child']);
-        });
-        return app_show(0,"获取成功",array_values($list));
+        foreach ($menuAll as $value){
+            $value['action']=$MenuAction[$value['id']]??[];
+            makeMenu($value,$list);
+        }
+        $keys =array_column($list, 'weight');
+        array_multisort($keys,SORT_DESC,$list);
+        $list=MenuTree($list,0);
+        return json_show(0,"获取成功",$list);
     }
 
     /**

+ 11 - 0
app/common.php

@@ -1480,4 +1480,15 @@ if(!function_exists('is_discount')){
 		}
 		return $bol;
 	}
+}
+
+
+function makeMenu($row,&$list){
+    $list[$row['id']]=$row;
+    if($row['pid']==0){
+        return $list;
+    }
+    $parent =Db::name("admin_menu")->where(["id"=>$row['pid'],"status"=>1,"is_del"=>0])->field("id,menu_name,menu_img,menu_url,menu_route,pid,is_show,is_private,menu_type,weight")->find();
+    if($parent==false) return $list;
+    makeMenu($parent,$list);
 }