post(); $data['org_id'] = cur_org_id(); $result = validate('Roles')->check($data,[],''); if(true !== $result){ $this->error = validate('Roles')->getError(); return false; } $id = $data['id']; unset($data['id']); if($data['parent_id']!=9){//9是调度 $data['level'] = 2; } if($id > 0){ $ret = $this->allowField(true)->save($data,['id'=>$id]); }else{ $ret = $this->allowField(true)->save($data); } if(!$ret){ $this->error = '操作失败'; return false; } return true; } /** * 获取组织公共角色 * @param int $type 2=管理员 1=项目管理员 */ public function getCommonList($type=1){ $lists = Db::name('roles') ->where('del',0) ->where('enable',1) ->where('type',$type) ->where('org_id',0) ->select(); return $lists?$lists:[]; } /** * 获取组织的角色 * @param $orgId */ public function getList($type=0){//type==1 获取护工角色 $map = []; if($type >0){ $map[] = ['parent_id','=',11]; } $list =Db::name('roles') ->field('id,name as title') ->where('org_id',cur_org_id()) ->where('del',0) ->where($map) ->where('enable',1) ->select(); return $list; } // 获取角色有效权限 type 1=后台权限 2=app权限 public function getRolesAuths($id,$type=1){ if($type == 1){ $auths = db('roles')->where('id',$id)->value('auths'); $auths = $auths?explode(',',$auths):[]; if($auths){ $auths = Db::name('menu')->where('id','in',$auths)->where('del',0)->where('enable',1)->column('id'); } }else{ $auths = db('roles')->where('id',$id)->value('appauths'); $auths = $auths?explode(',',$auths):[]; if($auths){ $auths = Db::name('app_icon')->where('id','in',$auths)->where('del',0)->where('enable',1)->column('id'); } } return $auths?$auths:[]; } public function authSave(){ $id = input('rolesId/d',0); if($id <= 0){ $this->error = '参数错误'; return false; } $ids = input('ids/a',[]); $appids = input('appids',[]); $ids = array_filter($ids,'check_val_empty'); $appids = array_filter($appids,'check_val_empty'); $data = [ 'auths' => $ids?implode(',',$ids):'', 'appauths' => $appids?implode(',',$appids):'', ]; $ret = Db::name('roles')->where('id',$id)->update($data); if($ret === false){ $this->error = '参数错误'; return false; } return true; } // 根据公共角色获取某组织下的角色列表 public function getChildrenIds($id,$orgId){ $ids = Db::name('roles') ->where('parent_id',$id) ->where('org_id',$orgId) ->where('del',0) ->where('enable',1) ->column('id'); return $ids?$ids:[]; } /* * 获取某个组织下全部角色 * @param $orgId */ public function getRolesAll($orgId=0){ $list =Db::name('roles') ->field('id,name as title') ->where('org_id',$orgId) ->where('del',0) ->where('enable',1) ->select(); return $list; } /** * 获取APP模块某人的某项二级权限 * @param $userId * @param $auth 模块id * @return bool */ public function getAppAuth($userId,$auth){ $userRoles = Db::name('user_roles') ->alias('a') ->join('roles b','a.roles_id=b.id') ->where('a.user_id',$userId) ->value('b.appauths'); $userRoles = $userRoles?explode(',',$userRoles):[]; if($userRoles){ $modes = Db::name('app_icon')->where('id','in',$userRoles)->where('del',0)->where('enable',1)->column('mode'); if($modes && in_array($auth,$modes)){ return true; } } return false; } /** * 获取某组织某角色的所有下级角色 * @param $id * @param $orgId * @return array */ public function getRoleIds($id,$orgId){ $ids = Db::name('roles') ->where('parent_id',$id) ->where('org_id',$orgId) ->where('del',0) ->where('enable',1) ->column('id'); return $ids?$ids:[]; } // 检查某人是否有某项后台权限 public function checkUserAuths($userId,$auth){ $user = Db::name('user')->where('id',$userId)->where('enable',1)->where('del',0)->find(); if(!$user){ return false; } if($user['type'] == 1){ // 总公司人员默认有权限 return true; } $ainfo = Db::name('menu')->where('url',$auth)->where('enable',1)->where('del',0)->find(); if(!$ainfo){ // 没有查到权限,不验证 return true; } $rolesId = Db::name('user_roles')->where('user_id',$userId)->value('roles_id'); if(!$rolesId){ // 没有角色,默认无权限 return false; } $auths = db('roles')->where('id',$rolesId)->value('auths'); $auths = $auths?explode(',',$auths):[]; if($auths){ $auths = Db::name('menu')->where('id','in',$auths)->where('del',0)->where('enable',1)->column('id'); $auths = $auths?$auths:[]; } if(!$auths){ return false; } return in_array($ainfo['id'],$auths); } //查看有派单权限的人员 public function getDispatchOrder($mode,$orgId){ $map[]=['','exp',Db::raw("FIND_IN_SET($mode,work_type_mode)")]; // $map[] = ['parent_id','=',9]; $map[] = ['enable','=',1]; $map[] = ['del','=',0]; $map[] = ['org_id','=',$orgId]; $roles = Db::name('roles')->where($map) ->column('id'); $data = []; if(!empty($roles)){ $user = Db::name('user_roles') ->where('roles_id','in',$roles) ->column('user_id'); $data = $user; } return $data; } }