public Mono<Void> deleteGroupMemberConversations(
            @NotNull Collection<Long> userIds,
            @Nullable ClientSession session) {
        try {
            Validator.notNull(userIds, "userIds");
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        Mono<Void> delete = Mono.empty();
        for (Long userId : userIds) {
            delete = delete.then(groupMemberService.queryUserJoinedGroupIds(userId)
                    .collect(CollectorUtil.toChunkedList())
                    // it is expected there are some cases that the user just joined a group,
                    // and sent a message to the group after "queryUserJoinedGroupIds", meaning
                    // there may some deleted members' conversations that should be deleted
                    // but not deleted in the following "deleteGroupConversations".
                    // TODO: support detecting deleted members' conversations when querying
                    // conversations in a efficient way.
                    .flatMap(groupIds -> groupConversationRepository
                            .deleteMemberConversations(groupIds, userId, session)))
                    .then();
        }
        return delete;
    }
@throws com.mongodb.DuplicateKeyException if {@code readDate} isn't after the read date in DB
                                          when "isAllowMoveReadDateForward" is enabled
turms-service/src/main/java/im/turms/service/domain/conversation/service/ConversationService.java