PrintPartService.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Services;
  3. use App\Traits\ModelSearchWay;
  4. use App\Traits\ServiceAppAop;
  5. use App\PrintPart;
  6. use Illuminate\Support\Facades\Storage;
  7. class PrintPartService
  8. {
  9. use ModelSearchWay;
  10. use ServiceAppAop;
  11. protected $modelClass = PrintPart::class;
  12. public function getImagePart()
  13. {
  14. $printPart = PrintPart::query()->firstOrCreate(['name' => "PrintPart-Image"],['value' => json_encode(array(), JSON_UNESCAPED_UNICODE)]);
  15. $printPart['values'] = json_decode($printPart['value'], JSON_UNESCAPED_UNICODE);
  16. return $printPart;
  17. }
  18. public function pushImagePart($file,$fileName): array
  19. {
  20. $tempFile = $file->getRealPath();
  21. if (!$file->isValid()) return ['success' => false, 'message' => '未找到上传文件'];
  22. // if (!is_uploaded_file($tempFile)) return ['success' => false, 'message' => '获取文件错误'];
  23. if ($file->getSize() > 5 * 1024 * 1024) return ['success' => false, 'message' => '文件不能大于5MB'];
  24. $printPart = $this->getImagePart();
  25. $is_exists = false;
  26. foreach ($printPart['values'] as $values){
  27. if ($values['name'] == $fileName){
  28. $is_exists = true;
  29. break;
  30. }
  31. }
  32. if ($is_exists) return ['success' => true ,'message' => '文件名重复'];
  33. $fileSuffix = '.'.$file->getClientOriginalExtension();
  34. $dirPath = storage_path('app\public\files\print');
  35. if (!file_exists($dirPath)) {
  36. mkdir($dirPath);
  37. }
  38. $filePath = storage_path('app\public\files\print\\' . $fileName.$fileSuffix);
  39. $result = move_uploaded_file($tempFile,$filePath);
  40. if (!$result) ['success' => false , 'message' => '图片保存异常'];
  41. $values = ['name' => $fileName, 'value' => Storage::url("print/".$fileName.$fileSuffix)];
  42. PrintPart::query()->where('id',$printPart['id'])->update(['value' => json_encode($values,JSON_UNESCAPED_UNICODE)]);
  43. return ['success' => true , 'data' => $this->getImagePart()];
  44. }
  45. }