第四天:
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,就得接受它。
页面效果展示一部分:
管理员登录日志
管理员操作日志
管理员查看日志详情
菜单权限管理:
添加菜单权限:
修改菜单权限: