public Flux<Long> queryRelatedUserIds(
            @Nullable Set<Long> ownerIds,
            @Nullable Set<Integer> groupIndexes,
            @Nullable Boolean isBlocked) {
        if (groupIndexes != null && isBlocked != null) {
            Recyclable<List<Long>> recyclableList1 = ListRecycler.obtain();
            Recyclable<List<Long>> recyclableList2 = ListRecycler.obtain();
            Mono<List<Long>> queryRelationshipGroupMemberIds = userRelationshipGroupService
                    .queryRelationshipGroupMemberIds(ownerIds, groupIndexes, null, null)
                    .collect(Collectors.toCollection(recyclableList1::getValue));
            Mono<List<Long>> queryRelatedUserIds = queryRelatedUserIds(ownerIds, isBlocked)
                    .collect(Collectors.toCollection(recyclableList2::getValue));
            return Mono.zip(queryRelationshipGroupMemberIds, queryRelatedUserIds)
                    .flatMapMany(tuple -> Flux.fromIterable(
                            CollectionUtil.newSetIntersection(tuple.getT1(), tuple.getT2())))
                    .doFinally(signalType -> {
                        recyclableList1.recycle();
                        recyclableList2.recycle();
                    });
        }
        if (groupIndexes == null) {
            return queryRelatedUserIds(ownerIds, isBlocked);
        }
        return userRelationshipGroupService
                .queryRelationshipGroupMemberIds(ownerIds, groupIndexes, null, null);
    }
@return true if the relationship existed and has been deleted;
        <p>
        false if the relationship does not exist, or still exists and has been deleted from a
        relationship group.
turms-service/src/main/java/im/turms/service/domain/user/service/UserRelationshipService.java