input('id/d',0), 'name' => input('name','','trim'), 'code' => input('code','','trim'), 'content' => input('content','','trim'), 'org_id' => input('orgId/d',0), 'type' => 0, 'enable' => 1 ]; $result = validate('Roles')->check($data,[],''); if(true !== $result){ HelpHander::error(validate('Roles')->getError()); } $id = $data['id']; unset($data['id']); if($id > 0){ $ret = $this->allowField(true)->save($data,['id'=>$id]); }else{ $ret = $this->allowField(true)->save($data); } if(!$ret){ HelpHander::error('操作失败'); } return true; } public function info($id){ $info = $this->where('id',$id)->where('del',0)->find(); if(!$info){ HelpHander::error('数据不存在'); } return $info->toArray(); } // 创建组织初始化角色 public function addInitRoles($orgId){ $data = [ 'org_id' => $orgId, 'type' => 3, 'name' => '初始化角色', 'content' => '默认角色', 'code' => 'mr'.$orgId, 'del' => 0, 'enable' => 1 ]; $ret = $this->allowField(true)->save($data); return $ret?$this->id:0; } public function lists($page,$size,$name,$code){ if($name != ''){ $map[] = ['name','like','%'.$name.'%']; } if($code != ''){ $map[] = ['code','like','%'.$code.'%']; } $map[] = ['del','=',0]; $map[] = ['enable','=',1]; $map[] = ['type','=',0]; $lists = $this ->where($map) ->page($page,$size) ->order('id desc') ->select(); $total = $this->where($map)->count(); $data = [ 'total' => $total, 'list' => $lists?$lists->toArray():[] ]; return $data; } public function del($id){ $ret = $this->where('id',$id)->setField('del',1); if(!$ret){ HelpHander::error('删除失败'); } return true; } public function queryCommonRoles(){ $map[] = ['del','=',0]; $map[] = ['enable','=',1]; $map[] = ['org_id','=',0]; $lists = $this ->where($map) ->order('id asc') ->select(); return $lists?$lists->toArray():[]; } public function queryUserRoles($page,$size,$name='',$code='',$phone='',$depId=0,$jobId=0,$orgId=0){ $map[] = ['u.del','=',0]; if($name != ''){ $map[] = ['ui.name','like','%'.$name.'%']; } if($code != ''){ $map[] = ['u.code','like','%'.$code.'%']; } if($phone != ''){ $map[] = ['u.phone','like','%'.$phone.'%']; } if($jobId > 0){ $map[] = ['uj.job_id','=',$jobId]; } if($depId > 0){ $jobIds = model('Dep')->getJobByDep($depId); if($jobIds){ $map[] = ['uj.job_id','in',$jobIds]; }else{ $map[] = ['uj.job_id','=',-1]; } } // 去除机构管理员 $orgusers = Db::name('user_roles') ->alias('ur') ->join('roles r','r.id = ur.roles_id') ->where('r.type',2) ->column('ur.user_id'); if($orgusers){ $map[] = ['u.id','not in',$orgusers]; } $map[] = ['r.type','=',3]; $map[] = ['u.del','=',0]; $lists = Db::name('user') ->alias('u') ->join('user_info ui','ui.user_id = u.id') ->join('user_job uj','uj.user_id = u.id','left') ->join('user_roles ur','ur.user_id = u.id') ->join('roles r','ur.roles_id = r.id') ->where($map) ->page($page,$size) ->field('u.id,ui.name,u.code,u.phone,u.enable') ->order('u.id desc') ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $lists[$k]['rolesList'] = $this->getUserRoles($v['id'],$orgId); } $total = Db::name('user') ->alias('u') ->join('user_info ui','ui.user_id = u.id') ->join('user_job uj','uj.user_id = u.id','left') ->join('user_roles ur','ur.user_id = u.id') ->join('roles r','ur.roles_id = r.id') ->where('u.del',0) ->group('u.id') ->where($map) ->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } // 获取用户当前组织下普通用户组 public function getUserRoles($userId,$orgId){ $list = Db::name('user_roles') ->alias('ur') ->join('roles r','r.id = ur.roles_id') ->where('r.del',0) ->where('r.type',0) ->where('r.org_id',$orgId) ->where('ur.user_id',$userId) ->field('r.*') ->select(); return $list?$list:[]; } public function saveUserRoles($uId,$orgId){ // 检查是否已加入组织 $ret = Db::name('user_roles') ->alias('ur') ->join('roles r','r.id = ur.roles_id') ->where('r.type',3) ->where('ur.user_id',$uId) ->where('r.org_id',$orgId) ->find(); if($ret){ HelpHander::error('已经加入本组织'); } // 获取当前组织的默认角色 $rolesId = Db::name('roles') ->where('type',3) ->where('org_id',$orgId) ->value('id'); if(!$rolesId){ HelpHander::error('参数错误'); } $ret = Db::name('user_roles')->insertGetId(['user_id'=>$uId,'roles_id'=>$rolesId]); if(!$ret){ HelpHander::error('操作失败'); } return true; } // 获取机构管理员列表 public function queryUserByRoles($page,$size,$account,$code,$oId){ if($account != ''){ $map[] = ['u.account','like','%'.$account.'%']; } if($code != ''){ $map[] = ['u.code','like','%'.$code.'%']; } if($oId > 0){ $map[] = ['r.org_id','=',$oId]; } $map[] = ['u.del','=',0]; $map[] = ['u.enable','=',1]; $map[] = ['r.type','=',2]; $lists = Db::name('user') ->alias('u') ->join('user_roles ur','ur.user_id = u.id') ->join('roles r','r.id = ur.roles_id') ->where($map) ->field('u.account,u.code,u.enable,r.org_id,r.name as roles_name,ur.user_id') ->page($page,$size) ->order('u.id desc') ->select(); $lists = $lists?$lists:[]; foreach ($lists as $k=>$v){ $lists[$k]['name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name'); $lists[$k]['org_name'] = Db::name('org')->where('id',$v['org_id'])->value('name'); } $total =Db::name('user') ->alias('u') ->join('user_roles ur','ur.user_id = u.id') ->join('roles r','r.id = ur.roles_id') ->where($map)->count(); $data = [ 'total' => $total, 'list' => $lists ]; return $data; } public function saveRules(){ $data = [ 'id' => input('id/d',0), 'rules' => input('rules','','trim'), 'appicons' => input('appicons','','trim') ]; if($data['id'] <= 0){ HelpHander::error('参数错误'); } $id = $data['id']; unset($data['id']); $ret = $this->allowField(true)->save($data,['id'=>$id]); if(!$ret){ HelpHander::error('操作失败'); } return true; } }