QRCodeController.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\UserDetail;
  4. use App\UserDutyCheck;
  5. use App\UserToken;
  6. use App\UserWorkgroup;
  7. use App\Warehouse;
  8. use Endroid\QrCode\QrCode;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Cache;
  11. use mysql_xdevapi\Collection;
  12. use Ramsey\Uuid\Uuid;
  13. class QRCodeController extends Controller
  14. {
  15. //进入打卡页面
  16. public function goGetQRCode(){
  17. $warehouses=Warehouse::with('userWorkgroups')->get();
  18. return view("personnel/checking-in/getQRcode",compact('warehouses'));
  19. }
  20. //进入进出场二维码显示页面
  21. public function importAndExportQRCode(){
  22. $importAndExportQRCodes=[];
  23. $userDutyCheckOne=new UserDutyCheck([
  24. 'source'=>'进场',
  25. 'type'=>'import',
  26. ]);
  27. $userDutyCheck=new UserDutyCheck([
  28. 'source'=>'出场',
  29. 'type'=>'export',
  30. ]);
  31. array_push($importAndExportQRCodes,$userDutyCheckOne,$userDutyCheck);
  32. $importAndExportQRCodes=$this->qrCode_refresh_time($importAndExportQRCodes);
  33. Cache::forget('next_refresh_time');
  34. return view('personnel/checking-in/importAndExportQRCode',['importAndExportQRCodes'=>$importAndExportQRCodes,'next_refresh_time'=>Cache::get('next_refresh_time'),]);
  35. }
  36. //进出场二维码刷新时间
  37. public function qrCode_refresh_time($importAndExportQRCodes){
  38. $qrCode_refresh=config('hr.qrCode_refresh');
  39. $next_refresh_time=date('Y-m-d H:i:s',strtotime('+'.$qrCode_refresh.'second'));
  40. Cache::put('next_refresh_time',$next_refresh_time);
  41. return $this->flushQRCode($importAndExportQRCodes);
  42. }
  43. //刷新进出场二维码方法
  44. public function flushQRCode($importAndExportQRCodes){
  45. foreach ($importAndExportQRCodes as $importAndExportQRCode){
  46. $time=strtotime(Cache::get('next_refresh_time'));
  47. $qrCode_refresh=config('hr.qrCode_refresh');
  48. if ($qrCode_refresh){
  49. $date=date('Y-m-d H:i:s', strtotime('+30second',$time));
  50. $url=url("personnel/checking-in/userDutyCheck/importAndExportClock?key=").$date;
  51. $url=$url."&&importAndExportQRCodeType=".$importAndExportQRCode->type;
  52. }else{
  53. $url=url("personnel/checking-in/userDutyCheck/importAndExportClock");
  54. $url=$url."?importAndExportQRCodeType=".$importAndExportQRCode->type;
  55. }
  56. $qrCode=new QrCode($url);
  57. if ($importAndExportQRCode->type){
  58. // $fileURL=base_path('public/images/QRCodeIMG/'.$importAndExportQRCode->type.'.png');
  59. // $qrCode->writeFile($fileURL);
  60. $importAndExportQRCode->src=base64_encode($qrCode->writeString());
  61. // $importAndExportQRCode->url=url('images/QRCodeIMG/'.$importAndExportQRCode->type.'.png').'?da='.Uuid::uuid1();
  62. }
  63. }
  64. return $importAndExportQRCodes;
  65. }
  66. //刷新进出场二维码页面
  67. public function refreshQRCode(Request $request){
  68. $importAndExportQRCodes=[];
  69. $userDutyCheckOne=new UserDutyCheck([
  70. 'type'=>'import',
  71. 'source'=>'进场',
  72. ]);
  73. $userDutyCheck=new UserDutyCheck([
  74. 'type'=>'export',
  75. 'source'=>'出场',
  76. ]);
  77. array_push($importAndExportQRCodes,$userDutyCheckOne,$userDutyCheck);
  78. $importAndExportQRCodes=$this->qrCode_refresh_time($importAndExportQRCodes);
  79. $csrfToken=csrf_token();
  80. return ['importAndExportQRCodes'=>$importAndExportQRCodes,'next_refresh_time'=>Cache::get('next_refresh_time'),'csrf_Token'=>$csrfToken];
  81. }
  82. //进入工作组二维码显示页面
  83. public function QRCode(Request $request){
  84. $userWorkgroupId=$request->input('userWorkgroupId');
  85. $userWorkgroup=UserWorkgroup::find($userWorkgroupId);
  86. $userWorkgroup=$this->getQRCode($userWorkgroup);
  87. if (!$userWorkgroup)return view('exception.404',['error'=>'未找到工作组!']);
  88. return view('personnel/checking-in/QRcode',['userWorkgroup'=>$userWorkgroup]);
  89. }
  90. //获取工作组二维码
  91. public function getQRCode($userWorkgroup){
  92. $url=url("personnel/checking-in/userDutyCheck/clock");
  93. $url=$url."?userWorkgroupID=".$userWorkgroup->id;
  94. $qrCode=new QrCode($url);
  95. if ($userWorkgroup->id){
  96. $fileURL=base_path('public/images/QRCodeIMG/'.$userWorkgroup->id.'.png');
  97. if (file_exists($fileURL)){
  98. $userWorkgroup->url=url('images/QRCodeIMG/'.$userWorkgroup->id.'.png');
  99. }
  100. $qrCode->writeFile($fileURL);
  101. $userWorkgroup->url=url('images/QRCodeIMG/'.$userWorkgroup->id.'.png');
  102. }
  103. return $userWorkgroup;
  104. }
  105. //获取进出场二维码
  106. // public function getImportAndExportQRCode($importAndExportQRCodes){
  107. // foreach ($importAndExportQRCodes as $importAndExportQRCode){
  108. // $qrCode_refresh_everyday=config('hr.qrCode_refresh_everyday');
  109. // if ($qrCode_refresh_everyday){
  110. // $date=md5(date('Y-m-d'));
  111. // $url=url("personnel/checking-in/userDutyCheck/importAndExportClock?key=").$date;
  112. // $url=$url."&&importAndExportQRCodeType=".$importAndExportQRCode->type;
  113. // }else{
  114. // $url=url("personnel/checking-in/userDutyCheck/importAndExportClock");
  115. // $url=$url."?importAndExportQRCodeType=".$importAndExportQRCode->type;
  116. // }
  117. // $qrCode=new QrCode($url);
  118. // if ($importAndExportQRCode->type){
  119. // $fileURL=base_path('public/images/QRCodeIMG/'.$importAndExportQRCode->type.'.png');
  120. // if (file_exists($fileURL)){
  121. // $importAndExportQRCode->url=url('images/QRCodeIMG/'.$importAndExportQRCode->type.'.png');
  122. // continue;
  123. // }
  124. // $qrCode->writeFile($fileURL);
  125. // $importAndExportQRCode->url=url('images/QRCodeIMG/'.$importAndExportQRCode->type.'.png');
  126. // }
  127. // }
  128. // return $importAndExportQRCodes;
  129. // }
  130. // //进出场二维码刷新时间
  131. // public function qrCode_refresh_time($importAndExportQRCodes,$beforeTime){
  132. // $qrCode_refresh=config('hr.qrCode_refresh');
  133. // if (!Cache::has('next_refresh_time') || Cache::get('next_refresh_time')<date('Y-m-d H:i:s')){
  134. // $next_refresh_time=date('Y-m-d H:i:s',strtotime('+'.$qrCode_refresh.'second'));
  135. // Cache::put('next_refresh_time',$next_refresh_time);
  136. // return $this->flushQRCode($importAndExportQRCodes);
  137. // }
  138. // if ($beforeTime==Cache::get('next_refresh_time')){
  139. // $time=strtotime($beforeTime);
  140. // //刷新 更新cache
  141. // $next_refresh_time=date('Y-m-d H:i:s', strtotime('+'.$qrCode_refresh.'second', $time));
  142. // Cache::put('next_refresh_time',$next_refresh_time);
  143. // return $this->flushQRCode($importAndExportQRCodes);
  144. // }
  145. // return $this->getImportAndExportQRCode($importAndExportQRCodes);
  146. // }
  147. }