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