diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/FileItemDto.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/FileItemDto.cs index f483a7ab..d39bf488 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/FileItemDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/FileItemDto.cs @@ -11,4 +11,9 @@ public class FileItemDto /// 文件名称 /// public string FileName { get; set; } + + /// + /// 文件下载地址 + /// + public string? DownloadUrl { get; set; } } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs index bc140364..34f56ab8 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Http; +using SJZY.Expand.AliyunOSS; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; @@ -53,6 +54,13 @@ public partial class TrackService trackContents.ForEach(x => trackContentDic.Add(x.Code, x.IsExternal)); } + var ossKeys = details + .Where(x => x.Files != null && x.Files.Count > 0) + .SelectMany(x => x.Files!.Select(y => y.OssKey)) + .ToArray(); + //根据osskey获取下载地址 + var ossKeyUrlDict = OSSHelper.GetUrlByKeys(ossKeys); + foreach (var group in details.GroupBy(x => x.OrderId)) { var item = new GetTrackOutput(); @@ -83,7 +91,8 @@ public partial class TrackService Files = x.Files?.Select(y => new FileItemDto { FileName = y.FileName, - OssKey = y.OssKey + OssKey = y.OssKey, + DownloadUrl = ossKeyUrlDict.TryGetValue(y.OssKey, out var url) ? url : null }).ToList(), TrackPlaceCity = x.TrackPlaceCity, TrackPlaceCityId = x.TrackPlaceCityId, @@ -100,6 +109,7 @@ public partial class TrackService res.Add(item); } + // 排序 var sortedList = await TracksOrdered(res, input, input.SortMethod); @@ -142,6 +152,13 @@ public partial class TrackService trackContents.ForEach(x => trackContentDic.Add(x.Code, x.IsExternal)); } + var ossKeys = details + .Where(x => x.Files != null && x.Files.Count > 0) + .SelectMany(x => x.Files!.Select(y => y.OssKey)) + .ToArray(); + //根据osskey获取下载地址 + var ossKeyUrlDict = OSSHelper.GetUrlByKeys(ossKeys); + foreach (var group in details.GroupBy(x => x.OrderId)) { var item = new GetTrackOutput(); @@ -168,7 +185,8 @@ public partial class TrackService Files = x.Files?.Select(y => new FileItemDto { FileName = y.FileName, - OssKey = y.OssKey + OssKey = y.OssKey, + DownloadUrl = ossKeyUrlDict.TryGetValue(y.OssKey, out var url) ? url : null }).ToList(), TrackPlaceCity = x.TrackPlaceCity, TrackPlaceCityId = x.TrackPlaceCityId,