Browse Source

容器库列表调整顶层文件夹和附件数量

kely 10 months ago
parent
commit
014556677f

+ 30 - 4
app/Http/Controllers/API/ContainerController.php

@@ -30,7 +30,36 @@ class ContainerController extends Controller
     {
         $containers = Container::query()->filter($request->all())->paginate();
 
-        return ContainerResource::collection($containers);
+
+        $foldsCount = Folder::query()
+            ->where('object_type','container')
+            ->where('parent_id',0)
+            ->whereIn("object_id", $containers->pluck("id")->toArray())
+            ->selectRaw("count(*) as cut, object_id")
+            ->groupBy("object_id")
+            ->pluck("cut", "object_id");
+
+        $fileCount = File::query()
+            ->where('object_type','container')
+            ->whereIn('object_id',$containers->pluck("id")->toArray())
+            ->where("is_latest_version", 1)
+            ->selectRaw("count(*) as cut, object_id")
+            ->groupBy("object_id")
+            ->pluck("cut", "object_id");
+
+
+        $containers = $containers->map(function (Container $container) use ($foldsCount,$fileCount) {
+            $container->itemCount =$foldsCount->get($container->id, 0)+$fileCount->get($container->id, 0);
+            $container->type = 'container';
+            $container->uniId = $container->type . '_' . $container->id;
+            return $container;
+        });
+
+        return $this->success([
+            'data' => $containers
+        ]);
+
+        //return ContainerResource::collection($containers);
     }
 
     /**
@@ -180,9 +209,6 @@ class ContainerController extends Controller
             // 设置固定的type值
             $items->type = 'container';
             $items->uniId=$items->type.'_'.$items->id;
-            $foldCount=Folder::query()->where('object_type',$items->type)->where('object_id',$items->id)->count();
-            $filesCount=File::query()->where('object_type',$items->type)->where('object_id',$items->id)->where('is_latest_version',1)->count();
-            $items->itemCount=$foldCount+$filesCount;
         });
 
         return $this->success([

+ 0 - 1
app/Http/Controllers/API/LibraryController.php

@@ -27,7 +27,6 @@ class LibraryController extends Controller
             ->pluck("cut", "library_id");
 
         $libraries = $libraries->map(function (Library $library) use ($containerCount) {
-            // 设置图书馆容器数量
             $library->itemCount = $containerCount->get($library->id, 0);
             $library->type = 'library';
             $library->uniId = $library->type . '_' . $library->id;

+ 5 - 0
app/ModelFilters/ContainerFilter.php

@@ -13,4 +13,9 @@ class ContainerFilter extends ModelFilter
     * @var array
     */
     public $relations = [];
+
+    public function library($id)
+    {
+        return $this->where("library_id", $id);
+    }
 }