Exemple #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();
         }
     });
 }
 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;
     }));
 }