/// <summary> /// 3. 从转账交易聚合根,收到交易信息已准备就绪的领域事件,向银行账户聚合根,向银行账户提交转账交易。 /// </summary> /// <param name="context">事件处理上下文</param> /// <param name="event">交易信息已准备就绪的领域事件</param> public void OnDomainEvent(IDomainEventingContext context, TransferTransactionReadiedDomainEvent @event) { // 1. 从源账户取款 var withdraw = new SubmitTransferTransactionDomainCommand(@event.AggregateRootId, @event.SourceAccountId); context.PublishDomainCommand(withdraw); // 2. 存到目标账户 var deposit = new SubmitTransferTransactionDomainCommand(@event.AggregateRootId, @event.SinkAccountId); context.PublishDomainCommand(deposit); }
public async Task OnDomainEventAsync(IDomainEventingContext context, TransferTransactionReadiedDomainEvent @event, CancellationToken token = default) { var updateWithdrawSql = $"UPDATE `{Tables.AccountOutTransactions}` SET `Status`=@Status WHERE `Id`=@TransactionId;"; var updateDepositSql = $"UPDATE `{Tables.AccountInTransactions}` SET `Status`=@Status WHERE `Id`=@TransactionId;"; var po = new { TransactionId = @event.AggregateRootId.Id, Status = @event.Status.ToString() }; await _db.ExecuteAsync(updateWithdrawSql, po, token); await _db.ExecuteAsync(updateDepositSql, po, token); }