ソースを参照

naming_rule_id extend parent

peterguo 1 ヶ月 前
コミット
722acdfde1

+ 9 - 2
app/Services/File/Upload/FilesUploadService.php

@@ -4,6 +4,7 @@ namespace App\Services\File\Upload;
 
 use App\BO\BimFileBO;
 use App\Jobs\ConvertBimFile;
+use App\Models\Folder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
@@ -17,6 +18,8 @@ class FilesUploadService
 
     protected ?ProgressBar $progressBar = null;
 
+    protected ?Folder $parentFolder = null;
+
     public function __construct(protected Request $request)
     {
         $this->filesSize = $this->checkRequestData($this->request);
@@ -24,6 +27,10 @@ class FilesUploadService
         if ($this->request->get("request_id")) {
             $this->progressBar = new ProgressBar($this->request->get("request_id"), $this->filesSize);
         }
+
+        $this->parentFolder = $this->request->get("folder_id")
+            ? Folder::query()->findOrFail($this->request->get("folder_id"))
+            : null;
     }
 
     public function upload(): array
@@ -34,7 +41,7 @@ class FilesUploadService
 
             $item = $this->uploadFile($this->request, $file, $this->progressBar);
             $item['file']['title'] = $fileNames[$index] ?? $item['file']['title'];
-
+            $item['file']['naming_rule_id'] = $this->parentFolder?->naming_rule_id;
             $items[] = $item;
         }
 
@@ -58,7 +65,7 @@ class FilesUploadService
 
         DB::transaction(function() use ($files, &$uploadedFiles) {
             foreach ($files as $file) {
-                $uploadedFiles[] = $this->uploadFileWithPath($this->request, $file['pathname'], $file['title'], $file['size']);
+                $uploadedFiles[] = $this->uploadFileWithPath($this->request, $file['pathname'], $file['title'], $file['size'], $this->parentFolder?->naming_rule_id);
             }
         });
 

+ 2 - 5
app/Services/File/Upload/FilesUploadTrait.php

@@ -88,7 +88,7 @@ trait FilesUploadTrait
         ];
     }
 
-    protected function uploadFileWithPath(Request $request, string $path, string $fileName, int $size = 0)
+    protected function uploadFileWithPath(Request $request, string $path, string $fileName, int $size = 0, string $namingRuleId = null)
     {
         $extension = pathinfo($path, PATHINFO_EXTENSION);
 
@@ -96,6 +96,7 @@ trait FilesUploadTrait
 
         $fileArr = $this->buildFileArr($extension, $fileName, $path, $size, $request);
         $fileArr['is_bim'] = 0;
+        $fileArr['naming_rule_id'] = $namingRuleId;
 
         if ($this->isBIM($extension) || $gisType == 'osgb' && $request->object_type == FileObjectType::CONTAINER->value) {
             $fileArr['is_bim'] = 1;
@@ -188,9 +189,6 @@ trait FilesUploadTrait
 
     protected function storeFiles(array $items)
     {
-        $folderIds = array_filter(array_column($items, 'folder_id'));
-        $folders = Folder::query()->where(['id' => $folderIds])->get();
-
         $uploadedFiles = [];
         foreach ($items as $item) {
             $fileInfo = $item['file'];
@@ -216,7 +214,6 @@ trait FilesUploadTrait
                         'is_latest_version' => 0
                     ]);
             }
-            $fileInfo['naming_rule_id'] = $folders->firstWhere('id', $fileInfo['folder_id'] ?? 0)?->naming_rule_id;
             $file = File::query()->create($fileInfo);
 
             if (isset($item['bim']) && $item['bim']) {

+ 1 - 1
app/Services/File/Upload/KeepDirectoryUploadService.php

@@ -43,7 +43,7 @@ class KeepDirectoryUploadService
             $item = $this->uploadFile($this->request, $file, $this->progressBar);
             $item['file']['folder_id'] = $folderRelations[$index] ?? 0;
             $item['file']['title'] = $fileNames[$index] ?? $item['file']['title'];
-
+            $item['file']['naming_rule_id'] = $this->parentFolder?->naming_rule_id;
             $items[] = $item;
         }