assign('breadcrumb1','系统'); $this->assign('breadcrumb2','权限管理'); } /** * 初始化 * * */ public function index(){ $mp = []; if(!in_array(admin('uid'), explode(',', config('administrator')))){ $mp['auth_group.type'] = 1; $session = session('userRule'); if ($session){ $mp['auth_group.company_id'] = $session['company_id']; $mp['auth_group.menu_type'] = $session['menu_type']; if ($session['business_id']){ $mp['auth_group.business_id'] = $session['business_id']; } } } // 查询列表数据 $list = DB::table('auth_group') ->join('company', 'company.id', '=', 'auth_group.company_id') ->where($mp) ->select('auth_group.*', 'company.name as company_name') ->paginate(config('page_num',10))->appends(request()->all()); foreach($list as $k=>$v){ $v['business_name'] = ''; if ($v['business_id']){ $v['business_name'] = Business::query()->where('id', $v['business_id'])->value('name'); } $list[$k] = $v; } // 分配数据 $this->assign('list',$list); // 加载模板 return $this->fetch(); } /** * 新增 * * */ public function add(Request $request){ if(request()->isMethod('post')){ // 验证参数 $request->scene('add')->validate(); // 接收参数 $data['title'] = request('title',''); $data['description'] = request('description',''); $session = session('userRule'); if ($session){ $data['company_id'] = $session['company_id']; $data['menu_type'] = $session['menu_type']; if ($session['business_id']){ $data['business_id'] = $session['business_id']; } } $data['type'] = 1; // 返回结果 $result = DB::table('auth_group')->insert($data); // 如果状态停用 if( !$result ) return json_send(['code'=>'error','msg'=>'添加失败']); // 结果 return json_send(['code'=>'success','msg'=>'添加成功','action'=>'add']); } $this->assign('crumbs','新增'); return $this->fetch(); } /** * 编辑 * * */ public function edit(Request $request){ if(request()->isMethod('post')){ // 验证参数 $request->scene('edit')->validate(); // 接收参数 $id = request('id',0); $data['title'] = request('title',''); $data['description'] = request('description',''); // 返回结果 $result = DB::table('auth_group')->where(['id'=>$id])->update($data); // 如果状态停用 if( !$result ) return json_send(['code'=>'error','msg'=>'编辑失败']); // 结果 return json_send(['code'=>'success','msg'=>'编辑成功','action'=>'edit']); } $group = DB::table('auth_group')->find((int)request('id')); $merge_group = explode(',',config('CUSTOM_GROUP')); array_push($merge_group,$group['id']); $this->assign('group',$group); $this->assign('crumbs','编辑'); return $this->fetch(); } /** * 删除 * * */ public function del(Request $request){ // 验证参数 $request->scene('del')->validate(); // 接收参数 $id = request('id',0); // 执行删除 $result = DB::table('auth_group')->delete($id); // 错误告知 if( !$result ) return json_send(['code'=>'error','msg'=>'删除失败']); // 结果 return json_send(['code'=>'success','msg'=>'删除成功']); } /** * 授权 * * */ public function access(Request $request){ // 验证参数 $request->scene('del')->validate(); // 如果是post if(request()->isMethod('post')){ // 接收参数 $data['rules'] = (array) request('rules',[]); // 权限组Id $group_id = (int) request('id',0); // 删除权限 DB::table('auth_rule')->where(['group_id'=>$group_id])->delete(); // 存在权限 if( isset($data['rules']) ){ // 排序 sort($data['rules']); // 切割 $data['rules'] = implode( ',' , array_unique($data['rules'])); } // 修改权限 $result = DB::table('auth_group')->where(['id'=>$group_id])->update($data); // 告知结果 if( !$result ) return json_send(['code'=>'success','msg'=>'权限组修改失败','action'=>'edit']); // 权限组菜单 $group_menu = DB::table('auth_group')->find($group_id); // 菜单ID $menu_id = explode(',', $group_menu['rules']); // 获得菜单列表 $menu_list = DB::table('menu')->get()->toArray(); // 循环菜单ID foreach ($menu_id as $v) { // 循环菜单列表 foreach ($menu_list as $v1) { // 如果对应的菜单 if( $v == $v1['id'] ){ // 组合菜单权限数据 $m['menu_id'] = $v; $m['group_id'] = $group_id; $m['name'] = !empty($v1['url']) ? $v1['url'] : ''; // 写入菜单权限规则表 DB::table('auth_rule')->insert($m); } } } // 告知结果 return json_send(['code'=>'success','msg'=>'编辑成功','action'=>'edit']); } // 接收参数 $id = request('id',0); // 获取菜单 // 如果是超管 if( in_array(admin('uid'), explode(',', config('administrator')))){ // 获取菜单 $menu = DB::table('menu')->orderBy('sort_order')->get()->toArray(); }else{ // 仅获取允许的菜单 $menu = DB::table('menu')->join('auth_rule','menu.id','=','auth_rule.menu_id')->whereIn('auth_rule.group_id',admin('group_id'))->orderBy('sort_order')->get(['menu.*'])->toArray(); } // 获取规则 $rules = DB::table('auth_group')->select('rules')->find($id); // 树形 $menu = array_sort(list_to_tree($menu,'id','pid','child',0),'module',SORT_ASC); // 权限菜单 $this->assign('access_menu',$menu); // 规则 $this->assign('rules',$rules); // 加载模板 return $this->fetch(); } /** * 状态 * * */ public function set_status(Request $request){ // 验证参数 $request->scene('set_status')->validate(); // 接收参数 $id = request('id',0); $status = request('status',0); // 执行删除 $result = DB::table('auth_group')->where(['id'=>$id])->update(['status'=>$status]); // 错误告知 if( !$result ) return json_send(['code'=>'error','msg'=>'操作失败','path'=>'']); // 结果 return json_send(['code'=>'success','msg'=>'操作成功','path'=>'']); } } ?>