public async Task <bool> Handle(QuitCircleCommand request, CancellationToken cancellationToken) { var myId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); var userCircle = await _userCircleRelationRepository.GetRelationAsync(request.CircleId, myId); if (userCircle == null) { return(true); } var circle = await _circleRepository.GetByIdAsync(request.CircleId); if (circle.OwnerId == myId) { throw new ClientException("操作失败", new List <string> { $"User {myId} is the owner of the circle {request.CircleId}, can't quit circle." }); } userCircle.Quit(); _userCircleRelationRepository.Remove(userCircle); return(await _userCircleRelationRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken)); }
public async Task <bool> Handle(AddCircleMemberCommand request, CancellationToken cancellationToken) { var circle = await _circleRepository.GetByIdAsync(request.CircleId); if (circle == null) { throw new ClientException("操作失败", new List <string> { $"Circle {request.CircleId} dos not exist." }); } var myId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); if (circle.OwnerId != myId) { throw new ClientException("当前用户不是圈主", new List <string> { $"Circle {request.CircleId} does not belong to user {myId}" }); } // 添加并发送用户已入圈事件 if (await AddCircleMemberAsync(circle.Id, request.UserId, _userCircleRelationRepository, cancellationToken)) { var messageSession = (IMessageSession)_serviceProvider.GetService(typeof(IMessageSession)); await SendJoinedCircleEventAsync(circle, request.UserId, messageSession, _logger); return(true); } throw new ApplicationException("操作失败"); }
public async Task Handle(JoinedCircleDomainEvent notification, CancellationToken cancellationToken) { _logger.LogInformation("----- Handling JoinedCircleDomainEvent: at {AppName} - ({@DomainEvent})", Program.AppName, notification); var circle = await _circleRepository.GetByIdAsync(notification.CircleId); circle.IncreaseUserCount(); }
public async Task <bool> Handle(JoinCircleCommand request, CancellationToken cancellationToken) { var myId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); var userCircle = await _userCircleRelationRepository.GetRelationAsync(request.CircleId, myId); if (userCircle == null) { var circle = await _circleRepository.GetByIdAsync(request.CircleId); if (circle == null) { throw new ClientException("操作失败", new List <string> { $"Circle {request.CircleId} dos not exist." }); } _messageSession = (IMessageSession)_serviceProvider.GetService(typeof(IMessageSession)); if (circle.VerifyJoin) { // 发送用户申请入圈事件 await SendAppliedJoinCircleEventAsync(myId, circle, request.Description); return(true); } // 无需审核,直接入圈,创建user circle关系 ////await _addCircleMemberCommandHandler.AddCircleMemberAsync(circle, myId, cancellationToken); //userCircle = new UserCircleRelation(myId, request.CircleId); //_userCircleRelationRepository.Add(userCircle); //if (await _userCircleRelationRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken)) //{ // await SendJoinedCircleEventAsync(myId, circle); // return true; //} //添加并发送用户已入圈事件 if (await AddCircleMemberCommandHandler.AddCircleMemberAsync(circle.Id, myId, _userCircleRelationRepository, cancellationToken)) { await AddCircleMemberCommandHandler.SendJoinedCircleEventAsync(circle, myId, _messageSession, _logger); return(true); } // 保存失败 throw new ApplicationException("操作失败"); } throw new ClientException("操作失败", new List <string> { $"User {myId} is already in circle {request.CircleId}" }); }
public async Task <bool> Handle(UpdateCircleCommand request, CancellationToken cancellationToken) { var circle = await _circleRepository.GetByIdAsync(request.Id); if (circle == null) { throw new ClientException("圈子不存在"); } var myId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); circle.Update(request.Name, request.Description, request.VerifyJoin, request.BackgroundImage, myId); return(await _circleRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken)); }
public async Task <bool> Handle(MarkGoodPostCommand request, CancellationToken cancellationToken) { var post = await _postRepository.GetByIdAsync(request.PostId); if (post == null) { throw new ClientException("操作失败", new List <string> { $"Post {request.PostId} does not exist." }); } if (post.CircleId == null) { throw new ClientException("操作失败", new List <string> { $"Post {request.PostId} is not in any circle." }); } // 圈子主人必须是当前用户 var circle = await _circleRepository.GetByIdAsync(post.CircleId.Value); var myId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); if (circle.OwnerId != myId) { throw new ClientException("当前用户不是圈主", new List <string> { $"User {myId} is not the owner of circle {circle.Id}" }); } if (request.Good) { post.MarkCircleGood(); } else { post.UnMarkCircleGood(); } return(await _postRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken)); }