媒体文件夹返回树结构

feature-flyModify
陈伟 2025-07-31 14:29:31 +08:00
parent 985c9b13a0
commit 507477ae4d
3 changed files with 46 additions and 12 deletions

View File

@ -1691,15 +1691,42 @@ namespace OpenAuth.App.ServiceApp
public async Task<List<LasaMediaFile>> ListMediaFolder(string workspaceId) public async Task<List<LasaMediaFile>> ListMediaFolder(string workspaceId)
{ {
// todo 列出所属项目所有 文件 // 列出所属项目所有 文件
var result = await Repository.ChangeRepository<SugarRepositiry<LasaMediaFile>>() var result = await Repository.ChangeRepository<SugarRepositiry<LasaMediaFile>>()
.AsQueryable() .AsQueryable()
.Where(r => r.WorkspaceId == workspaceId) .WhereIF(!string.IsNullOrEmpty(workspaceId),r => r.WorkspaceId == workspaceId)
.Where(r => r.ObjectKey == null) .Where(r => r.ObjectKey == null)
.OrderBy(r => r.CreateTime) .OrderBy(r => r.CreateTime)
.ToListAsync(); .ToListAsync();
// Todo 构建树结构 // 构建树结构
return null; return BuildFolderTree1(result);
}
public List<LasaMediaFile> BuildFolderTree1(List<LasaMediaFile> folders)
{
var folderMap = folders.ToDictionary(f => f.Id, f =>
{
var x = f;
x.Children = new List<LasaMediaFile>();
return x;
});
var rootNodes = new List<LasaMediaFile>();
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;
} }
} }
} }

View File

@ -118,4 +118,7 @@ public class LasaMediaFile
public string PicLink { get; set; } public string PicLink { get; set; }
public string minipic { get; set; } public string minipic { get; set; }
[SugarColumn(IsIgnore = true)]
public List<LasaMediaFile> Children { get; set; }
} }

View File

@ -822,10 +822,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
#region 媒体库 #region 媒体库
/// <summary>
/// 媒体文件夹树结构
/// </summary>
/// <param name="workspaceId"></param>
/// <returns></returns>
[HttpGet] [HttpGet]
public async Task<List<LasaMediaFile>> ListMediaFolder(string workspaceId) public async Task<List<LasaMediaFile>> ListMediaFolder(string workspaceId)
{ {
return await _app.ListMediaFolder(workspaceId); return await _app.ListMediaFolder(workspaceId);
} }