MemberInfoRepository = $MemberInfoRepository; $this->CategoryRepository = $CategoryRepository; $this->CategoryMajorRepository = $CategoryMajorRepository; $this->MemberRepository = $MemberRepository; $this->CategoryDistrictRepository = $CategoryDistrictRepository; $this->TaskService = $TaskService; $this->memberLogRepository = $memberLogRepository; $this->pmsRepository = $pmsRepository; $this->memberMsgtipRepository = $memberMsgtipRepository; $this->msgRepository = $msgRepository; $this->resumeRepository = $resumeRepository; $this->oauthRepository = $oauthRepository; $this->thirdloginRepository = $thirdloginRepository; $this->resumeService = $resumeService; } public function memberInfo($user) { $content = $this->MemberInfoRepository->getMemberInfo($user->id); return ['content'=>$content]; } public function updateInfo($date, $user) { if ($date['card_t_cn']==306) { if (!isCreditNo($date['id_card'])) { throw new ResponseException('身份证格式错误!'); } } if (isset($date['qq']) && !empty($date['qq'])) { if (!preg_match('/^\d*$/', $date['qq'])) { throw new ResponseException('qq号只能是数字!'); } } if (isset($date['weixin']) && !empty($date['weixin'])) { if (preg_match('/[\x7f-\xff]/', $date['weixin'])) { throw new ResponseException('微信号不能含有中文!'); } } $memberInfo = $this->MemberInfoRepository->getMemberInfo($user->id); if ($date['sex']==1) { $date['sex_cn'] = '男'; } else { $date['sex_cn'] = '女'; } if ($date['marriage']==1) { $date['marriage_cn'] = '未婚'; } elseif ($date['marriage']==2) { $date['marriage_cn'] = '已婚'; } else { $date['marriage_cn'] = '保密'; } $educationArr = $this->CategoryRepository->getCategory($date['education']); $date['education_cn'] = $educationArr['demand']; $experienceArr = $this->CategoryRepository->getCategory($date['experience']); $date['experience_cn'] = $experienceArr['demand']; if (!empty($date['major'])) { $majorArr = $this->CategoryMajorRepository->getCategoryMajor($date['major']); $date['major_cn'] = $majorArr['name']; } $residenseArr = explode(',', $date['residence']); $residenseArrId = []; foreach ($residenseArr as $key => $val) { $residenseArrId[] = explode('.', $val)[2] ? explode('.', $val)[2] : explode('.', $val)[1]; } $residenseRes = $this->CategoryDistrictRepository->getManydistrict($residenseArrId); $date['residence_cn'] = ''; foreach ($residenseRes as $key => $val) { $nm = $this->CategoryDistrictRepository->getCategoryDistrict($val->parent_id); $date['residence_cn'].=$nm->name.'-'.$val->name.'+'; } $date['residence_cn'] = rtrim($date['residence_cn'], '+'); $date['householdaddress_cn'] = ''; if (!empty($date['householdaddress'])) { $houseArr = explode(',', $date['householdaddress']); $houseArrId = []; foreach ($houseArr as $key => $val) { $houseArrId[] = explode('.', $val)[2] ? explode('.', $val)[2] : explode('.', $val)[1]; } $houseRes = $this->CategoryDistrictRepository->getManydistrict($houseArrId); foreach ($houseRes as $key => $val) { $nm = $this->CategoryDistrictRepository->getCategoryDistrict($val->parent_id); $date['householdaddress_cn'].=$nm->name.'-'.$val->name.'+'; } $date['householdaddress_cn'] = rtrim($date['householdaddress_cn'], '+'); } if ($date['card_t_cn']==306) { $card = strlen($date['id_card'])==15 ? ('19' . substr($date['id_card'], 6, 2)) : substr($date['id_card'], 6, 4); if ($date['birthday']!=$card) { throw new ResponseException('出生年月和身份证不符合!'); } } $resume = $this->resumeRepository->getResumes(['uid'=>$user->id]); $resume_id = array_column($resume->toArray(), 'id'); if(isset($date['display_name'])){ $resume_arr['display_name'] = $date['display_name']; } $resume_arr['fullname'] = $date['realname']; $resume_arr['sex'] = $date['sex']; $resume_arr['sex_cn'] = $date['sex_cn']; $resume_arr['birthdate'] = $date['birthday']; $resume_arr['residence'] = $date['residence_cn']; $resume_arr['height'] = $date['height']; $resume_arr['marriage'] = $date['marriage']; $resume_arr['marriage_cn'] = $date['marriage_cn']; $resume_arr['experience'] = $date['experience']; $resume_arr['experience_cn'] = $date['experience_cn']; $resume_arr['householdaddress'] = $date['householdaddress_cn']; $resume_arr['education'] = $date['education']; $resume_arr['education_cn'] = $date['education_cn']; $resume_arr['major'] = $date['major']; $resume_arr['major_cn'] = isset($date['major_cn']) ? $date['major_cn'] : ''; $resume_arr['telephone'] = $date['phone']; $resume_arr['email'] = $date['email']; $resume_arr['qq'] = $date['qq']; $resume_arr['weixin'] = $date['weixin']; $resume_arr['idcard'] = $date['id_card']; $member = $this->MemberRepository->getMemberById($user->id); $memData = []; if (!$member->mobile_audit) { $memData['mobile'] = $date['phone']; } if (!$member->email_audit) { $memData['email'] = $date['email']; } DB::beginTransaction(); if ($memData) { $this->MemberRepository->updateInfo($user->id, $memData); } if (!$memberInfo) { $date['uid'] = $user->id; $this->MemberInfoRepository->createInfo($date); } else { $this->MemberInfoRepository->updateInfo($date, $user->id); } $this->resumeRepository->updateAllResume($resume_id, $resume_arr); //通过学历判断人才类别前置操作 $this->resumeService->edu_mate($resume_arr['education'],$user->id); event_search_update(Resume::class, implode(',', $resume_id), 'update'); DB::commit(); if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2043,"")){ throw new \Exception("日志记失败!"); } return ['code'=>1,'info'=>$date]; } public function updateHead($image_data, $user) { $saveName = 'person/images/'.uniqid().'.jpg'; $data= base64_decode($image_data); if (!empty($data)) { $res = Storage::disk('public')->put($saveName, $data); if ($res) { $this->TaskService->doTask(5); DB::beginTransaction(); try { $info = MemberInfo::where(['uid'=>$user->id])->first(); MemberInfo::where(['uid'=>$user->id])->update(['images'=>$saveName,'photo'=>1,'photo_audit'=>1]); if (!$info->images) { $resInfo = Resume::where(['uid'=>$user->id])->get(); foreach ($resInfo as $key => $val) { if ($val->complete_percent+5<=100) { if ($val->complete_percent+5>=70 && $val->complete_percent+5<90) { Resume::where(['id'=>$val->id])->update(['complete_percent'=>$val->complete_percent+5,'level'=>2]); } elseif ($val->complete_percent+5>=90 && $val->complete_percent+5<=100) { Resume::where(['id'=>$val->id])->update(['complete_percent'=>$val->complete_percent+5,'level'=>1]); } else { Resume::where(['id'=>$val->id])->update(['complete_percent'=>$val->complete_percent+5,'level'=>0]); } } } } event_search_update(Resume::class, [['where','uid', $user->id]], 'update'); DB::commit(); if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2044,"")){ throw new \Exception("日志记失败!"); } return ['status'=>1,'info'=>'success','data'=>$saveName]; } catch (Exception $e) { DB::rollback(); return ['status'=>0,'info'=>'error']; } } else { return ['status'=>0,'info'=>'error']; } } else { return '请上传图片 '; } } public function memberSafe($user) { return $this->MemberInfoRepository->getMemberInfo($user->id); } public function unbind($user, $type) { if ($type=='qq') { $type = [1]; } elseif ($type=='weixin') { $type = [2,3,4]; }else{ throw new ResponseException('数据错误'); } return $this->thirdloginRepository->unBind($type, $user); } public function oauths() { return $this->oauthRepository->getOauth(); } public function qq($user, $type) { return $this->thirdloginRepository->checkBind($user, $type); } public function weixin($user, $type) { return $this->thirdloginRepository->checkBind($user, $type); } /** * 更新密码。 */ public function updatePassword($oldpassword, $password, $password1, $user) { $member = $this->MemberRepository->getMemberById($user->id); if (!Hash::check($oldpassword, $member->password)) { return ['status'=>0,'info'=>'原密码错误']; } if ($password!=$password1) { return ['status'=>0,'info'=>'俩次密码不一致']; } if (Hash::check($password, $member->password)) { return ['status'=>0,'info'=>'新密码不能与旧密码一致!']; } $res = $this->MemberRepository->updatePasswordById(bcrypt($password), $user->id); if ($res) { if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2045,"")){ throw new \Exception("日志记失败!"); } return ['status'=>1,'info'=>'修改成功']; } else { return ['status'=>0,'info'=>'修改失败']; } } public function mobileAuditCode($mobile) { $id = auth('web-member')->user()->id; DB::beginTransaction(); try { $this->MemberRepository->updateInfo($id, ['mobile'=>$mobile,'mobile_audit'=>1]); $this->MemberInfoRepository->updateInfo(['phone'=>$mobile], $id); DB::commit(); } catch (Exception $e) { DB::rollback(); return ['code'=>0,'points'=>0]; } $task = $this->TaskService->doTask(7); if ($task['code']==1) { return ['code'=>1,'points'=>$task['data']['points']]; } else { return ['code'=>1,'points'=>0]; } } public function updateUsername($username) { $id = auth('web-member')->user()->id; return $this->MemberRepository->updateInfo($id, ['username'=>$username]); } public function getMemberLog($user, $url) { $loginLog = $this->memberLogRepository->getMemberLog( $user->id, $user->utype, 1001 ); if(strpos($url->uri,'mobile')!==false){ $loginLog = $loginLog->toArray(); if ($loginLog['total']) { $list = []; foreach ($loginLog['data'] as $key => $val) { $t = strtotime(date('Y-m-d', strtotime($val['created_at']))); $list[$t][] = $val; } $loginLog['data'] = $list; } } return $loginLog; } public function pms($user) { $data[] = ['msgtouid','=',$user->id]; $data[] = ['utype','=',$user->utype]; if (request()->status) { switch (request()->status) { case 1: $data[] = ['new','=',1]; break; case 2: $data[] = ['new','=',2]; break; default: $data[] = ['new','=',1]; break; } } if (request()->settr) { switch (request()->settr) { case '3': $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-3 day"))]; break; case '7': $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-7 day"))]; break; case '15': $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-15 day"))]; break; default: $data[] = ['created_at' ,'>=' ,date('Y-m-d H:i:s', strtotime("-3 day"))]; break; } } $res = $this->pmsRepository->getPms($data); return $res; } public function checkPms($id,$user) { $res_m = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) { $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]); })->get()->toArray(); $array_id = array_column($res_m,'id'); if(!in_array($id,$array_id)){ return ['code'=>0,'info'=>(object)['message'=>'消息不存在']]; } $res = $this->pmsRepository->updateNewById($id, ['new'=>2]); if ($res) { return ['code'=>1,'info'=>$this->pmsRepository->getPmsById($id)]; } else { return ['code'=>0,'info'=>(object)['message'=>'数据异常,稍后再试!']]; } } public function sendAuthEmailHook($newEmail, $personal) { Cache::put($newEmail, $personal, 24*60); } /** * 邮箱验证 * @param $newEmail * @return bool */ public function verifyEmail($newEmail) { $personal=Cache::pull($newEmail, null); if ($personal) { DB::beginTransaction(); try { $this->MemberRepository->updateInfo($personal->id, ['email'=>$newEmail,'email_audit'=>1]); $this->MemberInfoRepository->updateInfo(['email'=>$newEmail], $personal->id); DB::commit(); } catch (Exception $e) { DB::rollback(); return false; } return true; } return false; } public function deletePms($arrId,$user) { if (empty($arrId)) { throw new ResponseException('请选择消息!'); } $res = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) { $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]); })->get()->toArray(); $array_id = array_column($res,'id'); $res_k = string_to_array(',',$arrId); foreach ($res_k as $key=>$val){ if(!in_array($val,$array_id)){ throw new ResponseException('消息不存在!', '', '400'); } } return $this->pmsRepository->deleteAll(string_to_array(',', $arrId)); } public function newPms($arrId, $user) { if (empty($arrId)) { throw new ResponseException('请选择消息!'); } $id = explode(',', $arrId); $res_m = Pms::where(['utype'=>$user->utype])->where(function ($query) use ($user) { $query->where(['msgfromuid'=>$user->id])->orWhere(['msgtouid'=>$user->id]); })->get()->toArray(); $array_id = array_column($res_m,'id'); foreach ($id as $key=>$val){ if(!in_array($val,$array_id)){ throw new ResponseException('消息不存在!'); } } $condition['uid'] = $user->id; $condition['utype'] = $user->utype; $count = $this->memberMsgtipRepository->getTipCount($condition); DB::beginTransaction(); try { $result = $this->pmsRepository->updateNew($id, ['msgtouid'=>$user->id, 'utype'=>$user->utype], ['new'=>2]); if ($count>=$result) { $this->memberMsgtipRepository->updateTip($condition, $result); } DB::commit(); return true; } catch (\Exception $e) { DB::rollback(); return false; } } public function msg($user) { $res = $this->msgRepository->msg($user->utype, $user->id); if ($res->total()) { foreach ($res as $key => $val) { $utype = explode(',', $val->result); foreach ($utype as $key1 => $val1) { $utype1 = explode(':', $val1); if ($utype1[0]==1) { $company = Company::where(['id'=>$utype1[1]])->select('companyname')->first(); $member = MemberInfo::where(['uid'=>$utype1[2]])->select('images')->first(); if ($company) { $res[$key]->companyName = $company->companyname; } else { $res[$key]->companyName = ''; } if ($member) { $res[$key]->images = $member->images; } else { $res[$key]->images = ''; } break; } else { $company = Company::where(['id'=>$utype1[2]])->select('companyname')->first(); $member = MemberInfo::where(['uid'=>$utype1[1]])->select('images')->first(); if ($company) { $res[$key]->companyName = $company->companyname; } else { $res[$key]->companyName = ''; } if ($member) { $res[$key]->images = $member->images; } else { $res[$key]->images = ''; } break; } } } } return $res; } public function mobileMsg($user) { return $this->msgRepository->mobileMsg($user->utype, $user->id); } public function mobileMsgShow($user, $parent_id) { $company = []; if ($user->utype == 1) { $res = $this->msgRepository->mobileMsgShows($parent_id); $msg = Msg::where(['parent_id'=>$parent_id, 'utype'=>2])->first(); if ($msg) { $company = MemberInfo::where('uid', $msg->from_uid)->first(); $company->to_uid = $msg->from_uid; $company->parent_id = $msg->parent_id; $company->resumes = Resume::where(['uid'=> $msg->from_uid,'def'=>1])->first(); } } else { $res = $this->msgRepository->mobileMsgShow($parent_id); $msg = Msg::where(['parent_id'=>$parent_id, 'utype'=>1])->first(); if ($msg) { $company = Company::findOrFail($msg->from_uid); $company->to_uid = $msg->from_uid; $company->parent_id = $msg->parent_id; } } foreach ($res as $key => $val){ if ($val->utype==1) { $res[$key]->company = Company::findOrFail($val->from_uid); } else { $res[$key]->memberInfo = MemberInfo::where('uid', $val->from_uid)->first(); } } return ['res'=>$res,'company'=>$company]; } public function msgSend($user, $input) { $data = []; $input['parent_id'] = array_get($input,'parent_id'); if (empty($input['parent_id'])) { throw new ResponseException('数据异常!'); } if (empty($input['to_uid'])) { throw new ResponseException('企业信息不存在!'); } if (empty($input['message'])) { throw new ResponseException('回复信息不能为空!'); } if (mb_strlen($input['message'], 'utf-8')>200) { throw new ResponseException('回复信息不能超过200个字。'); } $res_k = Msg::where(function ($query) use($user) { $query->where('from_uid',$user->id)->orWhere('to_uid',$user->id); })->get()->toArray(); $array_id = array_column($res_k,'parent_id'); if(!in_array($input['parent_id'],$array_id)){ throw new ResponseException('消息不存在!'); } $data['parent_id'] = $input['parent_id']; $data['utype'] = $user->utype; $data['from_uid'] = $user->id; $data['to_uid'] = $input['to_uid']; $data['message'] = $input['message']; $res = $this->msgRepository->msgSend($data); if ($res) { $company = Company::where(['id'=>$data['to_uid']])->select('companyname')->first(); if ($company) { $res->companyName = $company->companyname; } else { $res->companyName = ''; } } return $res; } public function msgDelete($input) { if (empty($input['parent_id'])) { throw new ResponseException('请选择要删除的咨询消息!'); } return $this->msgRepository->msgDelete($input['parent_id']); } public function feedbackCreate($input) { if(!$input['type'] || !$input['content'] || !$input['contact']){ throw new ResponseException('请把资料信息填写完整!'); } $input['audit'] = 0; $input['subsite_id'] = get_subsite_id(); return Feedback::create($input); } /** * 根据条件获取信息 * @param $where * @return mixed */ public function getInfo($where){ return $MemberInfo = $this->MemberInfoRepository->findMemberInfo($where); } public function isOwn($id,$user) { $info = $this->MemberInfoRepository->find($id); if(!$info) { throw new ResponseException('参数错误!'); } if($info->uid != $user->id) { throw new ResponseException('对不起,您只能操作自己的信息!'); } } }