public Task <AsyncTaskResult> HandleAsync(ServiceApplyedEvent evnt)
        {
            return(TryTransactionAsync(async(connection, transaction) =>
            {
                var info = evnt.Info;
                var effectedRows = await connection.UpdateAsync(new
                {
                    Status = (int)info.ServiceType,
                    Version = evnt.Version,
                    EventSequence = evnt.Sequence
                }, new
                {
                    Id = evnt.AggregateRootId,
                    //Version = evnt.Version - 1
                }, ConfigSettings.OrderGoodsTable, transaction);

                if (effectedRows == 1)
                {//聚合跟状态已经更新
                    var tasks = new List <Task>();

                    //插入申请记录
                    tasks.Add(connection.InsertAsync(new
                    {
                        OrderGoodsId = evnt.AggregateRootId,
                        ServiceNumber = info.ServiceNumber,
                        Quantity = info.Quantity,
                        Reason = info.Reason,
                        Remark = info.Remark,
                        CreatedOn = evnt.Timestamp
                    }, ConfigSettings.ApplyServiceTable));

                    await Task.WhenAll(tasks);
                }
            }));
        }
Esempio n. 2
0
        private void Handle(ServiceApplyedEvent evnt)
        {
            _serviceApplyInfo = evnt.Info;
            switch (evnt.Info.ServiceType)
            {
            case GoodsServiceType.Refund:
                _status = OrderGoodsStatus.Refund;
                break;

            case GoodsServiceType.SalesReturn:
                _status = OrderGoodsStatus.SalesReturn;
                break;

            case GoodsServiceType.Service:
                _status = OrderGoodsStatus.Service;
                break;

            case GoodsServiceType.ToDoorService:
                _status = OrderGoodsStatus.ToDoorService;
                break;

            case GoodsServiceType.Change:
                _status = OrderGoodsStatus.Change;
                break;
            }
        }