[''], 'allow'=>['index','groupauth','upgroupauth','getgroupauth','groupauthid'] ]; Hook::listen('check_auth',$action); $request = Request::instance(); $a = strtolower($request->action()); if (!in_array($a, $action['permission'])) { parent::_initialize(); } $m = $this->m; $c = $this->c; $a = $this->a; } public function index() { $ruleModel = model('Rule'); $param = $this->param; $data = $ruleModel->getDataList($param); return resultArray(['data' => $data]); } /** * 新建规则 * @param * @return */ public function save() { $ruleModel = model('Rule'); $param = $this->param; $data = $ruleModel->createData($param); if (!$data) { return resultArray(['error' => $ruleModel->getError()]); } return resultArray(['data' => '添加成功']); } /** * 编辑规则 * @param * @return */ public function update() { $ruleModel = model('Rule'); $param = $this->param; $data = $ruleModel->updateDataById($param, $param['id']); if (!$data) { return resultArray(['error' => $ruleModel->getError()]); } return resultArray(['data' => '编辑成功']); } /** * 配置角色查看范围列表 * @author zjf */ public function groupauth() { $param = $this->param; $data = ['0' => ['name' => '系统管理角色','pid' => 1],'1' => ['name' => '办公管理角色','pid' => 6],'2' => ['name' => '客户管理角色','pid' => 2],'3' => ['name' => '项目管理角色','pid' => '9']]; $list = db('admin_group')->field('id, pid, title')->select(); $authList = db('admin_group_auth')->where('group_id', $param['group_id'])->column('auth_group_id'); foreach ($data as $key => $value) { foreach ($list as $k => $v) { $v['is_true'] = in_array($v['id'], $authList) ? 1 : 0; if($v['pid'] == $value['pid']){ $data[$key]['item'][] = $v; } } } return resultArray(['data' => $data]); } /** * 配置角色查看范围列表 * @author zjf */ public function groupauthid() { $param = $this->param; $authList = db('admin_group_auth')->where('group_id', $param['group_id'])->column('auth_group_id'); return resultArray(['data' => array_map('intval', $authList)]); } /** * 编辑配置角色查看范围 */ public function upgroupauth() { $param = $this->param; $group_id = $param['group_id']; $auth_group_id = $param['auth_group_id']; $data = []; foreach ($auth_group_id as $key => $value) { $data[] = [ 'group_id' => $param['group_id'], 'auth_group_id' => $value ]; } // 启动事务 Db::startTrans(); try{ db('admin_group_auth')->where('group_id', $param['group_id'])->delete(); db('admin_group_auth')->insertAll($data); // 提交事务 Db::commit(); return resultArray(['data' => '编辑成功']); } catch (\Exception $e) { // 回滚事务 Db::rollback(); return resultArray(['data' => '编辑失败']); } } /** * 配置角色查看范围列表 * @author zjf */ public function getgroupauth() { $userInfo = $this->userInfo; $userId = $userInfo['id']; $groupIds = db('admin_access')->where('user_id', $userId)->column('group_id'); $rules = db('admin_group')->where('id', 'in', $groupIds)->column('rules'); $arr = []; foreach ($rules as $key => $value) { if($arr){ $arr = array_merge(explode(",", trim($value, ",")), $arr); }else{ $arr = explode(",", trim($value, ",")); } } $data = ['0' => ['name' => '系统管理角色','pid' => 1],'1' => ['name' => '办公管理角色','pid' => 6],'2' => ['name' => '客户管理角色','pid' => 2],'3' => ['name' => '项目管理角色','pid' => '9']]; # 角色权限查看 配置范围对应id $rule_authority_id = db('admin_rule')->where(['title' => '角色权限设置', 'name' => 'update'])->value('id'); if(!in_array($rule_authority_id, $arr) && $userId != 1){ $auth_group_ids = db('admin_group_auth')->where('group_id', 'in', $groupIds)->column('auth_group_id'); $list = db('admin_group')->where('id', 'in', $auth_group_ids)->select(); $arrData = []; foreach ($data as $key => $value) { $item = []; foreach ($list as $k => $v) { if($v['pid'] == $value['pid']){ $item[] = $v; } } $items = []; if(!empty($item)){ $items = [ 'name' => $value['name'], 'pid' => $value['pid'], 'list' => $item, ]; $arrData[] = $items; } } return resultArray(['data' => $arrData]); }else{ $list = db('admin_group')->select(); foreach ($data as $key => $value) { foreach ($list as $k => $v) { if($v['pid'] == $value['pid']){ $data[$key]['list'][] = $v; } } } return resultArray(['data' => $data]); } } }