• TP6管理后台实战第三天


    第三天目标:

    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     }
    View Code

    二、管理员列表,管理员查询搜索功能,分页功能

    搜索项:账号 手机 姓名 账户状态 -- 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     }
    View Code

    视图文件代码就不贴出来了,直接去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     }
    View Code

    四 、角色管理

    搜索项:角色名称 -- 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     }
    View Code

    唠唠嗑:

    第三天结束了,角色选择权限需要等到菜单权限功能完成后再加进去,包括管理员选择角色的也还没弄,
    开发过程不要有洁癖,不要有一定要把一个功能完全做好再去做另外一个功能。
    因为很多功能是关联的,关联的功能也是有先有后的,只要有计划,心里不乱就好。
     
     
     
     
     
     

    但行好事,莫问前程!

    本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/15468642.html

  • 相关阅读:
    【提高测试】飘雪圣域(树状数组)
    【BZOJ2820】YY的GCD(莫比乌斯反演)
    【BZOJ2301】【HAOI2011】—Problem b(莫比乌斯反演)
    【POJ2318】—TOYS(计算几何)
    React-状态提升
    React-表单
    React-条件渲染
    React-列表 & Key
    React-HelloWorld
    MongoDB中的读写锁
  • 原文地址:https://www.cnblogs.com/ypeih/p/15468642.html
Copyright © 2020-2023  润新知