public async Task OnDomainEventAsync(IDomainEventingContext context, WithdrawTransactionSubmittedDomainEvent @event, CancellationToken token = default) { var sql = $"UPDATE `{Tables.BankAccounts}` SET `Balance`=`Balance`-@Amount WHERE `Id`=@AccountId;"; var po = new { AccountId = @event.AggregateRootId.Id, Amount = @event.Money.Amount }; await _db.ExecuteAsync(sql, po, token); }
/// <summary> /// 4. 从银行账户聚合根,收到取款账户交易已提交的领域事件,通知取款交易聚合根确认。 /// </summary> /// <param name="context">事件处理上下文</param> /// <param name="event"></param> public void OnDomainEvent(IDomainEventingContext context, WithdrawTransactionSubmittedDomainEvent @event) { var command = new ConfirmWithdrawTransactionSubmittedDomainCommand(@event.TransactionId, @event.AccountBalance, @event.AccountInAmountInFlight, @event.AccountOutAmountInFlight); context.PublishDomainCommand(command); }