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; })); }