mirror of https://github.com/abpframework/abp.git
10 changed files with 248 additions and 0 deletions
@ -0,0 +1,7 @@ |
|||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public class GetMediaRequestDto |
||||
|
{ |
||||
|
public bool Download { get; set; } = false; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Application.Services; |
||||
|
using Volo.Abp.Content; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public interface IMediaDescriptorAdminAppService |
||||
|
: ICrudAppService< |
||||
|
MediaDescriptorDto, |
||||
|
MediaDescriptorGetListDto, |
||||
|
Guid, |
||||
|
MediaDescriptorGetListInput, |
||||
|
UploadMediaStreamContent, |
||||
|
UpdateMediaDescriptorDto> |
||||
|
{ |
||||
|
Task<RemoteStreamContent> DownloadAsync(Guid id, GetMediaRequestDto request); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
using System; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public class MediaDescriptorDto : EntityDto<Guid> |
||||
|
{ |
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
public string MimeType { get; set; } |
||||
|
|
||||
|
public int Size { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
using System; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public class MediaDescriptorGetListDto : EntityDto<Guid> |
||||
|
{ |
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
public string MimeType { get; set; } |
||||
|
|
||||
|
public int Size { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
using Volo.Abp.Application.Dtos; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public class MediaDescriptorGetListInput : PagedAndSortedResultRequestDto |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using Volo.Abp.Validation; |
||||
|
using Volo.CmsKit.MediaDescriptors; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public class UpdateMediaDescriptorDto |
||||
|
{ |
||||
|
[Required] |
||||
|
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxNameLength))] |
||||
|
public string Name { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,23 @@ |
|||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using System.IO; |
||||
|
using Volo.Abp.Content; |
||||
|
using Volo.Abp.Validation; |
||||
|
using Volo.CmsKit.MediaDescriptors; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
public class UploadMediaStreamContent : RemoteStreamContent |
||||
|
{ |
||||
|
[Required] |
||||
|
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxNameLength))] |
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
[Required] |
||||
|
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxMimeTypeLength))] |
||||
|
public string MimeType { get; set; } |
||||
|
|
||||
|
public UploadMediaStreamContent(Stream stream) : base(stream) |
||||
|
{ |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,80 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Authorization; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
using Volo.Abp.BlobStoring; |
||||
|
using Volo.Abp.Content; |
||||
|
using Volo.CmsKit.MediaDescriptors; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
[Authorize] |
||||
|
public class MediaDescriptorAdminAppService : CmsKitAdminAppServiceBase, IMediaDescriptorAdminAppService |
||||
|
{ |
||||
|
protected readonly IBlobContainer<MediaContainer> MediaContainer; |
||||
|
protected readonly IMediaDescriptorRepository MediaDescriptorRepository; |
||||
|
|
||||
|
public MediaDescriptorAdminAppService(IBlobContainer<MediaContainer> mediaContainer, IMediaDescriptorRepository mediaDescriptorRepository) |
||||
|
{ |
||||
|
MediaContainer = mediaContainer; |
||||
|
MediaDescriptorRepository = mediaDescriptorRepository; |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<MediaDescriptorDto> GetAsync(Guid id) |
||||
|
{ |
||||
|
var entity = await MediaDescriptorRepository.GetAsync(id); |
||||
|
|
||||
|
return ObjectMapper.Map<MediaDescriptor, MediaDescriptorDto>(entity); |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<PagedResultDto<MediaDescriptorGetListDto>> GetListAsync(MediaDescriptorGetListInput input) |
||||
|
{ |
||||
|
var totalCount = await MediaDescriptorRepository.GetCountAsync(); |
||||
|
var entites = await MediaDescriptorRepository.GetListAsync(); |
||||
|
|
||||
|
var dtos = ObjectMapper.Map<List<MediaDescriptor>, List<MediaDescriptorGetListDto>>(entites); |
||||
|
|
||||
|
return new PagedResultDto<MediaDescriptorGetListDto>(totalCount, dtos); |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<MediaDescriptorDto> CreateAsync(UploadMediaStreamContent input) |
||||
|
{ |
||||
|
var newId = GuidGenerator.Create(); |
||||
|
var newEntity = new MediaDescriptor(newId, CurrentTenant.Id, input.Name, input.MimeType, input.ContentLength ?? 0); |
||||
|
|
||||
|
await MediaDescriptorRepository.InsertAsync(newEntity); |
||||
|
await MediaContainer.SaveAsync(newId.ToString(), input.GetStream()); |
||||
|
|
||||
|
return ObjectMapper.Map<MediaDescriptor, MediaDescriptorDto>(newEntity); |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<MediaDescriptorDto> UpdateAsync(Guid id, UpdateMediaDescriptorDto input) |
||||
|
{ |
||||
|
var entity = await MediaDescriptorRepository.GetAsync(id); |
||||
|
|
||||
|
entity.SetName(input.Name); |
||||
|
|
||||
|
await MediaDescriptorRepository.UpdateAsync(entity); |
||||
|
|
||||
|
return ObjectMapper.Map<MediaDescriptor, MediaDescriptorDto>(entity); |
||||
|
} |
||||
|
|
||||
|
public virtual async Task DeleteAsync(Guid id) |
||||
|
{ |
||||
|
await MediaContainer.DeleteAsync(id.ToString()); |
||||
|
await MediaDescriptorRepository.DeleteAsync(id); |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<RemoteStreamContent> DownloadAsync(Guid id, GetMediaRequestDto request) |
||||
|
{ |
||||
|
var entity = await MediaDescriptorRepository.GetAsync(id); |
||||
|
var stream = await MediaContainer.GetAsync(id.ToString()); |
||||
|
|
||||
|
return new RemoteStreamContent(stream) |
||||
|
{ |
||||
|
ContentType = entity.MimeType |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,64 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
using Volo.Abp.Content; |
||||
|
using Volo.Abp.GlobalFeatures; |
||||
|
using Volo.CmsKit.GlobalFeatures; |
||||
|
|
||||
|
namespace Volo.CmsKit.Admin.MediaDescriptors |
||||
|
{ |
||||
|
[RequiresGlobalFeature(typeof(MediasFeature))] |
||||
|
[RemoteService(Name = CmsKitCommonRemoteServiceConsts.RemoteServiceName)] |
||||
|
[Area("cms-kit")] |
||||
|
[Route("api/cms-kit-admin/medias")] |
||||
|
public class MediaDescriptorAdminController : CmsKitAdminController, IMediaDescriptorAdminAppService |
||||
|
{ |
||||
|
protected readonly IMediaDescriptorAdminAppService MediaDescriptorAdminAppService; |
||||
|
|
||||
|
public MediaDescriptorAdminController(IMediaDescriptorAdminAppService mediaDescriptorAdminAppService) |
||||
|
{ |
||||
|
MediaDescriptorAdminAppService = mediaDescriptorAdminAppService; |
||||
|
} |
||||
|
|
||||
|
[HttpGet] |
||||
|
[Route("{id}")] |
||||
|
public virtual Task<MediaDescriptorDto> GetAsync(Guid id) |
||||
|
{ |
||||
|
return MediaDescriptorAdminAppService.GetAsync(id); |
||||
|
} |
||||
|
|
||||
|
[HttpGet] |
||||
|
public virtual Task<PagedResultDto<MediaDescriptorGetListDto>> GetListAsync(MediaDescriptorGetListInput input) |
||||
|
{ |
||||
|
return MediaDescriptorAdminAppService.GetListAsync(input); |
||||
|
} |
||||
|
|
||||
|
[HttpPost] |
||||
|
public virtual Task<MediaDescriptorDto> CreateAsync(UploadMediaStreamContent input) |
||||
|
{ |
||||
|
return MediaDescriptorAdminAppService.CreateAsync(input); |
||||
|
} |
||||
|
|
||||
|
[HttpPut] |
||||
|
[Route("{id}")] |
||||
|
public virtual Task<MediaDescriptorDto> UpdateAsync(Guid id, UpdateMediaDescriptorDto input) |
||||
|
{ |
||||
|
return MediaDescriptorAdminAppService.UpdateAsync(id, input); |
||||
|
} |
||||
|
|
||||
|
[HttpDelete] |
||||
|
public virtual Task DeleteAsync(Guid id) |
||||
|
{ |
||||
|
return MediaDescriptorAdminAppService.DeleteAsync(id); |
||||
|
} |
||||
|
|
||||
|
[HttpGet] |
||||
|
[Route("download/{id}")] |
||||
|
public virtual Task<RemoteStreamContent> DownloadAsync(Guid id, GetMediaRequestDto request) |
||||
|
{ |
||||
|
return MediaDescriptorAdminAppService.DownloadAsync(id, request); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue