示例#1
0
 private async Task UpdateRedisAsync(Domain.AggregatesModel.GroupAggregate.Group group, GroupUser groupUser)
 {
     try
     {
         // 向redis写入群成员
         await _chatServerRedisService.WriteGroupMemberAsync(groupUser.UserId.Value, group.ChatServerGroupId, groupUser.Muted? 1 : 0);
     }
     catch (Exception ex)
     {
         _logger.LogError("Redis Error: {@RedisError}", ex);
     }
 }
示例#2
0
 private async Task UpdateRedisAsync(Domain.AggregatesModel.GroupAggregate.Group group)
 {
     try
     {
         // 向redis写入群
         await _chatServerRedisService.WriteGroupAsync(group);
     }
     catch (Exception ex)
     {
         _logger.LogError("Redis Error: {@RedisError}", ex);
     }
 }
示例#3
0
        private async Task UpdateRedisAsync(Domain.AggregatesModel.GroupAggregate.Group group)
        {
            try
            {
                // 向redis写入群
                await _chatServerRedisService.WriteGroupAsync(group);

                // 发布系统消息
                await _chatServerRedisService.WriteGroupMessageAsync(group, SysMsgType.GROUP_INFO_CHANGED);
            }
            catch (Exception ex)
            {
                _logger.LogError("Redis Error: {@RedisError}", ex);
            }
        }
示例#4
0
        public async Task <GroupViewModel> Handle(CreateGroupCommand request, CancellationToken cancellationToken)
        {
            var myId  = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var group = new Domain.AggregatesModel.GroupAggregate.Group(request.Name, request.Avatar, myId, request.MemberIds);

            _groupRepository.Add(group);

            if (await _groupRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken))
            {
                // BackwardCompatibility: 为了兼容以前的聊天服务,需要向redis写入相关数据
                await UpdateRedisAsync(group);

                return(await _groupQueries.GetGroupAsync(group.Id, null));
            }

            throw new ApplicationException("操作失败");
        }
        private async Task UpdateRedisAsync(QuitGroupCommand request, Domain.AggregatesModel.GroupAggregate.Group group, Guid myId)
        {
            try
            {
                // 从redis去掉被删除的群成员
                await _chatServerRedisService.RemoveGroupMemberAsync(myId, group.ChatServerGroupId);

                // 发布系统消息
                var operatorUser = await _userRepository.GetByIdAsync(myId);

                var changedUsers = new List <Domain.AggregatesModel.UserAggregate.User> {
                    operatorUser
                };
                await _chatServerRedisService.WriteGroupMemberMessageAsync(group, SysMsgType.MEMBER_SECEDED, changedUsers, operatorUser);
            }
            catch (Exception ex)
            {
                _logger.LogError("Redis Error: {@RedisError}", ex);
            }
        }
示例#6
0
        private async Task UpdateRedisAsync(Domain.AggregatesModel.GroupAggregate.Group group)
        {
            try
            {
                // 向redis写入群
                await _chatServerRedisService.WriteGroupAsync(group);

                // 向redis写入群成员
                foreach (var groupUser in group.GroupUsers)
                {
                    await _chatServerRedisService.WriteGroupMemberAsync(groupUser.UserId.Value, group.ChatServerGroupId, 0);
                }

                // 发布系统消息
                await _chatServerRedisService.WriteGroupMessageAsync(group, SysMsgType.GROUP_CREATED);
            }
            catch (Exception ex)
            {
                _logger.LogError("Redis Error: {@RedisError}", ex);
            }
        }
示例#7
0
        private async Task UpdateRedisAsync(ChangeGroupOwnerCommand request, Domain.AggregatesModel.GroupAggregate.Group group, Guid operatorId)
        {
            try
            {
                // 向redis写入群
                await _chatServerRedisService.WriteGroupAsync(group);

                // 发布系统消息
                var changedUsers = await _userRepository.GetUsersAsync(new List <Guid> {
                    request.NewOwnerId
                });

                var operatorUser = await _userRepository.GetByIdAsync(operatorId);

                await _chatServerRedisService.WriteGroupMemberMessageAsync(group, SysMsgType.OWNER_CHANGED, changedUsers, operatorUser);
            }
            catch (Exception ex)
            {
                _logger.LogError("Redis Error: {@RedisError}", ex);
            }
        }
示例#8
0
        private async Task UpdateRedisAsync(Domain.AggregatesModel.GroupAggregate.Group group)
        {
            try
            {
                // 从redis去除group
                await _chatServerRedisService.RemoveGroupAsync(group.ChatServerGroupId);

                // 从redis去除group members
                var userIds = group.GroupUsers.Select(gu => gu.UserId.Value);
                foreach (var userId in userIds)
                {
                    await _chatServerRedisService.RemoveGroupMemberAsync(userId, group.ChatServerGroupId);
                }

                // 发布系统消息
                await _chatServerRedisService.WriteGroupMessageAsync(group, SysMsgType.GROUP_DISMISSED);
            }
            catch (Exception ex)
            {
                _logger.LogError("Redis Error: {@RedisError}", ex);
            }
        }
        private async Task UpdateRedisAsync(ModifyGroupMembersCommand request, Domain.AggregatesModel.GroupAggregate.Group group, Guid operatorId)
        {
            try
            {
                // 从redis去掉被删除的群成员
                foreach (var memberId in request.RemovedMemberIds)
                {
                    await _chatServerRedisService.RemoveGroupMemberAsync(memberId, group.ChatServerGroupId);
                }

                // 向redis加入新增的群成员
                foreach (var memberId in request.NewMemberIds)
                {
                    await _chatServerRedisService.WriteGroupMemberAsync(memberId, group.ChatServerGroupId, 0);
                }

                // 发布系统消息
                var operatorUser = await _userRepository.GetByIdAsync(operatorId);

                if (request.RemovedMemberIds != null && request.RemovedMemberIds.Count > 0)
                {
                    var removedUsers = await _userRepository.GetUsersAsync(request.RemovedMemberIds);

                    await _chatServerRedisService.WriteGroupMemberMessageAsync(group, SysMsgType.REMOVED_FROM_GROUP, removedUsers, operatorUser);
                }

                if (request.NewMemberIds != null && request.NewMemberIds.Count > 0)
                {
                    var addedUsers = await _userRepository.GetUsersAsync(request.NewMemberIds);

                    await _chatServerRedisService.WriteGroupMemberMessageAsync(group, SysMsgType.NEW_MEMBER_ADDED, addedUsers, operatorUser);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Redis Error: {@RedisError}", ex);
            }
        }