employeeRule($data,false); if(!$status) return [$status,$msg]; $model = new Employee(); $model = $model->where('id',$data['id'])->first(); $model->id_card = $data['id_card']??''; $model->number = $data['number'] ; $model->mobile = $data['mobile']; $model->emp_name = $data['emp_name']; $model->is_admin = $data['is_admin']; if($model->is_admin == 1){ $model->account = $data['account']; if($data['password'] !== '********'){ $model->password = Hash::make($data['password']); } } $model->save(); return [true,'保存成功!']; } public function employeeAdd($data,$user){ list($status,$msg) = $this->employeeRule($data); if(!$status) return [$status,$msg]; $model = new Employee(); $model->id_card = $data['id_card']??''; $model->number = $data['number'] ; $model->mobile = $data['mobile']; $model->emp_name = $data['emp_name']; $model->state = 1; $model->crt_id = $user['id']; $model->is_admin = $data['is_admin']; if($model->is_admin == 1){ $model->account = $data['account']; $model->password = Hash::make($data['password']); } $model->save(); return [true,'保存成功!']; } public function employeeDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Employee::where('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function employeeList($data){ $list = Employee::where('del_time',0)->select('id_card','emp_name','mobile','crt_time','account','is_admin','upd_time','id')->orderBy('id','desc'); $list = $this->limit($list,'',$data); return [200,$list]; } public function employeeRule($data,$is_add = true){ if($this->isEmpty($data,'number')) return [false,'工号不存在!']; if($this->isEmpty($data,'mobile')) return [false,'手机号不存在!']; if($this->isEmpty($data,'emp_name')) return [false,'姓名不存在!']; if(! $is_add){ if($this->isEmpty($data,'id')) return [false,'ID不能为空!']; $bool = Employee::where('number',$data['number']) ->where('id','<>',$data['id']) ->where('del_time',0)->exists(); $bool_account = Employee::where('account',$data['account']) ->where('id','<>',$data['id']) ->where('del_time',0)->exists(); }else{ $bool = Employee::where('number',$data['number']) ->where('del_time',0)->exists(); $bool_account = Employee::where('account',$data['account']) ->where('del_time',0)->exists(); } if($bool) return [false,'工号已存在!']; if($bool_account) return [false,'账号已存在!']; return [true,'']; } public function roleEdit($data){ list($status,$msg) = $this->roleRule($data); if(!$status) return [$status,$msg]; $first = Role::where('title',$data['title'])->where('id','<>',$data['id'])->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; $model = new Role(); $model = $model->where('id',$data['id'])->first(); $model->title = $data['title']; $model->save(); return [true,'保存成功!']; } public function roleAdd($data,$user){ // if($this->isEmpty($data,'title')) return [201,'名称不存在!']; list($status,$msg) = $this->roleRule($data); if(!$status) return [$status,$msg]; $first = SysMenu::where('title',$data['title'])->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; $model = new Role(); $model->title = $data['title'] ; $model->save(); return [true,'保存成功!']; } public function roleDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Role::where('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function roleList($data){ $list = Role::where('del_time',0)->select('title','title','crt_time','id','upd_time')->orderBy('id','desc'); $list = $this->limit($list,'',$data); return [200,$list]; } public function roleRule($data){ if($this->isEmpty($data,'title')) return [false,'名称不存在!']; return [true,'']; } public function departEdit($data){ list($status,$msg) = $this->departRule($data); if(!$status) return [$status,$msg]; $first = Depart::where('title',$data['title'])->where('id','<>',$data['id'])->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; $model = new Depart(); $model = $model->where('id',$data['id'])->first(); $model->title = $data['title']; $model->code = $data['code']??''; $model->save(); return [true,'保存成功!']; } public function departAdd($data,$user){ // if($this->isEmpty($data,'title')) return [201,'名称不存在!']; list($status,$msg) = $this->departRule($data); if(!$status) return [$status,$msg]; $first = Depart::where('title',$data['title'])->where('id','<>',$data['id'])->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; $model = new Depart(); $model->title = $data['title'] ; $model->code = $data['code'] ?? '' ; $model->save(); return [true,'保存成功!']; } public function departDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Depart::where('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function departList($data){ $list = Depart::where('del_time',0)->select('title','crt_time','id','upd_time','code')->orderBy('id','desc'); $list = $this->limit($list,'',$data); return [200,$list]; } public function departRule($data){ if($this->isEmpty($data,'title')) return [false,'名称不存在!']; return [true,'']; } public function teamEdit($data){ list($status,$msg) = $this->teamRule($data,false); if(!$status) return [$status,$msg]; $model = new Team(); $model = $model->where('id',$data['id'])->first(); $model->title = $data['title']; $model->code = $data['code']; $model->save(); return [true,'保存成功!']; } public function teamAdd($data,$user){ list($status,$msg) = $this->teamRule($data); if(!$status) return [$status,$msg]; $model = new Team(); $model->title = $data['title'] ; $model->code = $data['code']; $model->save(); return [true,'保存成功!']; } public function teamDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Team::where('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function teamList($data){ $list = Team::where('del_time',0)->select('title','id','crt_time','upd_time','code')->orderBy('id','desc'); $list = $this->limit($list,'',$data); return [200,$list]; } public function teamRule($data,$is_add = true){ if($this->isEmpty($data,'title')) return [false,'名称不存在!']; if($this->isEmpty($data,'code')) return [false,'编码不存在']; $model = Team::where('title',$data['title']) ->where('code',$data['code']) ->where('del_time',0); if(! $is_add){ if($this->isEmpty($data,'id')) return [false,'ID不能为空']; $model->where('id','<>',$data['id']); } $bool = $model->exists(); if($bool) return [false,'名称和编码已存在!']; return [true,'']; } public function employeeRole($data){ $role_ids = []; $employee_ids = []; foreach ($data as $v){ if(isset($v['role_id'])){ if(!in_array($v['role_id'],$role_ids)){ $role_ids[] = $v['role_id']; } } if(isset($v['employee_id'])){ if(!in_array($v['employee_id'],$employee_ids)){ $employee_ids[] = $v['employee_id']; } } } EmployeeMenuPermission::wherein('role_id',$role_ids)->delete(); EmployeeMenuPermission::wherein('employee_id',$employee_ids)->delete(); EmployeeMenuPermission::insert($data); return [200,'保存成功!']; } public function employeeDepart($data){ if($this->isEmpty($data,'insert')) return [false,'数据不能为空!']; DB::beginTransaction(); try { if($data['type'] == 1){ EmployeeDepartPermission::whereIn('depart_id',$data['insert']['depart_id'])->delete(); }else{ EmployeeDepartPermission::whereIn('employee_id',$data['insert']['employee_id'])->delete(); } $insert = []; foreach ($data['insert']['depart_id'] as $t){ foreach ($data['insert']['employee_id'] as $e){ $insert[] = [ 'depart_id' => $t, 'employee_id' => $e ]; } } EmployeeDepartPermission::insert($insert); DB::commit(); }catch (\Throwable $exception){ DB::rollBack(); return [false,$exception->getMessage()]; } return [true,'保存成功!']; } public function employeeTeam($data){ if($this->isEmpty($data,'insert')) return [false,'数据不能为空!']; DB::beginTransaction(); try { if($data['type'] == 1){ EmployeeTeamPermission::whereIn('team_id',$data['insert']['team_id'])->delete(); }else{ EmployeeTeamPermission::whereIn('employee_id',$data['insert']['employee_id'])->delete(); } $insert = []; foreach ($data['insert']['team_id'] as $t){ foreach ($data['insert']['employee_id'] as $e){ $insert[] = [ 'team_id' => $t, 'employee_id' => $e ]; } } EmployeeTeamPermission::insert($insert); DB::commit(); }catch (\Throwable $exception){ DB::rollBack(); return [false,$exception->getMessage()]; } return [true,'保存成功!']; } public function loginRule($data){ if($this->isEmpty($data,'account')) return [false,'账号不能为空!']; if($this->isEmpty($data,'password')) return [false,'密码不存在!']; $res = Employee::where('del_time',0) ->where('account', $data['account']) ->get()->toArray(); if(empty($res)) return [false,'账号不存在或已被删除!']; $res = reset($res); if(! Hash::check($data['password'], $res['password'])) return [false,'密码错误!']; if($res['is_admin'] != Employee::IS_ADMIN) return [false,'该账号不能登录!']; if($res['state'] == Employee::NOT_USE) return [false,'账号停用!']; return [true, ['id'=>$res['id'], 'name'=>$res['emp_name'], 'account' => $res['account']]]; } public static function checkUser($userId){ $res = Employee::where('id', $userId) ->where('del_time',0) ->where('is_admin',Employee::IS_ADMIN) ->where('state',Employee::USE)->get()->first(); if(empty($res)) return [false, '该账号无法登录,请联系管理员!']; return [true, $res]; } //获取登录账号的角色 public static function getPersonRole($employee_id){ if(empty($employee_id)) return []; $role = EmployeeRole::where('del_time',0) ->where('employee_id',$employee_id) ->select('role_id') ->get()->toArray(); //组织 $role_id = array_column($role,'role_id'); asort($role_id); $role_id = array_values($role_id); return $role_id; } //获取登录账号的权限部门 public static function getPersonDepart($employee_id){ if(empty($employee_id)) return []; //admin账号 if($employee_id == Employee::SPECIAL_ADMIN) return [Depart::RULE_DEPART]; //操作人员直接绑定部门 $employee_manager_depart = EmployeeManagerDepart::where('del_time',0) ->where('employee_id',$employee_id) ->select('depart_id') ->get()->toArray(); //操作人员绑定角色 $employee_role = EmployeeRole::from('employee_role as a') ->leftJoin('role_depart as b','b.role_id','a.role_id') ->select('b.depart_id','b.role_id') ->where('a.del_time',0) ->where('b.del_time',0) ->where('a.employee_id',$employee_id) ->get()->toArray(); return array_filter(array_merge_recursive(array_column($employee_manager_depart,'depart_id'),array_column($employee_role,'depart_id'))); } //人员直接绑定部门 public function employeeManagerDepart($data,$user){ if($user['id'] != Employee::SPECIAL_ADMIN) return [false,'非ADMIN账号不能操作']; if($this->isEmpty($data,'employee_id')) return [false,'请选择操作人员']; if($this->isEmpty($data,'depart_id')) return [false,'请选择部门']; EmployeeManagerDepart::where('employee_id',$data['employee_id'])->update([ 'del_time' => time() ]); $insert = []; foreach ($data['depart_id'] as $value){ $insert[] = [ 'employee_id' => $data['employee_id'], 'depart_id' => $value, 'crt_time' => time(), 'upd_time' => time(), ]; } EmployeeManagerDepart::insert($insert); return [true,'']; } }