예제 #1
0
 public override async Task Handle(TradeRollbackDto input)
 {
     await HandleAsync(input, async() =>
     {
         //获取交易对象
         var trade = await tradeRepository.GetAsync(x => x.UserId == input.UserId);
         if (trade == null)
         {
             throw new ApplicationException("没有找到账户交易信息!");
         }
         //执行款项变更
         trade.OperationBalance(input.TotalPrice);
         //添加交易流水
         var record = new TradeRecordFactory().Create(trade.Id, input.TotalPrice);
         using (var tran = transaction.BeginTransaction())
         {
             //仓储添加
             tradeRepository.Update(trade);
             tradeRecordRepository.Add(record);
             //工作单元持久化
             await tradeRepository.SaveAsync();
             tran.Commit();
         }
     });
 }
예제 #2
0
        public async Task <Result <TradeRecord> > CreateTradeRecordAsync(string houseId, string sellerId, string buyerId, string description = null)
        {
            Result check = await _tradeCenterDomainService.CanTradeAsync(houseId);

            if (!check.Succeed)
            {
                return(Result <TradeRecord> .Fail(check.Message));
            }

            TradeRecord tradeRecord = new TradeRecord(houseId, sellerId, buyerId, description);

            _tradeRecordRepository.Add(tradeRecord);
            if (await _unitOfWork.CommitAsync())
            {
                // send event to house and wait
                await _publisher.Publish(new HouseTradedEvent(houseId, buyerId), PublishStrategy.ParallelNoWait);
            }

            return(Result <TradeRecord> .Success(tradeRecord));
        }
예제 #3
0
 public async Task <BaseApiResult <bool> > Excute(AccountRechargeDto input)
 {
     return(await HandleAsync(input, async() =>
     {
         //获取交易对象
         var trade = await tradeRepository.GetAsync(x => x.UserId == input.UserId);
         if (trade == null)
         {
             throw new ApplicationException("没有找到账户交易信息!");
         }
         //执行款项变更
         trade.OperationBalance(input.RechargeBalance);
         //获取用户状态
         var userState = (await getUserState.Query(new BaseAuthDto()
         {
             UserId = input.UserId
         })).Data;
         //添加交易流水
         var record = new TradeRecordFactory().Create(trade.Id, input.RechargeBalance);
         //规约校验
         if (await new AccountRechargeCreateSpecification((UserStateEnum)userState.State).SatisfiedBy(trade))
         {
             using (var tran = transaction.BeginTransaction())
             {
                 //仓储添加
                 tradeRepository.Update(trade);
                 tradeRecordRepository.Add(record);
                 //工作单元持久化
                 await tradeRepository.SaveAsync();
                 tran.Commit();
                 return true;
             }
         }
         return false;
     }));
 }
예제 #4
0
 public void Add(TradeRecord obj)
 {
     _tradeRecordRepository.Add(obj);
 }