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("移除群聊成功")); }
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("加群申请成功")); }