public Mono<GroupMembersWithVersion> authAndQueryGroupMembers(
            @NotNull Long requesterId,
            @NotNull Long groupId,
            @NotEmpty Set<Long> memberIds,
            boolean withStatus) {
        try {
            Validator.notEmpty(memberIds, "memberIds");
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        return isGroupMember(groupId, requesterId, false)
                .flatMap(isGroupMember -> isGroupMember == null || !isGroupMember
                        ? Mono.error(ResponseException.get(
                                ResponseStatusCode.NOT_GROUP_MEMBER_TO_QUERY_GROUP_MEMBER_INFO))
                        : queryGroupMembers(groupId, memberIds, false))
                .flatMap(members -> {
                    if (members.isEmpty()) {
                        return ResponseExceptionPublisherPool.noContent();
                    }
                    GroupMembersWithVersion.Builder builder =
                            ClientMessagePool.getGroupMembersWithVersionBuilder();
                    if (withStatus) {
                        return fillMembersBuilderWithStatus(members, builder);
                    }
                    for (GroupMember member : members) {
                        builder.addGroupMembers(ProtoModelConvertor.groupMember2proto(member));
                    }
                    return Mono.just(builder.build());
                });
    }
@return Possible codes: {@link ResponseStatusCode#OK}
        {@link ResponseStatusCode#SEND_MESSAGE_TO_MUTED_GROUP}
        {@link ResponseStatusCode#SEND_MESSAGE_TO_INACTIVE_GROUP}
        {@link ResponseStatusCode#MUTED_GROUP_MEMBER_SEND_MESSAGE}
turms-service/src/main/java/im/turms/service/domain/group/service/GroupMemberService.java