| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: ZhangHao
 
-  * Date: 2019/5/22
 
-  * Time: 11:39
 
-  */
 
- namespace App\Http\Controllers\Api\Jobfair;
 
- use App\Http\Controllers\Api\ApiBaseController;
 
- use Illuminate\Http\Request;
 
- use App\Services\Person\MemberInfoService;
 
- use App\Services\Person\MemberService;
 
- use App\Services\Auth\RegisterService;
 
- use App\Repositories\MemberInfoRepository;
 
- use App\Repositories\Jobfair\JobfairPersonSignedRepository;
 
- use App\Repositories\Jobfair\JobfairRepository;
 
- use App\Repositories\Jobfair\JobfairCompanyRepository;
 
- use App\Repositories\TaskRepository;
 
- use App\Repositories\MemberHandselRepository;
 
- use App\Repositories\MemberPointRepository;
 
- use App\Repositories\CompanyRepository;
 
- use Illuminate\Support\Facades\Cache;
 
- class JobfairController extends ApiBaseController
 
- {
 
-     private $memberInfoService;
 
-     protected $memberService;
 
-     protected $registerService;
 
-     protected $memberInfoRepository;
 
-     protected $jobfairPersonSignedRepository;
 
-     protected $jobfairRepository;
 
-     protected $jobfairCompanyRepository;
 
-     protected $taskRepository;
 
-     protected $memberHandselRepository;
 
-     protected $memberPointRepository;
 
-     protected $companyRepository;
 
-     public function __construct(
 
-         MemberInfoService $memberInfoService,
 
-         MemberService $memberService,
 
-         RegisterService $registerService,
 
-         MemberInfoRepository $memberInfoRepository,
 
-         JobfairPersonSignedRepository $jobfairPersonSignedRepository,
 
-         JobfairRepository $jobfairRepository,
 
-         JobfairCompanyRepository $jobfairCompanyRepository,
 
-         TaskRepository $taskRepository,
 
-         MemberHandselRepository $memberHandselRepository,
 
-         MemberPointRepository $memberPointRepository,
 
-         CompanyRepository $companyRepository
 
-     )
 
-     {
 
-         $this->memberInfoService = $memberInfoService;
 
-         $this->memberService = $memberService;
 
-         $this->registerService = $registerService;
 
-         $this->memberInfoRepository = $memberInfoRepository;
 
-         $this->jobfairPersonSignedRepository = $jobfairPersonSignedRepository;
 
-         $this->jobfairRepository = $jobfairRepository;
 
-         $this->jobfairCompanyRepository = $jobfairCompanyRepository;
 
-         $this->taskRepository = $taskRepository;
 
-         $this->memberHandselRepository = $memberHandselRepository;
 
-         $this->memberPointRepository = $memberPointRepository;
 
-         $this->companyRepository = $companyRepository;
 
-     }
 
-     public function idcard(Request $request)
 
-     {
 
-         $error = $this->idcardValidator($request);
 
-         if($error){
 
-             $data = [
 
-                 'code'=>0,
 
-                 'message'=> $error,
 
-             ];
 
-             return response()->json($data);
 
-         }
 
-         $idcard = $request->idcard;
 
-         $info = [];
 
-         $where = [
 
-             ['holddate_start', '<', strtotime("+60 minute")],
 
-             ['holddate_end', '>',  strtotime("-60 minute")],
 
-             ['display', '=', 1],
 
-             ['subsite_id', '=', get_subsite_id()],
 
-         ];
 
-         $jobfair = $this->jobfairRepository->getOneOpenJobfair($where);
 
-         if($jobfair) {
 
-             $info['jobfairid'] = $jobfair->id;
 
-         }else {
 
-             $data = [
 
-                 'code'=>0,
 
-                 'message'=> '暂无举办中的招聘会',
 
-             ];
 
-             return response()->json($data);
 
-         }
 
-         $type = $request->input('type','in');
 
-         $info['type'] = $type == 'in' ? 1 : 2;
 
-         $info['name'] = $request->input('name','');
 
-         $info['en_name'] = $request->input('en_name','');
 
-         $info['nation'] = $request->input('nation','');
 
-         $info['address'] = $request->input('address','');
 
-         $info['effect_start_time'] = $request->input('effect_start_time','');
 
-         $info['effect_end_time'] = $request->input('effect_end_time','');
 
-         if(!$info['effect_start_time']){
 
-             unset( $info['effect_start_time']);
 
-         }
 
-         if(!$info['effect_end_time']){
 
-             unset( $info['effect_end_time']);
 
-         }
 
-         $info['government'] = $request->input('government','');
 
-         $info['idcard'] = $idcard;
 
-         $member_info = $this->memberInfoService->getInfo(['id_card' => $idcard]);
 
-         if($member_info){
 
-             $info['uid'] = $member_info->uid;
 
-             $info['utype'] = $member_info->members->utype;
 
-             //判断该身份之前是否有进入场,有则修改uid
 
-             $updateDate = ['uid'=> $info['uid']];
 
-             $this->jobfairPersonSignedRepository->updateDate(['idcard'=>$info['idcard']],$updateDate);
 
-         }
 
-         $info1 = $this->subIdcard($idcard);
 
-         $info = array_merge($info,$info1);
 
-         $info['sign_type'] = 1;
 
-         $this->jobfairPersonSignedRepository->createInfo($info);
 
-         $data = [
 
-             'code'=>1,
 
-             'message'=>[
 
-                 'type'=>1,
 
-                 'name'=>$info['name'],
 
-                 'id'=>$idcard,
 
-             ],
 
-         ];
 
-         return response()->json($data);
 
-     }
 
-     public function qrcode(Request $request)
 
-     {
 
-         $error = $this->qrcodeValidator($request);
 
-         if($error){
 
-             $data = [
 
-                 'code'=>0,
 
-                 'message'=> $error,
 
-             ];
 
-             return response()->json($data);
 
-         }
 
-         $where = [
 
-             ['holddate_start', '<', strtotime("+60 minute")],
 
-             ['holddate_end', '>',  strtotime("-60 minute")],
 
-             ['display', '=', 1],
 
-             ['subsite_id', '=', get_subsite_id()],
 
-         ];
 
-         $jobfair = $this->jobfairRepository->getOneOpenJobfair($where);
 
-         if($jobfair) {
 
-             $info['jobfairid'] = $jobfair->id;
 
-         }else {
 
-             $data = [
 
-                 'code'=>0,
 
-                 'message'=> '暂无举办中的招聘会',
 
-             ];
 
-             return response()->json($data);
 
-         }
 
-         $type = $request->input('type','in');
 
-         $info['type'] = $type == 'in' ? 1 : 2;
 
-         $qrcode = $request->qrcode;
 
-         $hash_id = substr($qrcode,strrpos($qrcode,'/')+1);
 
-         $res =  hashid_decode($hash_id);
 
-         if(!$res){
 
-             $data = [
 
-                 'code'=>0,
 
-                 'message'=> '二维码错误',
 
-             ];
 
-             return response()->json($data);
 
-         }
 
-         $info['uid'] = $res['id'];
 
-         $info['utype'] = $res['utype'];
 
-         if($res['utype'] == 1) {
 
-             $company = $this->companyRepository->getCompanyInfo(['id'=>$res['id']]);
 
-             $info['name'] = $company->companyname;
 
-             $list = $this->jobfairCompanyRepository->findWhere(['jobfair_id'=>$info['jobfairid'],'company_id'=>$res['id']]);
 
-             if($info['type'] ==1&&$list->isNotEmpty()){
 
-                 foreach ($list as $value) {
 
-                     $time = date('H:i:s',$jobfair->holddate_start);
 
-                     $date = date('Y-m-d',time());
 
-                     $timestamp = strtotime($date.' '.$time);
 
-                     if($timestamp >= strtotime("-30 minute")){
 
-                         $info['status'] = 0;
 
-                         $this->jobfairCompanyRepository->update(['type'=>4,'signed_time'=>time()],$value->id);
 
-                     }elseif($timestamp < strtotime("-30 minute")){
 
-                         $info['status'] = 1;
 
-                         if($value->type != 4) {
 
-                             $this->jobfairCompanyRepository->update(['type'=>1,'signed_time'=>time()],$value->id);
 
-                         }
 
-                         $this->jobfairCompanyRepository->update($date,$value->id);
 
-                     }
 
-                 }
 
-             }
 
-             $info['address'] = $company->address;
 
-             $message = [
 
-                 'type'=>'2',
 
-                 'name'=>$company->companyname,
 
-                 'id'=>$company->organization_code,
 
-             ];
 
-             Cache::put($hash_id, time(),120);
 
-         }else {
 
-             $memberInfo = $this->memberInfoService->getInfo(['uid' => $info['uid']]);
 
-             if($memberInfo){
 
-                 $info['name'] = $memberInfo->realname;
 
-                 $info['idcard'] = $memberInfo->id_card;
 
-                 $info['sex'] = $memberInfo->sex;
 
-                 $info['address'] = $memberInfo->householdaddress_cn;
 
-                 $info1 = $this->subIdcard($info['idcard'] );
 
-                 $info = array_merge($info,$info1);
 
-                 $message= [
 
-                     'type'=>'1',
 
-                     'name'=>$memberInfo->realname,
 
-                     'id'=>$memberInfo->id_card,
 
-                 ];
 
-                 //判断该身份之前是否有进入场,有则修改uid
 
-                 $updateDate = ['uid'=> $info['uid']];
 
-                 $this->jobfairPersonSignedRepository->updateDate(['idcard'=>$info['idcard']],$updateDate);
 
-                 Cache::put($hash_id, time(),120);
 
-             }else{
 
-                 $data = [
 
-                     'code'=>0,
 
-                     'message'=> '请先完善个人信息',
 
-                 ];
 
-                 return response()->json($data);
 
-             }
 
-         }
 
-         $info['sign_type'] = 2;
 
-         $this->jobfairPersonSignedRepository->createInfo($info);
 
-         $data = [
 
-             'code'=>1,
 
-             'message'=> $message,
 
-         ];
 
-         return response()->json($data);
 
-     }
 
-     public function idcardValidator($request)
 
-     {
 
-         $error = '';
 
- //        if(!$request->type){
 
- //            $error = 'type不能为空';
 
- //            return $error;
 
- //        }
 
- //        if(!in_array($request->type,['in','out'])){
 
- //            $error = 'type值错误';
 
- //            return $error;
 
- //        }
 
-         if(!$request->idcard){
 
-             $error = '身份证不能为空';
 
-             return $error;
 
-         }
 
-         if(!isCreditNo($request->idcard)){
 
-             $error = '身份证格式不正确';
 
-             return $error;
 
-         }
 
-     }
 
-     public function qrcodeValidator($request)
 
-     {
 
-         $error = '';
 
- //        if(!$request->type){
 
- //            $error = 'type不能为空';
 
- //            return $error;
 
- //        }
 
- //        if(!in_array($request->type,['in','out'])){
 
- //            $error = 'type值错误';
 
- //            return $error;
 
- //        }
 
-         if(!$request->qrcode){
 
-             $error = 'qrcode不能为空';
 
-             return $error;
 
-         }
 
-     }
 
-     //根据身份证截取信息
 
-     protected function subIdcard($idcard)
 
-     {
 
-         $data = [];
 
-         $sexInt = (int)substr($idcard, 16, 1);
 
-         $data['sex'] = $sexInt % 2 == 0 ? '2' : '1';
 
-         $data['birthday'] = substr($idcard,6,4);
 
-         return $data;
 
-     }
 
-     /**
 
-      * Unicode字符转换成utf8字符
 
-      * @param [type] $unicode_str Unicode字符
 
-      * @return [type]       Utf-8字符
 
-      */
 
-     protected function unicode_to_utf8($unicode_str) {
 
-         $utf8_str = '';
 
-         $code = intval(hexdec($unicode_str));
 
-         //这里注意转换出来的code一定得是整形,这样才会正确的按位操作
 
-         $ord_1 = decbin(0xe0 | ($code >> 12));
 
-         $ord_2 = decbin(0x80 | (($code >> 6) & 0x3f));
 
-         $ord_3 = decbin(0x80 | ($code & 0x3f));
 
-         $utf8_str = chr(bindec($ord_1)) . chr(bindec($ord_2)) . chr(bindec($ord_3));
 
-         return $utf8_str;
 
-     }
 
-     public function findJobfair()
 
-     {
 
-         $where = [
 
-             ['holddate_start', '<', strtotime("+60 minute")],
 
-             ['holddate_end', '>',  strtotime("-60 minute")],
 
-             ['display', '=', 1],
 
-             ['subsite_id', '=', get_subsite_id()],
 
-         ];
 
-         $jobfair = $this->jobfairRepository->getOneOpenJobfair($where);
 
-         if($jobfair) {
 
-             $data = [
 
-                 'code'=>1,
 
-                 'message'=> $jobfair,
 
-             ];
 
-             return response()->json($data);
 
-         }else {
 
-             $data = [
 
-                 'code'=>0,
 
-                 'message'=> '暂无举办中的招聘会',
 
-             ];
 
-             return response()->json($data);
 
-         }
 
-     }
 
- }
 
 
  |