第四天:
1、菜單權限管理--ok
2、日志管理-- ok
進入開發:
一、日志管理
日志管理比較簡單,先把日志管理搞好
1.1 管理員登錄日志
搜索:起止時間,管理員賬號 ,狀態,IP, -- ok
列表項:ID,管理員ID/賬號 狀態 IP 添加時間 操作 (刪除) -- ok
功能:批量刪除, -- ok
分頁功能: --ok

1 /** 2 * 管理員登錄日志 3 */ 4 public function adminLoginList() 5 { 6 if (!$this->access) exit('無此訪問權限!'); 7 8 $data = request()->param(); 9 10 $return_data = array( 11 'admin_info' => $this->admin_info, 12 'admin_id' => $this->admin_id 13 ); 14 15 //搜索條件 16 $whereCond = array(); 17 if (!empty($data['admin_name'])) 18 { 19 $admin_id = Db::name('yphp_admin')->where("admin_name",$data['admin_name'])->value('admin_id'); 20 if (!empty($admin_id)) 21 { 22 $whereCond[] = array('admin_id','=',$admin_id); 23 } 24 25 } 26 if (!empty($data['login_status'])) $whereCond[] = array('login_status','=',$data['login_status']); 27 if (!empty($data['login_ip'])) $whereCond[] = array('login_ip','=',$data['login_ip']); 28 if (!empty($data['start'])) $whereCond[] = array('add_datetime','>',$data['start']); 29 if (!empty($data['end'])) $whereCond[] = array('add_datetime','<=',$data['end']." 23:59:59"); 30 31 32 //搜索默認值 33 $return_data['admin_name'] = empty($data['admin_name'])?'':$data['admin_name']; 34 $return_data['login_status'] = empty($data['login_status'])?'':$data['login_status']; 35 $return_data['login_ip'] = empty($data['login_ip'])?'':$data['login_ip']; 36 $return_data['start'] = empty($data['start'])?'':$data['start']; 37 $return_data['end'] = empty($data['end'])?'':$data['end']; 38 39 40 //獲取列表 41 $data_list = Db::name('yphp_admin_login')->where($whereCond)->order('id', 'desc')->paginate(array( 42 'list_rows' => 10, 43 'query' => $data 44 ))->each(function($item, $key){ 45 46 $item['admin_name'] = Db::name('yphp_admin')->where("admin_id",$item['admin_id'])->value('admin_name'); 47 return $item; 48 }); 49 50 51 $return_data['data_list'] = $data_list; 52 // 獲取分頁顯示 53 $return_data['page'] = $data_list->render(); 54 55 return view("logs/admin_login_list",$return_data); 56 } 57 58 /** 59 * 刪除日志 60 */ 61 public function adminLoginDel() 62 { 63 64 if (!$this->access) return json(array('status'=>'FAIL','msg'=>'無此訪問權限!')); 65 66 $id = request()->param('id'); 67 $ids = request()->param('ids'); 68 69 if (!empty($id)) 70 { 71 if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1) 72 { 73 Db::name('yphp_admin_login')->where("id",$id)->delete(); 74 return json(array('status'=>'SUCCESS','msg'=>'刪除成功')); 75 } 76 else 77 { 78 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!')); 79 } 80 }elseif(!empty($ids)){ 81 82 if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1) 83 { 84 Db::name('yphp_admin_login')->where("id",'in',$ids)->delete(); 85 return json(array('status'=>'SUCCESS','msg'=>'刪除成功')); 86 } 87 else 88 { 89 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!')); 90 } 91 } 92 }
1.2 管理員操作日志
搜索:添加時間 管理員賬號,控制器,操作,IP, -- ok
列表項:ID,管理員ID/賬號 訪問地址 ,控制器 操作 IP 添加時間 操作(查看明細,刪除) -- ok
功能:批量刪除 ,單個刪除-- ok
功能:查看詳情 -- ok

1 /** 2 * 管理員操作列表 3 */ 4 public function adminOpList() 5 { 6 if (!$this->access) exit('無此訪問權限!'); 7 8 $data = request()->param(); 9 10 $return_data = array( 11 'admin_info' => $this->admin_info, 12 'admin_id' => $this->admin_id 13 ); 14 15 //搜索條件 16 $whereCond = array(); 17 if (!empty($data['admin_name'])) $whereCond[] = array('admin_name','=',$data['admin_name']); 18 if (!empty($data['op_controller'])) $whereCond[] = array('op_controller','=',$data['op_controller']); 19 if (!empty($data['op_action'])) $whereCond[] = array('op_action','=',$data['op_action']); 20 if (!empty($data['login_ip'])) $whereCond[] = array('login_ip','=',$data['login_ip']); 21 if (!empty($data['start'])) $whereCond[] = array('add_datetime','>',$data['start']); 22 if (!empty($data['end'])) $whereCond[] = array('add_datetime','<=',$data['end']." 23:59:59"); 23 24 //搜索默認值 25 $return_data['admin_name'] = empty($data['admin_name'])?'':$data['admin_name']; 26 $return_data['op_controller'] = empty($data['op_controller'])?'':$data['op_controller']; 27 $return_data['op_action'] = empty($data['op_action'])?'':$data['op_action']; 28 $return_data['ip_address'] = empty($data['ip_address'])?'':$data['ip_address']; 29 $return_data['start'] = empty($data['start'])?'':$data['start']; 30 $return_data['end'] = empty($data['end'])?'':$data['end']; 31 32 33 //獲取列表 34 $data_list = Db::name('yphp_admin_op_log')->where($whereCond)->order('id', 'desc')->paginate(array( 35 'list_rows' => 10, 36 'query' => $data 37 )); 38 39 $return_data['data_list'] = $data_list; 40 // 獲取分頁顯示 41 $return_data['page'] = $data_list->render(); 42 43 return view("logs/admin_op_list",$return_data); 44 } 45 46 /** 47 * 刪除日志 48 */ 49 public function adminOpDel() 50 { 51 if (!$this->access) return json(array('status'=>'FAIL','msg'=>'無此訪問權限!')); 52 53 $id = request()->param('id'); 54 $ids = request()->param('ids'); 55 56 if (!empty($id)) 57 { 58 if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1) 59 { 60 Db::name('yphp_admin_op_log')->where("id",$id)->delete(); 61 return json(array('status'=>'SUCCESS','msg'=>'刪除成功')); 62 } 63 else 64 { 65 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!')); 66 } 67 }elseif(!empty($ids)){ 68 69 if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1) 70 { 71 Db::name('yphp_admin_op_log')->where("id",'in',$ids)->delete(); 72 return json(array('status'=>'SUCCESS','msg'=>'刪除成功')); 73 } 74 else 75 { 76 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!')); 77 } 78 } 79 } 80 81 /** 82 * 查看日志 83 */ 84 public function adminOpShow() 85 { 86 if (!$this->access) exit('無此訪問權限!'); 87 88 $id = request()->param('id'); 89 90 $info = Db::name('yphp_admin_op_log')->where("id",$id)->find(); 91 92 return view("logs/admin_op_show",array('info'=>$info)); 93 }
二、菜單權限管理
2.1 菜單,權限列表
搜索:菜單名稱,規則分類,控制器,操作,權限狀態 -- ok
列表項:ID,菜單名稱,菜單類型,Controller,Action,狀態,添加時間 ,操作(添加子菜單,編輯,修改) -- ok
功能:刪除菜單 --ok
功能:添加菜單 --ok
功能:編輯菜單--ok
2.2 角色中加入權限選擇
添加角色,增加權限選項--ok
修改角色,增加角色選項--ok

1 /** 2 * 菜單權限列表 3 */ 4 public function powerList() 5 { 6 if (!$this->access) exit('無此訪問權限!'); 7 8 $data = request()->param(); 9 10 $return_data = array( 11 'admin_info' => $this->admin_info, 12 'admin_id' => $this->admin_id 13 ); 14 15 //搜索條件 16 $whereCond = array(); 17 if (!empty($data['parent_id'])) $whereCond[] = array('id','=',$data['parent_id']); 18 19 //搜索默認值 20 $return_data['parent_id'] = empty($data['parent_id'])?'':$data['parent_id']; 21 22 //搜索項 23 $data_lista = Db::name('yphp_admin_power')->where("ptype",1)->order('porder', 'desc')->select()->toArray(); 24 25 //獲取第一級菜單 26 $data_list = Db::name('yphp_admin_power')->where($whereCond)->where("ptype",1)->order('porder', 'desc')->select()->toArray(); 27 foreach ($data_list as $key => $val) 28 { 29 //獲取二級菜單 30 $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray(); 31 //獲取三級菜單 32 foreach ($data_list[$key]['child'] as $key2 => $val2) 33 { 34 $data_list[$key]['child'][$key2]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val2['id'])->where("ptype",3)->order('porder', 'desc')->select()->toArray(); 35 } 36 } 37 $return_data['data_list'] = $data_list; 38 $return_data['data_lista'] = $data_lista; 39 // 獲取分頁顯示 40 //$return_data['page'] = $data_list->render(); 41 42 43 return view("admin/powders_list",$return_data); 44 } 45 46 /** 47 * 刪除菜單或權限 48 */ 49 public function powerDel() 50 { 51 52 if (!$this->access) return json(array('status'=>'FAIL','msg'=>'無此訪問權限!')); 53 54 $id = request()->param('id'); 55 if (empty($id)) return json(array('status'=>'FAIL','msg'=>'ID不能為空!')); 56 57 //判斷該角色下面沒有管理員,則可進行刪除 58 $num = Db::name('yphp_admin_power')->where("parent_id",$id)->count(); 59 if ($num > 0) { 60 return json(array('status'=>'FAIL','msg'=>'刪除失敗,該菜單下面還有子菜單!')); 61 } 62 63 if($this->admin_info['admin_role_id'] > 1) 64 { 65 return json(array('status'=>'FAIL','msg'=>'刪除失敗,僅超級管理員或系統管理員可刪除菜單')); 66 } 67 68 Db::name('yphp_admin_power')->where("id",$id)->delete(); 69 70 return json(array('status'=>'SUCCESS','msg'=>'刪除成功')); 71 } 72 73 /** 74 * 添加菜單 75 */ 76 public function powerAdd() 77 { 78 if (!$this->access) exit('無此訪問權限!'); 79 80 $parent_id = request()->param('parent_id'); 81 82 //獲取第一級菜單 83 $data_list = Db::name('yphp_admin_power')->where("ptype",1)->order('porder', 'desc')->select()->toArray(); 84 foreach ($data_list as $key => $val) 85 { 86 //獲取二級菜單 87 $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray(); 88 89 } 90 $return_data['parent_id'] = $parent_id; 91 $return_data['data_list'] = $data_list; 92 93 94 return view("admin/power_add",$return_data); 95 } 96 97 /** 98 * 查看圖標 99 */ 100 public function showIcon() 101 { 102 return view("index/unicode"); 103 } 104 /** 105 * 編輯菜單 106 */ 107 public function powerEdit() 108 { 109 110 if (!$this->access) exit('無此訪問權限!'); 111 112 $id = request()->param('id'); 113 114 //獲取第一級菜單 115 $data_list = Db::name('yphp_admin_power')->where("ptype",1)->order('porder', 'desc')->select()->toArray(); 116 foreach ($data_list as $key => $val) 117 { 118 //獲取二級菜單 119 $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray(); 120 } 121 $info = Db::name('yphp_admin_power')->where("id",$id)->find(); 122 123 $return_data['data_list'] = $data_list; 124 $return_data['info'] = $info; 125 126 127 return view("admin/power_edit",$return_data); 128 } 129 /** 130 * 添加菜單操作 131 */ 132 public function powerAddAct() 133 { 134 $data = request()->param(); 135 136 //確定菜單類別 137 if ($data['parent_id'] == 0) { 138 $data['ptype'] = 1; 139 if (empty($data['picon'])) { 140 $data['picon'] = ""; 141 } 142 143 $data['picon'] = base64_encode($data['picon']); 144 145 }else{ 146 $info = Db::name('yphp_admin_power')->where("id",$data['parent_id'])->find(); 147 $data['ptype'] = $info['ptype']+1; 148 } 149 150 151 if(empty($data['id'])) 152 { 153 $info = Db::name('yphp_admin_power')->where("pname",$data['pname'])->find(); 154 if(!empty($info)) 155 { 156 return json(array('status'=>'FAIL','msg'=>'該菜單已存在,請更換菜單名')); 157 } 158 159 $id = Db::name('yphp_admin_power')->strict(false)->insertGetId($data); 160 if(empty($id)){ 161 return json(array('status'=>'FAIL','msg'=>'添加菜單失敗!')); 162 }else{ 163 return json(array('status'=>'SUCCESS','msg'=>'添加菜單成功!')); 164 } 165 } 166 else 167 { 168 //修改管理員 169 Db::name('yphp_admin_power')->strict(false)->update($data); 170 return json(array('status'=>'SUCCESS','msg'=>'修改菜單成功!')); 171 } 172 }
嘮嘮嗑:
第四天開發結束:針對TP中有些比較別扭的寫法,直接按照官方的寫就行了,沒必要一直感覺別扭去抵觸,這樣只能大大縮減你的開發速度。既然選擇了用TP,就得接受它。
頁面效果展示一部分:
管理員登錄日志


管理員操作日志


管理員查看日志詳情


菜單權限管理:


添加菜單權限:


修改菜單權限:

