| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- namespace App\Http\Controllers;
- use App\UserDetail;
- use App\UserToken;
- use App\UserWorkgroup;
- use App\Warehouse;
- use Endroid\QrCode\QrCode;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Cache;
- use Ramsey\Uuid\Uuid;
- class QRCodeController extends Controller
- {
- public function goGetQRCode(){
- $warehouses=Warehouse::get();
- return view("personnel/checking-in/getQRcode",compact('warehouses'));
- }
- //二维码刷新时间
- public function qrCode_refresh_time($userWorkgroups,$beforeTime){
- $qrCode_refresh=config('hr.qrCode_refresh');
- if (!Cache::has('last_refresh_date') || Cache::get('last_refresh_date')<date('Y-m-d H:i:s')){
- $last_refresh_date=date('Y-m-d H:i:s',strtotime('+'.$qrCode_refresh.'second'));
- Cache::put('last_refresh_date',$last_refresh_date);
- return $this->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'),]);
- }
- }
|