public async Task <TransactionCoordinator> CreateAsync(CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); cancellationToken.Register(() => _tcs.TrySetCanceled()); var attach = new Attach { Target = new Coordinator { Capabilities = new[] { TxnCapabilities.LocalTransactions } }, Source = new Source(), SndSettleMode = SenderSettleMode.Unsettled, RcvSettleMode = ReceiverSettleMode.First }; var senderLink = new SenderLink(_session, GetName(), attach, OnAttached); senderLink.AddClosedCallback(OnClosed); await _tcs.Task.ConfigureAwait(false); var transactionCoordinator = new TransactionCoordinator(senderLink); senderLink.Closed -= OnClosed; return(transactionCoordinator); }
public void AddVerification(VerificationDTO verificationDTO) { using (ITransactionCoordinator coordinator = new TransactionCoordinator(_dbUnitOfWork, _eventBus)) { var verifications = _verificationRepository.GetFiltered(o => o.IsSuspend == false && o.To == verificationDTO.To && o.BizCode == verificationDTO.BizCode).ToList(); _verificationService.SetVerificationsSuspend(verifications); var verification = VerificationFactory.CreateVerification(verificationDTO.BizCode, verificationDTO.To); verification.CreatedConfirm(); _verificationRepository.Add(verification); coordinator.Commit(); } }
public void ShelveGoods(string id, string operatorId) { using (ITransactionCoordinator coordinator = new TransactionCoordinator(_dbUnitOfWork, _eventBus)) { var goods = _goodsRepository.Get(id); if (goods != null) { goods.GoodsImages = _goodsImageRepository.GetFiltered(o => o.GoodsId == goods.Id).ToList(); goods.GrouponConditions = _grouponConditionRepository.GetFiltered(o => o.GoodsId == goods.Id).ToList(); goods.ResolveAddress(); goods.SetShelved(); _goodsRepository.Update(goods); goods.ShelvedConfirm(); coordinator.Commit(); } } }
public void OrderShipped(string orderId, string operatorId) { using (ITransactionCoordinator coordinator = new TransactionCoordinator(_dbUnitOfWork, _eventBus)) { var order = _orderRepository.Get(orderId); if (order == null) { throw new Exception("找不到指定的订单."); } order.SetShipped(); order.ConfirmShipped(); coordinator.Commit(); } }
public OrderDTO SubmitOrder(OrderDTO model, string operatorId) { using (ITransactionCoordinator coordinator = new TransactionCoordinator(_dbUnitOfWork, _eventBus)) { var orderItems = model.OrderItems?.Select(item => new OrderItem { Count = item.Count, ObjectId = item.ObjectId, ObjectNo = item.ObjectNo, OrderId = item.OrderId, PreviewPictureUrl = item.PreviewPictureUrl, SelectedProperties = item.SelectedProperties, Title = item.Title, TradeUnitPrice = item.TradeUnitPrice })?.ToList(); var obj = OrderFactory.CreateOrder( model.TotalAmount, model.ShippingCost, model.PreferentialAmount, model.Tax, model.PayAmount, model.CustomerName, model.CustomerMobile, model.InvoiceType, model.CustomerAddress, orderItems, operatorId, model.Mark, model.OrganizationId, model.InvoiceRemark, model.Remark, model.ActivityId, model.Title); _orderRepository.Add(obj); orderItems.ForEach(oi => { oi.OrderId = obj.Id; _orderItemRepository.Add(oi); }); obj.ConfirmSubmited(); coordinator.Commit(); model.Id = obj.Id; return(model); } }
public Settings2(string databaseName, Connection connection, ILogger logger = null) { Logger = logger ?? new NullLogger(); //global IdAccessor = new IdAccessor(); IdManager = new ShortGuidIdManager(); RevisionAccessor = new RevisionAccessor(); TypeManager = new TypeManager(); Serializer = new Serializer(IdAccessor, RevisionAccessor); //query serializer var settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.None, NullValueHandling = NullValueHandling.Ignore, ContractResolver = new CamelCasePropertyNamesContractResolver() { NamingStrategy = new LocalCamelCaseNamingStrategy(true) } }; settings.Converters.Add(new OrderEnumConverter()); QuerySerializer = new Serializer(settings); CouchDb = new CouchDb(databaseName, connection, Serializer, QuerySerializer, Logger); QueryFactory = new QueryFactory(TypeManager, IdAccessor); TransactionCoordinator = new TransactionCoordinator(CouchDb, IdAccessor, RevisionAccessor); LoadPipeline = new LoadPipeline(CouchDb, IdManager, IdAccessor, RevisionAccessor); CommitPipeline = new CommitPipeline(CouchDb, IdManager, RevisionAccessor, TransactionCoordinator); QueryPipeline = new QueryPipeline(CouchDb, IdManager, IdAccessor, RevisionAccessor); Hash = new ToLowerPassThroughHash(); }
public void AddVerification(VerificationDTO verificationDTO) { using (ITransactionCoordinator coordinator = new TransactionCoordinator(_dbUnitOfWork, _eventBus)) { var verifications = _verificationRepository.GetFiltered(o => o.IsSuspend == false && o.To == verificationDTO.To && o.BizCode == verificationDTO.BizCode).ToList(); var lastRecord = verifications.OrderByDescending(o => o.CreatedOn).FirstOrDefault(); if (lastRecord != null) { if (lastRecord.CreatedOn.AddSeconds(60) > DateTime.Now) { return; } } _verificationService.SetVerificationsSuspend(verifications); var verification = VerificationFactory.CreateVerification(verificationDTO.BizCode, verificationDTO.To); verification.CreatedConfirm(); _verificationRepository.Add(verification); coordinator.Commit(); } }