diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/CompleteOrderEto.cs b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/CompleteOrderEto.cs new file mode 100644 index 00000000..eaa86d46 --- /dev/null +++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/CompleteOrderEto.cs @@ -0,0 +1,13 @@ +using System; +using Volo.Abp.MultiTenancy; + +namespace EasyAbp.EShop.Orders.Orders +{ + [Serializable] + public class CompleteOrderEto : IMultiTenant + { + public Guid? TenantId { get; set; } + + public Guid OrderId { get; set; } + } +} \ No newline at end of file diff --git a/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/CompleteOrderEventHandler.cs b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/CompleteOrderEventHandler.cs new file mode 100644 index 00000000..084b971b --- /dev/null +++ b/modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/CompleteOrderEventHandler.cs @@ -0,0 +1,35 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; + +namespace EasyAbp.EShop.Orders.Orders +{ + public class CompleteOrderEventHandler : IDistributedEventHandler, ITransientDependency + { + private readonly ICurrentTenant _currentTenant; + private readonly IOrderManager _orderManager; + private readonly IOrderRepository _orderRepository; + + public CompleteOrderEventHandler( + ICurrentTenant currentTenant, + IOrderManager orderManager, + IOrderRepository orderRepository) + { + _currentTenant = currentTenant; + _orderManager = orderManager; + _orderRepository = orderRepository; + } + + [UnitOfWork(true)] + public virtual async Task HandleEventAsync(CompleteOrderEto eventData) + { + using var currentTenant = _currentTenant.Change(eventData.TenantId); + + var order = await _orderRepository.GetAsync(eventData.OrderId); + + await _orderManager.CompleteAsync(order); + } + } +} \ No newline at end of file