From 4b30e6c0931a5159322c51f6e1f85148fa9c1daf Mon Sep 17 00:00:00 2001 From: Jadyn Date: Sat, 16 Jul 2022 20:06:49 +0800 Subject: [PATCH] Return `CreateOrderDto` --- .../FlashSales/FlashSalePlans/Dtos/CreateOrderDto.cs | 11 +++++++++++ .../FlashSalePlans/IFlashSalePlanAppService.cs | 2 +- .../FlashSalePlans/FlashSalePlanAppService.cs | 6 +++--- .../FlashSalePlans/FlashSalePlanController.cs | 2 +- .../FlashSalePlans/FlashSalePlanAppServiceTests.cs | 7 +++++-- 5 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/Dtos/CreateOrderDto.cs diff --git a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/Dtos/CreateOrderDto.cs b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/Dtos/CreateOrderDto.cs new file mode 100644 index 00000000..e3f54829 --- /dev/null +++ b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/Dtos/CreateOrderDto.cs @@ -0,0 +1,11 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace EasyAbp.EShop.Plugins.FlashSales.FlashSalePlans.Dtos; + +public class CreateOrderDto : ExtensibleEntityDto +{ + public bool IsSuccess { get; set; } + + public Guid? FlashSaleResultId { get; set; } +} diff --git a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/IFlashSalePlanAppService.cs b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/IFlashSalePlanAppService.cs index 2d8c7130..55b211ea 100644 --- a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/IFlashSalePlanAppService.cs +++ b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application.Contracts/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/IFlashSalePlanAppService.cs @@ -15,5 +15,5 @@ public interface IFlashSalePlanAppService : { Task PreOrderAsync(Guid id); - Task OrderAsync(Guid id, CreateOrderInput input); + Task OrderAsync(Guid id, CreateOrderInput input); } diff --git a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppService.cs b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppService.cs index 86121c50..257d88b1 100644 --- a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppService.cs +++ b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.Application/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppService.cs @@ -216,7 +216,7 @@ public class FlashSalePlanAppService : return new FlashSalePlanPreOrderDto { ExpiresTime = Clock.Normalize(expiresTime.LocalDateTime), ExpiresInSeconds = Options.PreOrderExpires.TotalSeconds }; } - public virtual async Task OrderAsync(Guid id, CreateOrderInput input) + public virtual async Task OrderAsync(Guid id, CreateOrderInput input) { var preOrderCache = await GetPreOrderCacheAsync(id); if (preOrderCache == null) @@ -259,7 +259,7 @@ public class FlashSalePlanAppService : plan.TenantId, preOrderCache.InventoryProviderName, plan.StoreId, plan.ProductId, plan.ProductSkuId, 1, true)) { - return false; + return new CreateOrderDto() { IsSuccess = false }; } var result = await CreatePendingFlashSaleResultAsync(plan, userId, async (existsResultId) => @@ -278,7 +278,7 @@ public class FlashSalePlanAppService : await DistributedEventBus.PublishAsync(createFlashSaleOrderEto); - return true; + return new CreateOrderDto() { IsSuccess = true, FlashSaleResultId = result.Id }; } #region PreOrderCache diff --git a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.HttpApi/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanController.cs b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.HttpApi/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanController.cs index 868da3ad..c0cd3732 100644 --- a/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.HttpApi/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanController.cs +++ b/plugins/FlashSales/src/EasyAbp.EShop.Plugins.FlashSales.HttpApi/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanController.cs @@ -58,7 +58,7 @@ public class FlashSalePlanController : } [HttpPost("{id}/order")] - public virtual Task OrderAsync(Guid id, CreateOrderInput input) + public virtual Task OrderAsync(Guid id, CreateOrderInput input) { return Service.OrderAsync(id, input); } diff --git a/plugins/FlashSales/test/EasyAbp.EShop.Plugins.FlashSales.Application.Tests/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppServiceTests.cs b/plugins/FlashSales/test/EasyAbp.EShop.Plugins.FlashSales.Application.Tests/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppServiceTests.cs index 879eb260..ccdc05ea 100644 --- a/plugins/FlashSales/test/EasyAbp.EShop.Plugins.FlashSales.Application.Tests/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppServiceTests.cs +++ b/plugins/FlashSales/test/EasyAbp.EShop.Plugins.FlashSales.Application.Tests/EasyAbp/EShop/Plugins/FlashSales/FlashSalePlans/FlashSalePlanAppServiceTests.cs @@ -364,7 +364,8 @@ public class FlashSalePlanAppServiceTests : FlashSalesApplicationTestBase var isSucess = await AppService.OrderAsync(plan.Id, createOrderInput); - isSucess.ShouldBe(true); + isSucess.IsSuccess.ShouldBe(true); + isSucess.FlashSaleResultId.ShouldNotBeNull(); await DistributedEventBus.Received().PublishAsync(Arg.Is(eto => eto.TenantId == plan.TenantId && eto.StoreId == plan.StoreId && @@ -463,7 +464,9 @@ public class FlashSalePlanAppServiceTests : FlashSalesApplicationTestBase FakeFlashSaleInventoryManager.ShouldReduceSuccess = false; - (await AppService.OrderAsync(plan.Id, createOrderInput)).ShouldBe(false); + var createOrderDto = await AppService.OrderAsync(plan.Id, createOrderInput); + createOrderDto.IsSuccess.ShouldBe(false); + createOrderDto.FlashSaleResultId.ShouldBeNull(); } [Fact]