getContentType()); $response=new QrCodeResponse($qrCode); return $response; } //校验二维码进入打卡页面 public function clock(Request $request){ $qrCode_refresh_everyday=config('hr.qrCode_refresh_everyday'); if ($qrCode_refresh_everyday){ $key=$request->input('key'); if (!$key) return "二维码失效!"; $date=md5(date('Y-m-d')); if ($key!=$date) return "二维码失效!"; } $userLaborToken=$request->cookie('userLaborToken'); if ($userLaborToken && Cache::has('tokenStr_'.$userLaborToken)) { $user_id=Cache::get('tokenStr_'.$userLaborToken); $userDetail=UserDetail::find($user_id); if (!$userDetail) return redirect('userDutyCheck/createUserDetail/'.$userDetail->mobile_phone); $userDutyCheck=$this->dutyCheck($userDetail->user_id); if (!$userDutyCheck)return "

打卡异常,请联系相关人员!

"; return response()->view('process/checking-in/success',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at]); } return view("process/checking-in/clock"); } //提交打卡 public function storeClock(Request $request){ $mobile_phone=$request->input('mobile_phone'); $this->validator($request)->validate(); $userDetail=UserDetail::where('mobile_phone',$mobile_phone)->first(); if (!$userDetail) return redirect('userDutyCheck/createUserDetail/'.$mobile_phone); $user=User::find($userDetail->user_id); if (Cache::has('tokenUser_'.$user->id))return "

请使用原有设备进行打卡,如无法使用原有设备请联系管理人员解绑设备!

"; $userDutyCheck=$this->dutyCheck($userDetail->user_id); if (!$userDutyCheck)return "

打卡异常,请联系相关人员!

"; $userLaborToken=$user->token(config('users.token_check_in_expire_minutes')); return response()->view('process/checking-in/success',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at]) ->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/'); } //去往登记资料页面 public function createUserDetail($mobile_phone){ return view('process/checking-in/createUserDetail',['mobile_phone'=>$mobile_phone]); } //提交登记资料 public function storeUserDetail(Request $request){ $this->validator($request)->validate(); $mobile_phone=$request->input('mobile_phone'); $full_name=$request->input('full_name'); $user=new User([ 'name'=>$mobile_phone, 'password'=>Uuid::uuid1(), ]); $user->save(); $userDetail=new UserDetail([ 'user_id'=>$user->id, 'full_name'=>$full_name, 'gender'=>$request->input('gender'), 'mobile_phone'=>$mobile_phone, 'type'=>'临时工', ]); $userDetail->save(); $userLabor=new UserLabor([ 'user_id'=>$user->id, 'company'=>$request->input('company'), ]); $userLabor->save(); $userDutyCheck=$this->dutyCheck($user->id); if (!$userDutyCheck)return "

打卡异常,请联系相关人员!

"; $userLaborToken=$user->token(config('users.token_check_in_expire_minutes')); return response()->view('process/checking-in/success',['full_name'=>$userDetail->full_name,'checked_at'=>$userDutyCheck->checked_at]) ->cookie('userLaborToken',$userLaborToken,config('users.token_check_in_expire_minutes'),'/'); } //根据用户提交打卡记录 public function dutyCheck($user_id){ $userDutyCheckOld=UserDutyCheck::where('user_id',$user_id)->orderBy('checked_at','DESC')->limit(10)->first(); $date=date('Y-m-d H:i:s'); $userDutyCheck=new UserDutyCheck([ 'user_id'=>$user_id, 'checked_at'=>$date, 'source'=>'正常', ]); if (!$userDutyCheckOld){ $userDutyCheck->type="登入"; $userDutyCheck->save(); return $userDutyCheck; } $lastDate=Carbon::parse($userDutyCheckOld->checked_at); $thisDate=Carbon::parse($date); $diffDate=$thisDate->diffInMinutes($lastDate); if ($userDutyCheckOld->type=="登入"){ switch ($diffDate){ case $diffDate<=20: $userDutyCheck->type="登入"; break; case $diffDate>=1380: $userDutyCheck->type="登入"; break; default: $userDutyCheck->type="登出"; } } if ($userDutyCheckOld->type=="登出"){ switch ($diffDate){ case $diffDate<=20: $userDutyCheck->type="登出"; break; default: $userDutyCheck->type="登入"; } } $userDutyCheck->save(); return $userDutyCheck; } public function validator(Request $request){ $validator=Validator::make($request->input(),[ 'full_name'=>['filled'], 'gender'=>['filled'], 'mobile_phone'=>['required','integer','digits:11'], ],[],[]); return $validator; } }