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