From 507477ae4d2ed3573a87d33c57ace90d5548061c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=BC=9F?= <421281095@qq.com> Date: Thu, 31 Jul 2025 14:29:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AA=92=E4=BD=93=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=A0=91=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/ServiceApp/ManageApp.cs | 37 ++++++++++++++++--- OpenAuth.Repository/Domain/LasaMediaFile.cs | 3 ++ .../ServiceControllers/ManageController.cs | 18 +++++---- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/OpenAuth.App/ServiceApp/ManageApp.cs b/OpenAuth.App/ServiceApp/ManageApp.cs index b2c28bd..d0c0ed8 100644 --- a/OpenAuth.App/ServiceApp/ManageApp.cs +++ b/OpenAuth.App/ServiceApp/ManageApp.cs @@ -1691,15 +1691,42 @@ namespace OpenAuth.App.ServiceApp public async Task> ListMediaFolder(string workspaceId) { - // todo 列出所属项目所有 文件 - var result = await Repository.ChangeRepository>() + // 列出所属项目所有 文件 + var result = await Repository.ChangeRepository>() .AsQueryable() - .Where(r => r.WorkspaceId == workspaceId) + .WhereIF(!string.IsNullOrEmpty(workspaceId),r => r.WorkspaceId == workspaceId) .Where(r => r.ObjectKey == null) .OrderBy(r => r.CreateTime) .ToListAsync(); - // Todo 构建树结构 - return null; + // 构建树结构 + return BuildFolderTree1(result); + } + + + public List BuildFolderTree1(List folders) + { + var folderMap = folders.ToDictionary(f => f.Id, f => + { + var x = f; + x.Children = new List(); + return x; + }); + + var rootNodes = new List(); + + foreach (var folder in folders) + { + if (string.IsNullOrEmpty(folder.ParentKey) || folder.ParentKey == "0") + { + rootNodes.Add(folderMap[folder.Id]); + } + else if (folderMap.TryGetValue(folder.ParentKey, out var parentNode)) + { + parentNode.Children.Add(folderMap[folder.Id]); + } + } + + return rootNodes; } } } \ No newline at end of file diff --git a/OpenAuth.Repository/Domain/LasaMediaFile.cs b/OpenAuth.Repository/Domain/LasaMediaFile.cs index 26cf4ef..12e3aa6 100644 --- a/OpenAuth.Repository/Domain/LasaMediaFile.cs +++ b/OpenAuth.Repository/Domain/LasaMediaFile.cs @@ -118,4 +118,7 @@ public class LasaMediaFile public string PicLink { get; set; } public string minipic { get; set; } + + [SugarColumn(IsIgnore = true)] + public List Children { get; set; } } \ No newline at end of file diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs index 8ddb31c..518e40a 100644 --- a/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs +++ b/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs @@ -179,7 +179,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers return result; } - + /// /// 根据机场sn获取无人机列表 /// @@ -289,8 +289,8 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers { return await _app.GetTaskPicList(flightId, timestamp); } - - + + [HttpGet] [AllowAnonymous] public async Task> GetTaskVideoList(string flightId, long timestamp) @@ -301,7 +301,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers #endregion #region 航线管理 - + [HttpPost] public async Task> CreateAirLineFolder(FolderCreateReq req) { @@ -619,7 +619,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers { return await _app.TestExecuteFlyTask(flightid); } - + [HttpGet] [AllowAnonymous] @@ -820,12 +820,16 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers #endregion - #region 媒体库 + #region 媒体库 + /// + /// 媒体文件夹树结构 + /// + /// + /// [HttpGet] public async Task> ListMediaFolder(string workspaceId) { - return await _app.ListMediaFolder(workspaceId); }