예제 #1
0
        /// <summary>
        /// 订单付款确认信息 提交商品规格预定
        /// </summary>
        /// <param name="evnt"></param>
        /// <returns></returns>
        public Task <AsyncTaskResult> HandleAsync(OrderPaymentConfirmedEvent evnt)
        {
            var tasks = new List <Task>();
            //通过商品ID 分组
            var goodsGroup = evnt.OrderTotal.Lines.GroupBy(x => x.SpecificationQuantity.Specification.GoodsId);

            foreach (var goods in goodsGroup)
            {
                //每个商品都发送确认预定信息
                if (evnt.OrderStatus == OrderStatus.PaymentSuccess)
                {
                    tasks.Add(_commandService.SendAsync(new CommitSpecificationReservationCommand(
                                                            goods.Key,
                                                            evnt.AggregateRootId)));
                }
                else if (evnt.OrderStatus == OrderStatus.PaymentRejected)
                {
                    tasks.Add(_commandService.SendAsync(new CancelSpecificationReservationCommand(
                                                            goods.Key,
                                                            evnt.AggregateRootId)));
                }
            }
            Task.WaitAll(tasks.ToArray());
            return(Task.FromResult(AsyncTaskResult.Success));
        }
예제 #2
0
 public Task <AsyncTaskResult> HandleAsync(OrderPaymentConfirmedEvent evnt)
 {
     return(TryUpdateRecordAsync(connection =>
     {
         return connection.UpdateAsync(new
         {
             Status = (int)evnt.OrderStatus,
             Version = evnt.Version
         }, new
         {
             OrderId = evnt.AggregateRootId,
             //Version = evnt.Version - 1
         }, ConfigSettings.OrderTable);
     }));
 }
예제 #3
0
 public async Task Handle(OrderPaymentConfirmedEvent notification, CancellationToken cancellationToken)
 {
     await _mediatorHandler.SendCommand(new CompleteOrderCommand(notification.OrderId, notification.CustomerId));
 }
예제 #4
0
 private void Handle(OrderPaymentConfirmedEvent evnt)
 {
     _status  = evnt.OrderStatus;
     _payInfo = evnt.PayInfo;
 }