model= new \app\bug\model\WorkRole(); } public function create(){ $param = $this->request->param(["role_name"=>"","companyNo"=>"","level"=>"","work_id"=>"","belong"=>"","action"=>[]],"post","trim"); $valid=Validate::rule([ "role_name|角色名称"=>"require|max:255|unique:\app\bug\model\WorkRole,role_name^companyNo^belong", "companyNo|业务公司"=>"max:255", "level|等级"=>"require|number|in:1,2,3,4", "work_id|岗位模板id"=>"require|number", "action|角色权限集合"=>"require|array" ]); if($valid->check($param)==false) return error($valid->getError()); if($param['level']!=3&& $param['companyNo']=="")return error('业务公司不能为空'); $template = \app\bug\model\Work::with(["workTemplate"])->findOrEmpty($param['work_id']); if($template->isEmpty()) return error("岗位模板不存在"); if($template->status==0)return error('岗位模板已禁用'); if(empty($template->action??[]))return error('岗位模板权限不能为空'); if(empty(array_diff($param['action'],$template->action))==false)return error('选择权限超出模板权限范围'); $data=[ "role_name"=>$param['role_name'], "companyNo"=>$param['companyNo'], "work_id"=>$param['work_id'], "level"=>$param['level'], "belong"=>$template->belong, "action"=>$param["action"], "process"=>[], "apply_id"=>$this->uid, "apply_name"=>$this->uname, ]; $add= $this->model->save($data); return $add ? success('岗位角色创建成功'):error('岗位角色创建失败'); } public function save(){ $param = $this->request->param(["id"=>"",'role_name'=>'',"level"=>"",'companyNo'=>'',"belong"=>"",'work_id'=>'','action'=>[]],'post','trim'); $valid=Validate::rule([ 'id|岗位角色id'=>'require|number|gt:0', 'role_name|角色名称'=>'require|max:255|unique:\app\bug\model\WorkRole,role_name^companyNo^belong', 'companyNo|业务公司'=>'max:255', 'level|等级'=>'require|number|in:1,2,3,4', 'work_id|岗位模板id'=>'require|number', 'action|角色权限集合'=>'require|array' ]); if($valid->check($param)==false) return error($valid->getError()); $info = $this->model->findOrEmpty($param['id']); if($param['level']!=3&& $param['companyNo']=='')return error('业务公司不能为空'); if($info->isEmpty()) return error('岗位角色不存在'); $template = \app\bug\model\Work::with(['workTemplate'])->findOrEmpty($param['work_id']); if($template->isEmpty()) return error('岗位模板不存在'); if($template->status==0)return error('岗位模板已禁用'); if(empty($template->action??[]))return error('岗位模板权限不能为空'); if(empty(array_diff($param['action'],$template->action))==false)return error('选择权限超出模板权限范围'); // $user = WorkUser::where(['role_id'=>$param['id'],"status"=>[1,2]])->findOrEmpty(); // if($user->isEmpty()==false)return error('岗位角色有账户正在使用中无法修改'); $info->role_name= $param['role_name']; $info->companyNo= $param['companyNo']; $info->level= $param['level']; $info->work_id= $param['work_id']; $info->belong= $template->belong; $info->action= $param['action']; $info->status= 0; $add= $info->save(); if($add==false)return error('岗位角色修改失败'); event('role_sync',['info_id'=>$info->id,'type'=>'off']); return success('岗位角色修改成功'); } public function info(){ $id = $this->request->post("id/d"); $info = $this->model->findOrEmpty($id); if($info->isEmpty()) return error('岗位角色不存在'); $info->actionInfo= (new WorkAction())->GetTreeActionByIdArr($info->action,$info->belong); return success('获取成功',$info); } public function status(){ $param = $this->request->param(['id'=>'','status'=>''],'post','trim'); $valid = Validate::rule([ 'id|账户角色ID'=>'require|number|gt:0', 'status|状态'=>'require|number|in:0,1' ]); if($valid->check($param)==false) return error($valid->getError()); $info = $this->model->with(['companyInfo','workInfo'])->findOrEmpty($param['id']); if($info->isEmpty())return error('岗位角色信息不存在'); $info->status=$param['status']; $add = $info->save(); $messg= \app\bug\model\WorkRole::$statusCn[$param['status']]; if($add==false)return error("岗位角色{$messg}失败"); event('role_sync',['info_id'=>$info->id,'type'=>$param['status']==1?"on":'off']); return success("岗位角色{$messg}成功"); } public function delete(){ $id = $this->request->post('id/d'); $info = $this->model->findOrEmpty($id); if($info->isEmpty()) return error('岗位角色不存在'); $user = WorkUser::where(["role_id"=>$id])->findOrEmpty(); if($user->isEmpty()==false)return error('岗位角色有账户正在使用无法删除'); $delete = $info->delete(); if($delete==false)return error('删除失败'); event('role_sync',["info_id"=>$id,"type"=>"delete"]); return success('删除成功'); } public function list(){ $param = $this->request->param(['role_name'=>'','companyNo'=>'','belong'=>'','level'=>'','work_id'=>'', 'status'=>'','page'=>1,"size"=>15],'post','trim'); $where=[]; if($param['companyNo']!='')$where[]=['companyNo','=',$param['companyNo']]; if($param['belong']!='')$where[]=['belong','=',$param['belong']]; if($param['level']!='')$where[]=['level','=',$param['level']]; if($param['status']!='')$where[]=['status','=',$param['status']]; if($param['role_name']!='')$where[]=['role_name','like',"%{$param['role_name']}%"]; if($param['work_id']!='')$where[]=['work_id','=',$param['work_id']]; $list =$this->model->with(['companyInfo','workInfo'])->where($where)->order('id desc')->paginate(['list_rows'=>$param['size'], 'page'=>$param['page']]); foreach ($list->items() as &$item){ $item["usedNum"] = WorkUser::where(['role_id'=>$item->id])->count(); } return success('获取成功',['list'=>$list->items(),'count'=>$list->total()]); } public function WorkRoleCreate(){ $param=$this->request->param([ "account_id"=>"", "role_id"=>"", "companyNo"=>"", ],"post","trim"); $valid = Validate::rule([ "account_id|账户ID"=>"require|number|gt:0", "role_id|岗位角色Id"=>"require|number|gt:0", "companyNo|业务公司"=>"require|max:255", ]); if($valid->check($param)==false) return error($valid->getError()); $userinfo = Account::with(["userInfo"])->where(["is_del"=>0])->findOrEmpty($param['account_id']); if($userinfo->isEmpty())return error("用户信息不存在"); $roleInfo = $this->model->findOrEmpty($param['role_id']); if($roleInfo->isEmpty())return error('角色信息不存在'); $data=[ "account_id"=>$param['account_id'], "role_id" => $param['role_id'], "companyNo" => $param['companyNo'], 'apply_id'=>$this->uid, 'apply_name'=>$this->uname, ]; $add =WorkUser::create($data); return $add ? success('账户角色设置成功'):error('账户角色设置失败'); } public function WorkRoleSave(){ $param=$this->request->param(['id'=>'',"account_id"=>"","companyNo"=>"",'role_id'=>''],'post','trim'); $valid = Validate::rule([ 'id|账户角色ID'=>'require|number|gt:0', 'account_id|账户ID'=>'require|number|gt:0', 'role_id|岗位角色Id'=>'require|number|gt:0', 'companyNo|业务公司'=>'require|max:255', ]); if($valid->check($param)==false) return error($valid->getError()); $info = WorkUser::where(["id"=>$param['id']])->findOrEmpty(); if($info->isEmpty())return error('账户角色信息不存在'); if($info->status!=0)return error('账户角色状态不可修改'); $userinfo = Account::with(['userInfo'])->where(['is_del'=>0])->findOrEmpty($param['account_id']); if($userinfo->isEmpty())return error('用户信息不存在'); $roleInfo = $this->model->findOrEmpty($param['role_id']); if($roleInfo->isEmpty())return error('角色信息不存在'); $info->account_id=$param['account_id']; $info->role_id=$param['role_id']; $info->companyNo=$param['companyNo']; $add = $info->save(); return $add ? success('账户角色设置成功'):error('账户角色设置失败'); } public function WorkRoleStatus(){ $param=$this->request->param(['id'=>'','status'=>''],'post','trim'); $valid = Validate::rule([ 'id|账户角色ID'=>'require|number|gt:0', 'status|状态'=>'require|number|in:0,1,4' ]); if($valid->check($param)==false) return error($valid->getError()); $info = WorkUser::where(['id'=>$param['id']])->findOrEmpty(); if($info->isEmpty())return error('账户角色信息不存在'); $info->status=$param['status']; $add = $info->save(); $messg= WorkUser::$statusCn[$param['status']]; if($add==false)return error("账户角色{$messg}失败"); event("user_sync",["info_id"=>$info->id,"type"=>$param['status']==1?"on":'off']); return success("账户角色{$messg}成功"); } public function WorkRoleInfo(){ $id=$this->request->post("id/d"); $info = WorkUser::with(['account',"workRole"])->where(['id'=>$id])->findOrEmpty(); if($info->isEmpty())return error('账户角色信息不存在'); $info->statusCn= WorkUser::$statusCn[$info->status]; return success("获取成功",$info); } public function WorkRoleInfoByCondition(){ $param=$this->request->param(["companyNo"=>"","belong"=>"","account_id"=>""],"post","trim"); $valid=Validate::rule([ "companyNo|业务公司"=>"require|max:255", "belong|系统归属"=>"require|number|in:1,2,3", "account_id|账户id"=>"require|number|gt:0", ]); if($valid->check($param)==false)return error($valid->getError()); $info = WorkUser::withJoin(['workRole'],"left") ->where([["work_user.companyNo","=",$param['companyNo']],["belong","=",$param["belong"]],['account_id','=', $param['account_id']]]) ->findOrEmpty(); if($info->isEmpty())return error('账户角色信息不存在'); $info->statusCn= WorkUser::$statusCn[$info->status]; return success('获取成功',$info); } public function WorkRoleDelete(){ $id=$this->request->post('id/d'); $info = WorkUser::where(['id'=>$id])->findOrEmpty(); if($info->isEmpty())return error('账户角色信息不存在'); if($info->status==1 || $info->status==2 )return error('账户角色状态不可删除'); $del = $info->delete(); if($del==false)return error('账户角色删除失败'); event("user_sync",["info_id"=>$id,"type"=>'del']); return success('删除成功'); } public function WorkRoleList(){ $param = $this->request->param(['companyNo'=>'','status'=>'','level'=>'','apply_id'=>'', 'belong'=>1,'account_id'=>'','page'=>1,'size'=>15],'post','trim'); $where=[["a.is_del","=",0]]; $workWhere=[['work_user.status','in',[1,2]]]; if($param['companyNo']!='')$where[]=['companyCode','=',$param['companyNo']]; if($param['level']!='')$where[]=['level','=',$param['level']]; if($param['account_id']!='')$where[]=['a.id','=',$param['account_id']]; if($param['belong']!=''){ $workWhere[]=["belong","=",$param['belong']]; } if($param['apply_id']!=''){ $workWhere[]=['workUser.apply_id','=',$param['apply_id']]; } $uidArr = WorkUser::withJoin(['workRole'],"left")->where($workWhere)->column('account_id'); if($param['status']!==''){ if($param['status']==1){ $where[]=['a.id','in',$uidArr]; }else{ $where[]=['a.id','not in',$uidArr]; } } $list =Account::alias("a") ->leftJoin("account_company b","a.id=b.account_id and b.is_del=0") ->where($where) ->field("b.id,a.username,a.status,a.level,a.source,b.account_id,b.companyCode,b.companyName,b.company_type,b.is_main,a.addtime,a.updatetime") ->order('b.id desc') ->paginate(['list_rows'=>$param['size'],'page'=>$param['page']]); foreach ($list->items() as &$item){ $uidArr = WorkUser::withJoin(['workRole'],'left') ->where(['account_id'=>$item['account_id'],'work_user.companyNo'=>$item['companyCode'],"belong"=>$param['belong']]) ->findOrEmpty(); $userinfo = Account::with(['userInfo',"accountItem"=>["itemName"]])->where(['is_del'=>0]) ->findOrEmpty($item['account_id']); $item['nickname'] =$userinfo->nickname??''; $item['user_mobile'] =$userinfo->user_mobile??''; $item['openId'] =$userinfo->openId??''; $item['field_deny'] =$userinfo->field_deny??[]; $item['depart_name']=$userinfo->depart_name??''; $item['itemid']=$userinfo->itemid??0; $item['depart_link']=$userinfo->depart_link??[]; $item['position']=$userinfo->position??''; $item['role_name'] =''; $item['user_role_id'] =0; $item['role_status'] =0; $item['apply_name'] = ''; $item['usedNum']=0; if($uidArr->isEmpty()==false){ $item['role_name'] = $uidArr->role_name??''; $item['role_status'] = $uidArr->status??0; $item['user_role_id'] =$uidArr->id; $item['apply_name'] = $uidArr->apply_name??''; $item['usedNum'] = WorkUser::where(['role_id'=>$uidArr->role_id])->count(); } } return success('获取成功',['list'=>$list->items(),'count'=>$list->total()]); } }