private async Task SendAppointmentDealCreatedEventAsync(Domain.AggregatesModel.PostAggregate.Post deal) { var @event = new AppointmentDealCreatedEvent { User1Id = deal.UserId, User2Id = deal.AppointmentedUserId.Value, // user1是约拍发出方,他的角色应该和约拍时希望约的角色相反 User1Type = (int)(deal.AppointmentedUserType == AppointmentedUserType.Model ? AppointmentedUserType.Photographer : AppointmentedUserType.Model), // user2是约拍接收方,他的角色就是约拍时希望约的角色 User2Type = (int)deal.AppointmentedUserType, DealId = deal.Id, AppointmentedUserType = (int)deal.AppointmentedUserType, PayerType = (int)deal.PayerType, Price = deal.Price ?? 0, AppointedTime = deal.AppointedTime.Value, PayerId = deal.PayerType == PayerType.Free ? null : (deal.PayerType == PayerType.Me ? deal.UserId : deal.AppointmentedUserId), Text = deal.Text, Latitude = deal.Latitude.Value, Longitude = deal.Longitude.Value, LocationName = deal.LocationName, Address = deal.Address }; _messageSession = (IMessageSession)_serviceProvider.GetService(typeof(IMessageSession)); await _messageSession.Publish(@event); _logger.LogInformation("----- Published AppointmentDealCreatedEvent: {IntegrationEventId} from {AppName} - ({@IntegrationEvent})", @event.Id, Program.AppName, @event); }
private async Task <IEnumerable <string> > GetAtNicknamesAsync(Domain.AggregatesModel.PostAggregate.Post post) { var nicknames = GetAtNicknames(post.Text); if (post.ForwardedPostId != null && (post.ShowOriginalText ?? false)) { var forwardedPost = await _postContext.Posts.FirstOrDefaultAsync(p => p.Id == post.ForwardedPostId.Value); nicknames = nicknames.Union(GetAtNicknames(forwardedPost.Text)); } return(nicknames); }
private async Task SendPostRepliedEventAsync(Domain.AggregatesModel.PostAggregate.Post post, Guid repliedUserId, string text) { var @event = new PostRepliedEvent { FromUserId = repliedUserId, ToUserId = post.UserId, PostId = post.Id, Text = text }; _messageSession = (IMessageSession)_serviceProvider.GetService(typeof(IMessageSession)); await _messageSession.Publish(@event); _logger.LogInformation("----- Published PostRepliedEvent: {IntegrationEventId} from {AppName} - ({@IntegrationEvent})", @event.Id, Program.AppName, @event); }
public async Task <List <Guid> > GetAtUserIdsAsync(Domain.AggregatesModel.PostAggregate.Post post) { var atNicknames = await GetAtNicknamesAsync(post); var atUserIds = _postContext.Users.Where(u => atNicknames.Contains(u.Nickname)).Select(u => u.Id); if (post.Visibility == Visibility.Friends || post.Visibility == Visibility.Password) { var friendIds = GetFriendsIds(post.UserId); atUserIds = atUserIds.Intersect(friendIds); } else if (post.Visibility == Visibility.SelectedFriends) { atUserIds = from id in atUserIds join upr in _postContext.UserPostRelations on id equals upr.UserId where upr.PostId == post.Id && upr.UserPostRelationType == UserPostRelationType.View select id; } return(await atUserIds.ToListAsync()); }