public Mono<List<GroupMember>> queryGroupMembers(
            @NotNull Long groupId,
            @NotEmpty Set<Long> memberIds,
            boolean preferCache) {
        try {
            Validator.notNull(groupId, "groupId");
            Validator.notEmpty(memberIds, "memberIds");
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        if (preferCache && isMemberCacheEnabled) {
            Map<GroupMember.Key, GroupMember> keyToMember =
                    groupIdToMembersCache.getIfPresent(groupId);
            if (keyToMember != null) {
                List<GroupMember> members = new ArrayList<>(memberIds.size());
                for (Long memberId : memberIds) {
                    GroupMember member = keyToMember.get(new GroupMember.Key(groupId, memberId));
                    if (member != null) {
                        members.add(member);
                    }
                }
                return Mono.just(members);
            }
        }
        return groupMemberRepository.findGroupMembers(groupId, memberIds)
                .collect(CollectorUtil.toList(memberIds.size()));
    }
@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