diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index b9f562bf98..3f36f7343e 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -31,6 +31,7 @@ using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.Web; @@ -65,7 +66,8 @@ namespace Volo.CmsKit typeof(AbpTenantManagementEntityFrameworkCoreModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), typeof(AbpAspNetCoreSerilogModule), - typeof(BlobStoringDatabaseEntityFrameworkCoreModule) + typeof(BlobStoringDatabaseEntityFrameworkCoreModule), + typeof(AbpSwashbuckleModule) )] public class CmsKitWebUnifiedModule : AbpModule { @@ -158,7 +160,7 @@ namespace Volo.CmsKit app.UseAuthorization(); app.UseSwagger(); - app.UseSwaggerUI(options => + app.UseAbpSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API"); }); diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj index 1dbafb4ad6..f13af43d96 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj @@ -16,6 +16,7 @@ + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/UploadMediaStreamContent.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputDto.cs similarity index 56% rename from modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/UploadMediaStreamContent.cs rename to modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputDto.cs index b6dcb1323d..b61d50e124 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/UploadMediaStreamContent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputDto.cs @@ -6,17 +6,13 @@ using Volo.CmsKit.MediaDescriptors; namespace Volo.CmsKit.Admin.MediaDescriptors { - public class UploadMediaStreamContent : RemoteStreamContent + public class CreateMediaInputStream : 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) + public CreateMediaInputStream(Stream stream) : base(stream) { } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs index 2fb86ba7f5..e56cb6d630 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs @@ -5,15 +5,12 @@ using Volo.Abp.Content; namespace Volo.CmsKit.Admin.MediaDescriptors { - public interface IMediaDescriptorAdminAppService - : ICrudAppService< - MediaDescriptorDto, - MediaDescriptorGetListDto, - Guid, - MediaDescriptorGetListInput, - UploadMediaStreamContent, - UpdateMediaDescriptorDto> + public interface IMediaDescriptorAdminAppService : IApplicationService { + Task CreateAsync(CreateMediaInputStream inputStream); + Task DownloadAsync(Guid id, GetMediaRequestDto request); + + Task DeleteAsync(Guid id); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs index 84c8a9a993..d2f5865926 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs @@ -1,8 +1,6 @@ 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; @@ -21,45 +19,18 @@ namespace Volo.CmsKit.Admin.MediaDescriptors MediaDescriptorRepository = mediaDescriptorRepository; } - public virtual async Task GetAsync(Guid id) - { - var entity = await MediaDescriptorRepository.GetAsync(id); - - return ObjectMapper.Map(entity); - } - - public virtual async Task> GetListAsync(MediaDescriptorGetListInput input) - { - var totalCount = await MediaDescriptorRepository.GetCountAsync(); - var entites = await MediaDescriptorRepository.GetListAsync(); - - var dtos = ObjectMapper.Map, List>(entites); - - return new PagedResultDto(totalCount, dtos); - } - - public virtual async Task CreateAsync(UploadMediaStreamContent input) + public virtual async Task CreateAsync(CreateMediaInputStream inputStream) { var newId = GuidGenerator.Create(); - var newEntity = new MediaDescriptor(newId, CurrentTenant.Id, input.Name, input.MimeType, input.ContentLength ?? 0); + var stream = inputStream.GetStream(); + var newEntity = new MediaDescriptor(newId, CurrentTenant.Id, inputStream.Name, inputStream.ContentType, stream.Length); await MediaDescriptorRepository.InsertAsync(newEntity); - await MediaContainer.SaveAsync(newId.ToString(), input.GetStream()); + await MediaContainer.SaveAsync(newId.ToString(), stream); return ObjectMapper.Map(newEntity); } - public virtual async Task UpdateAsync(Guid id, UpdateMediaDescriptorDto input) - { - var entity = await MediaDescriptorRepository.GetAsync(id); - - entity.SetName(input.Name); - - await MediaDescriptorRepository.UpdateAsync(entity); - - return ObjectMapper.Map(entity); - } - public virtual async Task DeleteAsync(Guid id) { await MediaContainer.DeleteAsync(id.ToString()); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs index ce4325978d..c310ffbe67 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -12,7 +13,7 @@ namespace Volo.CmsKit.Admin.MediaDescriptors [RequiresGlobalFeature(typeof(MediasFeature))] [RemoteService(Name = CmsKitCommonRemoteServiceConsts.RemoteServiceName)] [Area("cms-kit")] - [Route("api/cms-kit-admin/medias")] + [Route("api/cms-kit-admin/media")] public class MediaDescriptorAdminController : CmsKitAdminController, IMediaDescriptorAdminAppService { protected readonly IMediaDescriptorAdminAppService MediaDescriptorAdminAppService; @@ -22,43 +23,44 @@ namespace Volo.CmsKit.Admin.MediaDescriptors MediaDescriptorAdminAppService = mediaDescriptorAdminAppService; } - [HttpGet] - [Route("{id}")] - public virtual Task GetAsync(Guid id) - { - return MediaDescriptorAdminAppService.GetAsync(id); - } - - [HttpGet] - public virtual Task> GetListAsync(MediaDescriptorGetListInput input) - { - return MediaDescriptorAdminAppService.GetListAsync(input); - } - [HttpPost] - public virtual Task CreateAsync(UploadMediaStreamContent input) - { - return MediaDescriptorAdminAppService.CreateAsync(input); - } - - [HttpPut] - [Route("{id}")] - public virtual Task UpdateAsync(Guid id, UpdateMediaDescriptorDto input) + [NonAction] + public virtual Task CreateAsync(CreateMediaInputStream inputStream) { - return MediaDescriptorAdminAppService.UpdateAsync(id, input); + return MediaDescriptorAdminAppService.CreateAsync(inputStream); } [HttpDelete] + [Route("{id}")] public virtual Task DeleteAsync(Guid id) { return MediaDescriptorAdminAppService.DeleteAsync(id); } [HttpGet] - [Route("download/{id}")] + [Route("{id}")] public virtual Task DownloadAsync(Guid id, GetMediaRequestDto request) { return MediaDescriptorAdminAppService.DownloadAsync(id, request); } + + [HttpPost] + public virtual async Task UploadAsync(IFormFile file) + { + if (file == null) + { + return BadRequest(); + } + + var inputStream = new CreateMediaInputStream(file.OpenReadStream()) + { + ContentType = file.ContentType, + Name = file.FileName + }; + + var mediaDescriptorDto = await MediaDescriptorAdminAppService.CreateAsync(inputStream); + + return StatusCode(201, mediaDescriptorDto); + } } } \ No newline at end of file