Преглед на файлове

Merge branch 'refs/heads/peterguo-dev' into dev

peterguo преди 1 месец
родител
ревизия
d9dbf7dfe8

+ 11 - 10
app/Http/Controllers/API/AssetController.php

@@ -175,16 +175,17 @@ class AssetController extends Controller
     public function tree()
     {
         $attachmentArray = [];
-        $assets = Asset::allowed()->get(['id', 'name', 'parent_id'])->each(function ($assets)use (&$attachmentArray){
-            $attachmentArray[]=[
-            'parent_id'=>$assets->id,
-            'type'=>'attachment',
-            'name'=>'attachment',
-            'uuId'=>'attachment_'.$assets->id,
-            'id'=>'asset_id_'.$assets->id,
-        ];
-            $assets->type='asset';
-            $assets->uniId=$assets->type.'_'.$assets->id;
+        $assets = Asset::withCount('library')->allowed()->get(['id', 'name', 'parent_id'])
+            ->each(function ($assets) use (&$attachmentArray) {
+                $attachmentArray[]=[
+                    'parent_id'=>$assets->id,
+                    'type'=>'attachment',
+                    'name'=>'attachment',
+                    'uuId'=>'attachment_'.$assets->id,
+                    'id'=>'asset_id_'.$assets->id,
+                ];
+                $assets->type='asset';
+                $assets->uniId=$assets->type.'_'.$assets->id;
         });
 
         return $this->success([

+ 1 - 1
app/Http/Controllers/API/ContainerController.php

@@ -220,7 +220,7 @@ class ContainerController extends Controller
 
     public function linkage(string $libraryId)
     {
-        $items = Container::query()->allowed()->where("library_id", $libraryId)->get(['id', 'name'])->each(function ($items) {
+        $items = Container::withCount('folder')->allowed()->where("library_id", $libraryId)->get(['id', 'name'])->each(function ($items) {
             // 设置固定的type值
             $items->type = 'container';
             $items->uniId=$items->type.'_'.$items->id;

+ 3 - 8
app/Http/Controllers/API/FolderController.php

@@ -26,22 +26,18 @@ class FolderController extends Controller
     /**
      * Display a listing of the resource.
      */
-    public function tree(string $objectType, string $objectId)
+    public function tree(string $objectType, string $objectId, $parentFolderId = 0)
     {
         $folderObjectType = FolderObjectType::from($objectType);
 
         $object=$folderObjectType->modelBuilderAllowed()->with(['library'])->findOrFail($objectId);
 
-        $folders = Folder::query()
+        $folders = Folder::withCount('children')
             ->where([
                 'object_type' => $objectType,
                 'object_id' => $objectId,
             ])
-            //            ->when(request("parent_id", 0) > 0, function ($query) {
-            //                return $query->where("path", "like", "%," . \request("parent_id") . ",%")->where("id", "!=", \request("parent_id"));
-            //            })
-            //          文件夹树暂时显示一层
-            ->where('parent_id',0)
+            ->where('parent_id', $parentFolderId)
             ->orderByDesc("sequence")
             ->get([
                 'id',
@@ -64,7 +60,6 @@ class FolderController extends Controller
         ];
 
         return $this->success([
-            //'data' => make_tree($folders->toArray(), \request("parent_id", 0)),
             'object'=> $container,
             'data' => $folders
         ]);

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

@@ -117,7 +117,7 @@ class LibraryController extends Controller
             LibraryType::CUSTOM => []
         };
 
-        $libraries = Library::query()
+        $libraries = Library::withCount('container')
             ->allowed()
             ->where("type", $type)->when($where, fn($query) => $query->where($where))
             ->get(['id', 'name', 'created_at', 'updated_at'])

+ 6 - 0
app/Models/Container.php

@@ -2,6 +2,7 @@
 
 namespace App\Models;
 
+use App\Models\Enums\ActionObjectType;
 use App\Models\Enums\ContainerACL;
 use App\Models\Scopes\CompanyScope;
 use EloquentFilter\Filterable;
@@ -62,4 +63,9 @@ class Container extends Model
 
         return $this->hasOne(ContainerContent::class, "container_id")->where("version", $version);
     }
+
+    public function folder()
+    {
+        return $this->hasMany(Folder::class, "object_id")->where("object_type", ActionObjectType::CONTAINER->value);
+    }
 }

+ 1 - 1
routes/api.php

@@ -62,7 +62,7 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
     Route::get("department-items", [API\DepartmentController::class, "publicSearch"]);
     Route::get("container-linkage/{library_id}", [API\ContainerController::class, "linkage"]);
     Route::get("folder-open", [API\FolderController::class, "open"]);
-    Route::get("folder-tree/{object_type}/{object_id}", [API\FolderController::class, "tree"]);
+    Route::get("folder-tree/{object_type}/{object_id}/{parent_folder_id?}", [API\FolderController::class, "tree"]);
     Route::get("file/{object_type}/{object_id}", [API\FileController::class, "byObject"]);
     Route::get("folder/file-version-tree/{object_type}/{object_id}", [API\FolderController::class, "versionFileTreeByObject"]);
     Route::get("project-asset-tree/{project_id}", [API\ProjectController::class, "projectAssetTree"]);