categoryService = $categoryService; $this->smsService = $smsService; $this->registerService = $registerService; $this->authService = $authService; $this->memberRepository = $memberRepository; $this->memberInfoService = $memberInfoService; $this->resumeService = $resumeService; $this->educationService = $educationService; $this->resumeWorkService = $resumeWorkService; $this->articleCategoryService = $articleCategoryService; $this->httpClient=new Client([ 'http_errors' => false ]); } /** * 人才港首页 * @return array|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { return view('mobile.app.active.index'); } public function addInfo() { $user = auth('web-member')->user(); if(!$user){ $is_login = 0; }else{ $is_login = 1; } $district = $this->categoryService->getDefaultDistrict(); return view('mobile.app.active.resume_add', [ 'is_login'=>$is_login, 'user'=>$user, 'defaultCity'=>$district->defaultCity, 'disCity'=>$district->disCity, 'disHan'=>$district->disHan, 'wap_title'=>'信息登记' ]); } public function rcgCreate(PersonValidatorRequest $request) { //添加基础信息 $resume_res = $this->resumeService->activeResumeCreate($request->except(['add_tag','_token']), auth('web-member')->user()); if($resume_res['code'] == 1){ $data = request()->all(); $data['resume_id'] = $resume_res['info']; $data['id'] = $resume_res['info']; //添加教育信息 $resume_edu = $this->educationService->activeResumeEducationAdd($data, auth('web-member')->user()); //添加工作信息 $resume_work = $this->resumeWorkService->activeResumeWorkAdd($data, auth('web-member')->user()); //添加标签 $resume_tag = $this->resumeService->tagSave($data); //添加自我描述 $resume_specialty = $this->resumeService->updateSpecialty($data, auth('web-member')->user()); if ($resume_res['code']==1) { $this->authService->logout(); return $this->sendSuccessResponse(['id'=>$resume_res['info'],'tag'=>$request->add_tag]); } else { return $this->sendErrorResponse('更新简历失败', '', 400); } }else{ return $this->sendErrorResponse($resume_res['info'], '', 400); } } public function upload() { $res = $this->memberInfoService->updateHead(request()->pic1, auth('web-member')->user()); return response()->json($res); } public function quickReg(RegisterValidatorRequest $registerValidatorRequest) { if (!$this->smsService->checkAuthSms($registerValidatorRequest->mobile, Smser::TEMPLATE_AUTH_REGISTER, $registerValidatorRequest->mobile_vcode)) { return $this->sendErrorResponse("短信验证码不通过,请重新输入"); } $data = $registerValidatorRequest->all(); $member = $this->memberRepository->getMemberByAccount($data['mobile']); if(!$member){ $member = $this->registerService->registerPerson($data); }else{ $this->authService->login($member); } return $this->sendSuccessResponse(['msg'=>'注册/登录成功,请继续操作','reg_status'=>1]); } public function rcg() { return view('mobile.app.active.rcg'); } public function serviceCode() { return view('mobile.app.active.service_code'); } private function getPolicyCategory($pid){ $list = DB::table('policy_category')->where(array('parent_id'=>$pid,'deleted_at'=>null))->orderBy('category_order','desc')->orderBy('id','asc')->select("*")->get()->toArray(); if($list){ foreach ($list as $k => $v){ $subList = DB::table('policy_category')->where(array('parent_id'=>$v->id,'deleted_at'=>null))->orderBy('category_order','desc')->orderBy('id','asc')->select("*")->get()->toArray(); if($subList){ $list[$k]->children = $subList; $this->getPolicyCategory($v->id); } } } return $list; } public function chain(){ $list = $this->getPolicyCategory(30); $res = [ 'status' => 'ok', 'info' => '获取成功', 'data' => $list ]; echo json_encode($res); } public function getChainList(Request $request){ $id = $request->input('id'); $keyword = $request->input('keyword'); $page = $request->input('page'); $where = [ ['type_id', '=', intval($id)] ]; if(!empty($keyword)){ $map = ['title','like','%'.$keyword.'%']; array_push($where,$map); } $count = DB::table('policy')->where($where)->count(); $list = DB::table('policy')->where($where)->offset(($page-1)*20)->limit($page*20)->select("*")->get()->toArray(); $res['status'] = 'ok'; $res['msg'] = '查询成功'; $res['data'] = $list; $res['count'] = $count; echo json_encode($res); } public function getPolicyContent(Request $request){ $id = $request->input('id'); if(intval($id)){ $info = DB::table('policy')->where(array('id'=>intval($id)))->select("*")->first(); if($info){ $res['status'] = 'ok'; $res['msg'] = '查询成功'; $res['data'] = [ 'title' => $info->title, 'content' => $info->content, 'pid' => $info->type_id ]; }else{ $res['status'] = 'error'; $res['msg'] = '找不到该文章'; } }else{ $res['status'] = 'error'; $res['msg'] = '缺少参数'; } echo json_encode($res); } public function putAppointment(Request $request) { $res['status'] = ''; $res['msg'] = ''; $data['card'] = $request->input('card'); if(!$data['card']){ $res['status'] = 'error'; $res['msg'] = '身份证不能为空'; echo json_encode($res);die; } if (strlen($data['card']) == 18 && !$this->isValid($data['card'])) { $res['status'] = 'error'; $res['msg'] = '身份证格式不正确'; echo json_encode($res);die; } $data['username'] = $request->input('username'); if(!$data['username']){ $res['status'] = 'error'; $res['msg'] = '真实姓名不能为空'; echo json_encode($res);die; } $data['phone'] = $request->input('phone'); if(!$data['phone']){ $res['status'] = 'error'; $res['msg'] = '手机号码不能为空'; echo json_encode($res);die; } $data['service'] = $request->input('picker'); if(!$data['service']){ $res['status'] = 'error'; $res['msg'] = '服务事项不能为空'; echo json_encode($res);die; } $data['value'] = $request->input('value'); if(!$data['value']){ $res['status'] = 'error'; $res['msg'] = '服务事项不能为空'; echo json_encode($res);die; } $info = DB::table('talent')->where('card',$data['card'])->first(); if(!$info){ $ch = curl_init (); curl_setopt( $ch, CURLOPT_URL, "http://rc.jucai.gov.cn/api/dataInterface/findTalentArrangeByIdCard?idCard={$data['card']}" ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8' //json版本需要填写 Content-Type: application/json; ) ); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); //若果报错 name lookup timed out 报错时添加这一行代码 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_TIMEOUT,60); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec ( $ch ); curl_close ( $ch ); $ret = json_decode($result,true); if($ret['state'] == 1){ $data['is_talent'] = 1; $data['status'] = 1; }else{ $data['is_talent'] = 0; } }else{ $data['is_talent'] = 1; $data['status'] = 1; } //增加全民健身季礼包领取 if($data['value'] == 44){ $libao = DB::table('lt_apppointment')->where('card',$data['card'])->where('value',44)->first(); if($libao){ $res['status'] = 'error'; $res['msg'] = '您已领取过礼包,谢谢您的关注'; echo json_encode($res);die; } } $data['createtime'] = date("Y-m-d H:i:s",time()); $data['number'] = $this->findAvailableNo(); $data['content'] = $request->input('content'); DB::table('lt_apppointment')->insert($data); if($data['is_talent']){ if(empty($data['content'])){ $content = '无'; }else{ $content = $data['content']; } switch ($data['value']){ case 1: $phone = '13808510338'; break; case 2: $phone = '13960958777'; break; case 3: $phone = '15280619456'; break; case 4: $phone = '15375751022'; break; case 5: $phone = '15905901858'; break; case 6: $phone = '15985930919';//行政审批 break; case 7: $phone = '15159851117'; break; case 8: $phone = ''; break; case 9: $phone = '13850726589'; break; case 10: $phone = '13655931116'; break; case 11: $phone = '13805919791'; break; case 12: $phone = '13305057271'; break; case 13: $phone = '13599248586'; break; case 14: $phone = '15859592524'; break; case 15: $phone = '13459587022'; break; case 16: $phone = '13799592878'; break; case 17: $phone = '15159778791'; break; case 18: $phone = '15905900577'; break; case 19: $phone = '17850958856'; break; case 20: //$phone = '13788807070';//丁琦娜 13788807070 $phone = [ '13788807070', '13313837788', ]; break; case 21: $phone = '13505986964'; break; case 22: $phone = '15060600938'; break; case 23: $phone = '13305073366'; break; case 24: $phone = '15880738158'; break; case 25: $phone = '13860706099'; break; case 26: $phone = '17379989114'; break; case 27: $phone = [ '13788807070', '13599716573' ]; break; case 28: $phone = [ '13788807070', '13505023260' ]; break; case 29: $phone = '18850541454'; break; case 30: $phone = '18900399886'; break; case 31: $phone = '13489858833'; break; case 32: $phone = '13960457968'; break; case 33: $phone = '18759973633'; break; case 34: $phone = '15396576970'; break; case 35: $phone = '15959501620'; break; case 36: $phone = '13799858905'; break; case 37: $phone = '13559621092'; break; case 38: $phone = '13799592878'; break; case 39: $phone = '13600737303'; break; case 40: $phone = '15060910357';//姜自元 break; case 41: $phone = '13489719977'; break; case 42: $phone = '17750597113'; break; case 43: $phone = '15959953335'; break; case 44: $phone = ''; break; default: $phone = '18060002035'; break; } if(is_array($phone)){ foreach ($phone as $v){ $this->smsService->sendSms($v,'sms_custom',array('username'=>$data['username'],'phone'=>$data['phone'],'content'=>$content)); } }else{ if(!empty($phone)){ $this->smsService->sendSms($phone,'sms_custom',array('username'=>$data['username'],'phone'=>$data['phone'],'content'=>$content)); } } $res['status'] = 'ok'; $res['msg'] = '预约登记成功'; $this->smsService->sendSms($data['phone'],'sms_order_number',array('number'=>$data['number'],'service'=>$data['service'])); }else{ $res['status'] = 'ok'; $res['msg'] = '服务咨询登记成功'; } echo json_encode($res);die; } public function getAppointment(Request $request){ $page = $request->input('page'); $name = $request->input('name'); $type = $request->input('type',99); $status = $request->input('status',99); $number = $request->input('number'); $where = []; if(!empty($name)){ $where[] = ['username','like',"%{$name}%"]; } if(!empty($number)){ $where[] = ['number','like',"%{$number}%"]; } if($type != 99 ){ $where[] = ['is_talent','=',$type]; } if($status != 99){ $where[] = ['status','=',$status]; }else{ $where[] = ['status','<','2']; } $count = DB::table('lt_apppointment')->where($where)->count(); $list = DB::table('lt_apppointment')->where($where)->orderBy('id','desc')->orderBy('createtime','desc')->offset(($page-1)*20)->limit($page*20)->select("number","username",'phone','service','content','is_talent','status','evaluate')->get()->toArray(); $res['status'] = 'ok'; $res['msg'] = '查询成功'; $res['list'] = $list; $res['total'] = $count; echo json_encode($res);die; } public function putEvaluate(Request $request){ $number = $request->input('number'); $message = $request->input('message'); if(!$number || $number == '' || strlen($number) != 14){ $res['status'] = 'error'; $res['msg'] = '预约号不正确SR10-1'; echo json_encode($res);die; } $info = DB::table('lt_apppointment')->where('number',$number)->first(); if(!$info){ $res['status'] = 'error'; $res['msg'] = '预约号不存在SR10-2'; echo json_encode($res);die; } if($info->evaluate){ $res['status'] = 'error'; $res['msg'] = '此服务预约已评价HA10-1'; echo json_encode($res);die; } if(!$message || $message == ''){ $res['status'] = 'error'; $res['msg'] = '评价内容不能为空'; echo json_encode($res);die; } DB::table('lt_apppointment')->where('number',$number)->update(['evaluate'=>$message]); $res['status'] = 'ok'; $res['msg'] = '评价成功'; echo json_encode($res);die; } public function putEvaluateMobile(Request $request) { $mobile = $request->input('mobile'); $msg = $request->input('msg'); if($mobile != '' && $msg != ''){ $info = DB::table('lt_apppointment')->where('phone',$mobile)->orderBy('id','desc')->first(); if($info){ switch ($msg){ case '1': $evaluate = "非常满意"; break; case '2': $evaluate = "基本满意"; break; case '3': $evaluate = "不满意"; break; default: $evaluate = '短信回复有误,需要回访'; break; } DB::table('lt_apppointment')->where('id',$info->id)->update(['evaluate'=>$evaluate]); } } echo json_encode(['clcode'=>'000000']); } public function sendSms(){ // $list = DB::table('lt_apppointment')->where('value',44)->where('is_talent',1)->get(); // foreach ($list as $k => $v){ // $this->smsService->sendSms($v->phone,'sms_order_number',array('number'=>$v->number,'service'=>$v->service)); // } } protected function findAvailableNo() { $prefix = date('Ymd'); // 随机生成 6 位的数字,并创建订单号 $no = $prefix.random_int(10000, 99999).substr(microtime(true),-2); // 判断是否已经存在 if (!DB::table('lt_apppointment')->where('number', $no)->exists()) { return $no; }else{ $this->findAvailableNo(); } } public function checkCard(Request $request){ $card = $request->input('card'); if(strlen($card) == 18 && !$this->isValid($card)){ $res['status'] = 'error'; $res['msg'] = '身份证格式不正确'; exit(json_encode($res)); } $info = DB::table('talent')->where('card',$card)->first(); if(!$info){ $ch = curl_init (); curl_setopt( $ch, CURLOPT_URL, "http://rc.jucai.gov.cn/api/dataInterface/findTalentArrangeByIdCard?idCard={$card}" ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8' //json版本需要填写 Content-Type: application/json; ) ); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); //若果报错 name lookup timed out 报错时添加这一行代码 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_TIMEOUT,60); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec ( $ch ); curl_close ( $ch ); $ret = json_decode($result,true); $res['status'] = 'ok'; $res['msg'] = '获取成功'; $res['data'] = $ret; }else{ $res['status'] = 'ok'; $res['msg'] = '获取成功'; $res['data'] = [ 'msg' => '已认定人才', 'state' => 1, 'level' => $info->level ]; } echo json_encode($res); } /** * 校验身份证号是否合法 * @param string $num 待校验的身份证号 * @return bool */ protected function isValid(string $num) { //老身份证长度15位,新身份证长度18位 $length = strlen($num); if ($length == 15) { //如果是15位身份证 //15位身份证没有字母 if (!is_numeric($num)) { return false; } // 省市县(6位) $areaNum = substr($num, 0, 6); // 出生年月(6位) $dateNum = substr($num, 6, 6); } else if ($length == 18) { //如果是18位身份证 //基本格式校验 if (!preg_match('/^\d{17}[0-9xX]$/', $num)) { return false; } // 省市县(6位) $areaNum = substr($num, 0, 6); // 出生年月日(8位) $dateNum = substr($num, 6, 8); } else { //假身份证 return false; } //验证地区 if (!$this->isAreaCodeValid($areaNum)) { return false; } //验证日期 if (!$this->isDateValid($dateNum)) { return false; } //验证最后一位 if (!$this->isVerifyCodeValid($num)) { return false; } return true; } /** * 省市自治区校验 * @param string $area 省、直辖市代码 * @return bool */ private function isAreaCodeValid(string $area) { $provinceCode = substr($area, 0, 2); // 根据GB/T2260—999,省市代码11到65 if (11 <= $provinceCode && $provinceCode <= 65) { return true; } else { return false; } } /** * 验证出生日期合法性 * @param string $date 日期 * @return bool */ private function isDateValid(string $date) { if (strlen($date) == 6) { //15位身份证号没有年份,这里拼上年份 $date = '19'.$date; } $year = intval(substr($date, 0, 4)); $month = intval(substr($date, 4, 2)); $day = intval(substr($date, 6, 2)); //日期格式正确,但是逻辑存在问题(如:年份大于当前年) $currYear = date('Y'); if ($year > $currYear) { return false; } return true; } /** * 验证18位身份证最后一位 * @param string $num 待校验的身份证号 * @return bool */ private static function isVerifyCodeValid(string $num) { if (strlen($num) == 18) { $factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; $tokens = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; $checkSum = 0; for ($i = 0; $i < 17; $i++) { $checkSum += intval($num{$i}) * $factor[$i]; } $mod = $checkSum % 11; $token = $tokens[$mod]; $lastChar = strtoupper($num{17}); if ($lastChar != $token) { return false; } } return true; } }