AsyncResponse.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Components;
  3. use Illuminate\Support\Facades\Gate;
  4. use Maatwebsite\Excel\Facades\Excel;
  5. trait AsyncResponse{
  6. protected function gate(string $authorityName)
  7. {
  8. if(!Gate::allows($authorityName)){
  9. echo json_encode(["success"=>false,"data"=>"无权操作"]);
  10. exit();
  11. }
  12. }
  13. public function error(string $message)
  14. {
  15. echo json_encode(["success"=>false,"data"=>$message]);
  16. exit();
  17. }
  18. public function success($message = null)
  19. {
  20. $result = ["success"=>true];
  21. if ($message)$result["data"] = $message;
  22. echo json_encode($result);
  23. exit();
  24. }
  25. public function importExcel(object $class)
  26. {
  27. ini_set('max_execution_time',2500);
  28. ini_set('memory_limit','1526M');
  29. $file = request()->file();
  30. if (!$file)$this->error("文件不存在");
  31. $file = reset($file);
  32. $fileSuffix=strtolower($file->getClientOriginalExtension());
  33. $types = ["xlsx",'xls','csv'];
  34. if (!in_array($fileSuffix,$types)) $this->error("不支持该文件类型");
  35. $fileSuffix = ucwords($fileSuffix);
  36. Excel::import($class,$file->path(),null,$fileSuffix);
  37. }
  38. }