コード例 #1
0
        public async Task <IEnumerable <GrouponParticipationDTO> > Get(string activityId, int pageIndex, int pageSize)
        {
            var result         = new List <GrouponParticipationDTO>();
            var participations = _grouponParticipationRepository
                                 .GetFiltered(o => o.GrouponActivityId == activityId)
                                 .Skip((pageIndex - 1) * pageSize)
                                 .Take(pageSize);

            foreach (var item in participations)
            {
                var user = await _authServiceProxy.GetUser(item.UserId);

                var nickName        = user?.NickName ?? string.Empty;
                var userPortraitUrl = user?.PortraitUrl ?? string.Empty;
                result.Add(new GrouponParticipationDTO
                {
                    BuyCount          = item.BuyCount,
                    GrouponActivityId = item.GrouponActivityId,
                    NickName          = nickName,
                    OrderId           = item.OrderId,
                    ParticipateTime   = item.ParticipateTime.ToString("yyyy-MM-dd HH:mm"),
                    UserId            = item.UserId,
                    UserPortraitUrl   = userPortraitUrl
                });
            }
            return(result);
        }
コード例 #2
0
        public async Task <IEnumerable <GrouponActivityDTO> > Get(string productId, string productMark)
        {
            var ret    = new List <GrouponActivityDTO>();
            var now    = DateTime.Now;
            var result = _grouponActivityRepository.GetFiltered(o => (o.ProductId == productId && o.ProductMark == productMark) && o.Status == Domains.Aggregates.ActivityStatus.InProgress && o.Start <= now && o.End >= now);

            foreach (var item in result)
            {
                var participations = _grouponParticipationRepository.GetFiltered(g => g.GrouponActivityId == item.Id).Select(a =>
                {
                    return(new GrouponParticipationDTO
                    {
                        BuyCount = a.BuyCount,
                        GrouponActivityId = a.GrouponActivityId,
                        OrderId = a.OrderId,
                        ParticipateTime = a.ParticipateTime.ToString("yyyy-MM-dd HH:mm"),
                        UserId = a.UserId
                    });
                }).ToList();

                var creator = await _authServiceProxy.GetUser(item.CreatedBy);

                ret.Add(new GrouponActivityDTO
                {
                    Id                    = item.Id,
                    Count                 = item.Count,
                    CreatedBy             = item.CreatedBy,
                    CreatedOn             = item.CreatedOn,
                    End                   = item.End,
                    ProductId             = item.ProductId,
                    Start                 = item.Start,
                    Status                = item.Status,
                    UnitPrice             = item.UnitPrice,
                    GrouponParticipations = participations,
                    CreatorName           = creator?.NickName,
                    CreatorPortraitUrl    = creator?.PortraitUrl
                });
            }
            ;
            return(ret);
        }
コード例 #3
0
        public void Handle(GrouponParticipatedEvent evnt)
        {
            var eventSource = evnt.Source as GrouponParticipation;

            var activity = _grouponActivityRepository.Get(eventSource.GrouponActivityId);

            if (activity == null)
            {
                throw new Exception("找不到指定的活动记录。");
            }

            var buyCount = _grouponParticipationRepository.GetFiltered(o => o.GrouponActivityId == eventSource.GrouponActivityId).Sum(g => g.BuyCount);


            if (buyCount >= activity.Count)
            {
                activity.SetCompleted();
            }

            _grouponActivityRepository.Update(activity);
            _dbUnitOfWork.Commit();

            _bus.Publish(evnt);
        }