| 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);        }    }}
 |