第三天目标:
1、管理员添加,修改,删除
2、角色管理
3、菜单权限管理
4、日志管理
进入开发:
一、先处理一些杂项,没在计划内的
1、管理员修改密码 -- ok
2、管理员个人信息展示 -- ok
针对开发过程中跟计划有些出入的地方,我的原则就是,如果确实需要,并且需要的时间不超过2小时。
那就直接弄了,不用在报备或者跟领导请示。领导也很忙的,如果内容超过2小时,记录到工作内容里面即可。
附代码:Index.php控制器文件
1 /** 2 * 管理员个人信息 3 */ 4 public function profile() 5 { 6 7 $return_data = array( 8 'admin_info' => $this->admin_info, 9 'admin_id' => $this->admin_id 10 ); 11 12 return view("admin/profile",$return_data); 13 } 14 15 //修改密码模板 16 public function changePass() 17 { 18 $return_data = array( 19 'admin_info' => $this->admin_info, 20 'admin_id' => $this->admin_id 21 ); 22 23 return view("admin/change_password",$return_data); 24 } 25 //修改密码操作 26 public function changePassAct() 27 { 28 $data = request()->param(); 29 30 if ($data['pass'] != $data['repass']) return json(array('status'=>'FAIL','msg'=>'两次密码输入不一致!')); 31 if (empty($data['pass'])) return json(array('status'=>'FAIL','msg'=>'密码不能为空!')); 32 35 $res = $this->adminModel->changePassAct($this->admin_id,$data['pass']); 36 return json($res); 37 }
二、管理员列表,管理员查询搜索功能,分页功能
搜索项:账号 手机 姓名 账户状态 -- ok
列表项: ID,账号 ,姓名,手机号,部门,角色,账户状态,添加时间 -- ok
附控制器Admin.php 文件
1 /** 2 * 管理员列表 3 */ 4 public function adminList() 5 { 6 if (!$this->access) exit('无此访问权限!'); 7 8 $data = request()->param(); 9 $return_data = array( 10 'admin_info' => $this->admin_info, 11 'admin_id' => $this->admin_id 12 ); 13 14 //搜索条件 15 $whereCond = array(); 16 if (!empty($data['s_admin_name'])) $whereCond[] = array('admin_name','like','%'.$data['s_admin_name'].'%'); 17 if (!empty($data['s_admin_truename'])) $whereCond[] = array('admin_truename','=',$data['s_admin_truename']); 18 if (!empty($data['s_admin_mobile'])) $whereCond[] = array('admin_mobile','=',$data['s_admin_mobile']); 19 if (!empty($data['s_admin_status'])) $whereCond[] = array('admin_status','=',$data['s_admin_status']); 20 21 //搜索默认值 22 $return_data['s_admin_name'] = empty($data['s_admin_name'])?'':$data['s_admin_name']; 23 $return_data['s_admin_truename'] = empty($data['s_admin_truename'])?'':$data['s_admin_truename']; 24 $return_data['s_admin_mobile'] = empty($data['s_admin_mobile'])?'':$data['s_admin_mobile']; 25 $return_data['s_admin_status'] = empty($data['s_admin_status'])?'':$data['s_admin_status']; 26 27 28 //获取列表 29 $admin_list = Db::name('yphp_admin')->where($whereCond)->order('admin_id', 'desc')->paginate(array( 30 'list_rows' => 10, 31 'query' => $data 32 ))->each(function($item,$key){ 33 34 $item['admin_role_name'] = Db::name('yphp_admin_role')->where("role_id",$item['admin_role_id'])->value('role_name'); 35 if ($item['admin_role_id'] == 0) $item['admin_role_name'] = '超级管理员'; 36 return $item; 37 }); 38 $return_data['admin_list'] = $admin_list; 39 // 获取分页显示 40 $return_data['page'] = $admin_list->render(); 41 42 return view("admin/admin_list",$return_data); 43 }
视图文件代码就不贴出来了,直接去github上面看吧
三、管理员添加,编辑,删除功能
删除功能 -- ok
管理员添加 -- ok
管理员编辑-- ok
附代码
1 /** 2 * 删除管理员 3 */ 4 public function adminDel() 5 { 6 if (!$this->access) return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 7 8 $s_admin_id = request()->param('s_admin_id'); 9 if (empty($s_admin_id)) return json(array('status'=>'FAIL','msg'=>'ID不能为空!')); 10 if($s_admin_id == $this->admin_id) return json(array('status'=>'FAIL','msg'=>'你不能删除自己!')); 11 if($s_admin_id == 1) return json(array('status'=>'FAIL','msg'=>'超级管理员不能被删除!')); 12 13 Db::name('yphp_admin')->where("admin_id",$s_admin_id)->delete(); 14 15 return json(array('status'=>'SUCCESS','msg'=>'管理员删除成功')); 16 } 17 18 /** 19 * 添加管理员 20 */ 21 public function adminAdd() 22 { 23 if (!$this->access) return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 24 25 $s_admin_id = request()->param('s_admin_id'); 26 27 //获取角色 28 $role_list = Db::name('yphp_admin_role')->order('role_id', 'asc')->select(); 29 30 if (empty($s_admin_id)) 31 { 32 return view("admin/admin_add",array('role_list'=>$role_list)); 33 } 34 else 35 { 36 $info = Db::name('yphp_admin')->where('admin_id',$s_admin_id)->find(); 37 38 return view("admin/admin_edit",array('info'=>$info,'role_list'=>$role_list)); 39 } 40 41 } 42 /** 43 * 添加管理员操作 44 */ 45 public function adminAddAct() 46 { 47 $data = request()->param(); 48 49 if (!empty($data['pass'])) 50 { 51 if($data['pass'] != $data['repass']) 52 { 53 return json(array('status'=>'FAIL','msg'=>'两次密码输入不一致!')); 54 } 55 } 56 57 if(empty($data['s_admin_id'])) 58 { 59 $add_res = $this->adminModel->addItem($data); 60 return json($add_res); 61 62 } 63 else 64 { 65 //修改管理员 66 $add_res = $this->adminModel->updateItem($data); 67 return json($add_res); 68 } 69 }
四 、角色管理
搜索项:角色名称 -- ok
列表项:ID,角色名称,角色描述,角色权限,操作 --ok
角色分页 -- ok
角色添加 -- ok
角色编辑 -- ok
角色删除 -- ok
附代码:
1 /** 2 * 角色列表 3 */ 4 public function roleList() 5 { 6 7 if (!$this->access) exit('无此访问权限!'); 8 9 $data = request()->param(); 10 11 $return_data = array( 12 'admin_info' => $this->admin_info, 13 'admin_id' => $this->admin_id 14 ); 15 16 //搜索条件 17 $whereCond = array(); 18 if (!empty($data['role_name'])) $whereCond[] = array('role_name','=',$data['role_name']); 19 20 //搜索默认值 21 $return_data['role_name'] = empty($data['role_name'])?'':$data['role_name']; 22 23 //获取列表 24 $data_list = Db::name('yphp_admin_role')->where($whereCond)->order('role_id', 'desc')->paginate(array( 25 'list_rows' => 10, 26 'query' => $data 27 )); 28 $return_data['data_list'] = $data_list; 29 // 获取分页显示 30 $return_data['page'] = $data_list->render(); 31 32 33 return view("admin/role_list",$return_data); 34 } 35 36 /** 37 * 删除角色 38 */ 39 public function roleDel() 40 { 41 42 if (!$this->access) return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 43 44 $role_id = request()->param('role_id'); 45 if (empty($role_id)) return json(array('status'=>'FAIL','msg'=>'ID不能为空!')); 46 47 //判断该角色下面没有管理员,则可进行删除 48 $num = Db::name('yphp_admin')->where("admin_role_id",$role_id)->count(); 49 if ($num > 0) { 50 return json(array('status'=>'FAIL','msg'=>'该角色下面有管理员存在,不能被删除!')); 51 } 52 53 if($role_id == 1) 54 { 55 return json(array('status'=>'FAIL','msg'=>'系统管理员不能被删除!')); 56 } 57 58 Db::name('yphp_admin_role')->where("role_id",$role_id)->delete(); 59 60 return json(array('status'=>'SUCCESS','msg'=>'角色删除成功')); 61 } 62 63 /** 64 * 添加角色 65 */ 66 public function roleAdd() 67 { 68 69 if (!$this->access) exit('无此访问权限!'); 70 71 $role_id = request()->param('role_id'); 72 73 //获取当前可用的所有菜单权限 74 //获取第一级菜单 75 $data_list = Db::name('yphp_admin_power')->where("pstatus",1)->where("ptype",1)->order('porder', 'desc')->select()->toArray(); 76 foreach ($data_list as $key => $val) 77 { 78 //获取二级菜单 79 $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("pstatus",1)->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray(); 80 //获取三级菜单 81 foreach ($data_list[$key]['child'] as $key2 => $val2) 82 { 83 $data_list[$key]['child'][$key2]['child'] = Db::name('yphp_admin_power')->where("pstatus",1)->where("parent_id",$val2['id'])->where("ptype",3)->order('porder', 'desc')->select()->toArray(); 84 } 85 } 86 $return_data['power_list'] = $data_list; 87 88 if (empty($role_id)) 89 { 90 return view("admin/role_add",$return_data); 91 } 92 else 93 { 94 95 $info = Db::name('yphp_admin_role')->where('role_id',$role_id)->find(); 96 97 if ($info['role_powers'] != 'all') { 98 99 $info['role_powers_check'] = explode(",", $info['role_powers']); 100 }else{ 101 $info['role_powers_check'] = []; 102 } 103 104 return view("admin/role_edit",array('info'=>$info,'power_list'=>$return_data['power_list'])); 105 } 106 107 } 108 /** 109 * 添加/修改角色操作 110 */ 111 public function RoleAddAct() 112 { 113 $data = request()->param(); 114 115 if (empty($data['role_powers'])) 116 { 117 return json(array('status'=>'FAIL','msg'=>'请选择权限类型')); 118 } 119 120 if(empty($data['role_id'])) 121 { 122 $info = Db::name('yphp_admin_role')->where("role_name",$data['role_name'])->find(); 123 if(!empty($info)) 124 { 125 return json(array('status'=>'FAIL','msg'=>'该角色已存在,请更换角色名')); 126 } 127 128 if($data['role_powers'] == 'custom') 129 { 130 $data['role_powers'] = implode(",", $data['ids']); 131 } 132 133 $role_id = Db::name('yphp_admin_role')->strict(false)->insertGetId($data); 134 if(empty($role_id)){ 135 return json(array('status'=>'FAIL','msg'=>'添加角色失败!')); 136 }else{ 137 return json(array('status'=>'SUCCESS','msg'=>'添加角色成功!')); 138 } 139 } 140 else 141 { 142 143 if($data['role_powers'] == 'custom') 144 { 145 $data['role_powers'] = implode(",", $data['ids']); 146 } 147 148 //修改管理员 149 Db::name('yphp_admin_role')->strict(false)->update($data); 150 return json(array('status'=>'SUCCESS','msg'=>'修改角色成功!')); 151 } 152 }
唠唠嗑:
第三天结束了,角色选择权限需要等到菜单权限功能完成后再加进去,包括管理员选择角色的也还没弄,
开发过程不要有洁癖,不要有一定要把一个功能完全做好再去做另外一个功能。
因为很多功能是关联的,关联的功能也是有先有后的,只要有计划,心里不乱就好。