コード例 #1
0
        public async Task <ServiceResult <object> > KickUser(User owner, ChatGroup chatGroup, User user)
        {
            var owns = await OwnsGroup(owner, chatGroup);

            if (!owns.ExtraData)
            {
                return(Unauthorized(owns.Detail));
            }
            if (chatGroup.CreatorId == user.Id)
            {
                return(Invalid("不能踢群主"));
            }
            var membership = Context.GroupMemberships.FirstOrDefault(m => m.UserId == user.Id && m.ChatGroupId == chatGroup.Id);

            if (membership == null)
            {
                return(NotFound("该成员已不在群聊"));
            }
            Context.GroupMemberships.Remove(membership);
            await Context.SaveChangesAsync();

            if (ConnectionService.IsOnline(user.Id))
            {
                await HubContext.Groups.RemoveFromGroupAsync(ConnectionService.GetConnectionId(user.Id), chatGroup.Id.ToString());
            }
            UserDetailAndGroupDetail detail = new UserDetailAndGroupDetail {
                Group = chatGroup.ToDetail(), User = user.ToDetail()
            };
            await NotificationService.NotifyGroupMembers(chatGroup.Id, JsonHelper.ToJson(detail), NotificationTypeEnum.UserKicked);

            await NotificationService.Notify(user.Id, JsonHelper.ToJson(detail), NotificationTypeEnum.UserKicked);

            return(Success("移除群聊成功"));
        }
コード例 #2
0
        public async Task <ServiceResult <object> > JoinGroup(User user, ChatGroup chatGroup)
        {
            var membership = Context.GroupMemberships.FirstOrDefault(m => m.UserId == user.Id && m.ChatGroupId == chatGroup.Id);

            if (membership != null)
            {
                return(Exist("您已在该群中"));
            }
            var request = Context.JoinGroupRequests.FirstOrDefault(r => r.User.Id == user.Id && r.Group.Id == chatGroup.Id);

            if (request != null)
            {
                return(Exist("您已经申请加群"));
            }
            request = new JoinGroupRequest {
                User = user, Group = chatGroup
            };
            Context.JoinGroupRequests.Add(request);
            await Context.SaveChangesAsync();

            UserDetailAndGroupDetail detail = new UserDetailAndGroupDetail
            {
                User      = user.ToDetail(),
                Group     = chatGroup.ToDetail(),
                RequestId = request.Id,
            };
            await NotificationService.Notify(chatGroup.Creator.Id, JsonHelper.ToJson(detail), NotificationTypeEnum.JoinRequest);

            return(Success("加群申请成功"));
        }