flushQRCode($userWorkgroups); } if ($beforeTime==Cache::get('last_refresh_date')){ $time=strtotime($beforeTime); //刷新 更新cache $last_refresh_date=date('Y-m-d H:i:s', strtotime('+'.$qrCode_refresh.'second', $time)); Cache::put('last_refresh_date',$last_refresh_date); return $this->flushQRCode($userWorkgroups); } //每次刷新都标记一个cache 新建 每次刷新前判断这个标记时间 //直接去本地获取二维码 return $this->getQRCode($userWorkgroups); } //刷新二维码 public function flushQRCode($userWorkgroups){ foreach ($userWorkgroups as $userWorkgroup){ $qrCode_refresh=config('hr.qrCode_refresh'); if ($qrCode_refresh){ $date=date('Y-m-d:H:i'); $url=url("personnel/checking-in/userDutyCheck/clock?key=").$date; $url=$url."&&userWorkgroupID=".$userWorkgroup->id; }else{ $url=url("personnel/checking-in/userDutyCheck/clock"); $url=$url."?userWorkgroupID=".$userWorkgroup->id; } $qrCode=new QrCode($url); if ($userWorkgroup->id){ $fileURL=base_path('public/images/QRCodeIMG/'.$userWorkgroup->id.'.png'); $qrCode->writeFile($fileURL); $userWorkgroup->url=url('images/QRCodeIMG/'.$userWorkgroup->id.'.png').'?da='.Uuid::uuid1(); } } return $userWorkgroups; } //获取二维码 public function getQRCode($userWorkgroups){ foreach ($userWorkgroups as $userWorkgroup){ $qrCode_refresh_everyday=config('hr.qrCode_refresh_everyday'); if ($qrCode_refresh_everyday){ $date=md5(date('Y-m-d')); $url=url("personnel/checking-in/userDutyCheck/clock?key=").$date; $url=$url."&&userWorkgroupID=".$userWorkgroup->id; }else{ $url=url("personnel/checking-in/userDutyCheck/clock"); $url=$url."?userWorkgroupID=".$userWorkgroup->id; } $qrCode=new QrCode($url); if ($userWorkgroup->id){ $fileURL=base_path('public/images/QRCodeIMG/'.$userWorkgroup->id.'.png'); if (file_exists($fileURL)){ $userWorkgroup->url=url('images/QRCodeIMG/'.$userWorkgroup->id.'.png'); continue; } $qrCode->writeFile($fileURL); $userWorkgroup->url=url('images/QRCodeIMG/'.$userWorkgroup->id.'.png'); } } return $userWorkgroups; } //进入刷新二维码页面 public function refreshQRCode(Request $request){ $beforeTime=$request->input('beforeTime'); $warehouseId=$request->input('warehouseId'); $userWorkgroups=UserWorkgroup::where('warehouse_id',$warehouseId)->get(); $userWorkgroups=$this->qrCode_refresh_time($userWorkgroups,$beforeTime); if (!$userWorkgroups)return view('exception.404',['error'=>'未找到工作组!']); return ['userWorkgroups'=>$userWorkgroups,'last_refresh_date'=>Cache::get('last_refresh_date'),]; } //第一次进入二维码显示页面 public function QRCode(Request $request){ $warehouseId=$request->input('warehouseId'); $userWorkgroups=UserWorkgroup::where('warehouse_id',$warehouseId)->get(); $beforeTime=date('Y-m-d H:i:s'); $userWorkgroups=$this->qrCode_refresh_time($userWorkgroups,$beforeTime); Cache::forget('last_refresh_date'); if (!$userWorkgroups)return view('exception.404',['error'=>'未找到工作组!']); return view('personnel/checking-in/QRcode',['warehouseId'=>$warehouseId,'userWorkgroups'=>$userWorkgroups,'last_refresh_date'=>Cache::get('last_refresh_date'),]); } }