PrintPartImageService.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Services;
  3. use App\Traits\ServiceAppAop;
  4. use App\PrintPartImage;
  5. use App\UploadFile;
  6. use Ramsey\Uuid\Uuid;
  7. class PrintPartImageService
  8. {
  9. use ServiceAppAop;
  10. protected $modelClass = PrintPartImage::class;
  11. /**
  12. * 保存上传文件
  13. * @param PrintPartImage $model
  14. * @param $file
  15. * @return array
  16. */
  17. public function saveFile(PrintPartImage $model, $file): array
  18. {
  19. $result = $this->saveImage($file,$model);
  20. if (!$result['success'])return $result;
  21. $model->saveFile($file,$result['fileName']);
  22. $model->load('file');
  23. return ['success' => true, 'message' => '文件上传成功', 'data' => $model ];
  24. }
  25. /**
  26. * 保存上传图片
  27. * @param $file
  28. * @param $model
  29. * @return array
  30. */
  31. public function saveImage($file,$model): array
  32. {
  33. $tmpFil = $file->getRealPath();
  34. if (!$file) return ['success' => false, 'message' => '上传图片为找到'];
  35. if (!$file->isValid()) return ['success' => false, 'message' => '找不到上传图片'];
  36. if (!is_uploaded_file($tmpFil)) return ['success' => false, 'message' => '文件错误'];
  37. if ($file->getSize() > 5 * 1024 * 1024) return ['success' => false, 'message' => '文件不能大于5MB'];
  38. $path = ['app', 'public', 'files'];
  39. $path = join(DIRECTORY_SEPARATOR, $path);
  40. $dirPath = storage_path($path);
  41. if (!file_exists($dirPath)) {
  42. mkdir($dirPath);
  43. }
  44. $fileSuffix = $file->getClientOriginalExtension();
  45. $fileName = $model['name'].date('ymd').'-'.Uuid::uuid1();//thumbnail common bulky
  46. if (!in_array($fileSuffix, ['jpeg', 'jpg', 'png', 'svg']))
  47. return ['success' => false, 'message' => '上传的文件格式应为jpeg,jpg,png,svg'];
  48. $filePath = storage_path($path.DIRECTORY_SEPARATOR . $fileName .'.'. $fileSuffix);
  49. $result = move_uploaded_file($tmpFil, $filePath);
  50. if ($result) return ['success' => true,'fileName' => $fileName];
  51. else return ['success' => false, 'message' => '文件上传失败'];
  52. }
  53. /**
  54. * 修改打印图片
  55. * @param PrintPartImage $model
  56. * @param $file
  57. * @return array
  58. */
  59. public function updateFile(PrintPartImage $model,$file): array
  60. {
  61. $result = $this->saveImage($file,$model);
  62. if (!$result['success'])return $result;
  63. UploadFile::query()->where(['table_name' => 'print_part_images','table_id' => $model['id']])->update(['url' => '/files/'.$result['fileName'], 'type' => $file->getClientOriginalExtension()]);
  64. $model->refresh();
  65. return ['success' => true, 'message' => '文件上传成功', 'data' => $model ];
  66. }
  67. }