定制 bravegeek/allrival-sdk 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bravegeek/allrival-sdk

Composer 安装命令:

composer require bravegeek/allrival-sdk

包简介

An SDK designed for easy usage of the allrival.com website's API

README 文档

README

An SDK designed for easy usage of the allrival.com website's API

SKD созданное для упрощенного взаимодействия с API сайта allrival.com
Документация к API

Установка

composer require bravegeek/allrival-sdk

Ссылка на Packagist

Клиент

Класс AllrivalSDK\Client.php является точкой входа для взаимодействия с SDK.
В нем находятся менеджеры, через которых идет взаимодействие с API Allrival.

Менеджеры

В данном SDK представлены 5 типов менеджеров:

  • Product Manager
  • Company Manager
  • Cluster Manager
  • Report Manager
  • Price history Manager
  1. Product Manager отвечает за добавление и удаление товаров. При передачи url уже сохраненного товара сервер вернет полную информацию о нем.
    Методы:
  • addProduct
    Принимает Url товара, который вы хотите сохранить. Возвращает информацию о сохраненном товаре
    Примеры:
    // URL товара
    $productUrl = 'https://www.wildberries.ru/catalog/46369147/detail.aspx';
    
    // Возвращает ProductType / array
    $createdProduct = $this->productManager->addProduct($productUrl);
    
  • deleteProduct
    Принимает Url товара, который вы хотите удалить. Возвращает булево значение о результате удаления (true/false)
    // Возвращает true / false
    $result = $this->productManager->deleteProduct($productUrl);
    
  1. Company Manager отвечает за получение всей информации о компании и её конкурентах на сайте Allrival а также удаление компании вместе с продуктами по её ID
    Методы:
  • getYourCompanyInfo
    Возвращает информацию о вашей компании и её конкурентах
    Примеры:
    // Возвращает CompanyType / array
    $result = $this->companyManager->getYourCompanyInfo();
    
  • removeProductsByCompanyId
    Удаляет компанию вместе с продуктами по её ID
    $id = ...; // Id вашей компании
    
    // Возвращает true / false
    $result = $this->companyManager->removeProductsByCompanyId($id)
    
  1. Cluster Manager отвечает за создание/удаление сопоставлений по ID Вашего продукта и ID продукта конкурента.
    Если будут переданы неправильные ID продуктов (оба ID вашей компании, оба ID компании конкурента) менеджер выкинет BadRequestException с информацией о неправильных ID. Методы:
  • createMatching
    Принимает параметры ID продукта вашей компании и ID продукта компании конкурента.
    В случае успеха, возвращает о созданном сопоставлении.
    $yourProductId = ...; // Id продукта вашей компании
    $rivalProductId = ...; // Id продукта компании конкурента
    
    // Возвращает ClusterType / array
    $createdMatching = $this->clusterManager->createMatching($yourProductId, $rivalProductId);
    
  • deleteMatching
    Принимает параметры ID продукта вашей компании и ID продукта компании конкурента.
    В случае успеха, возвращает об удаленном сопоставлении.
    $yourProductId = ...; // Id продукта вашей компании
    $rivalProductId = ...; // Id продукта компании конкурента
    
    // Возвращает ClusterType / array
    $deletedMatching = $this->clusterManager->deleteMatching($yourProductId, $rivalProductId);
    
4) Report Manager - отвечает за выгрузку. Принимает фильтры, которые будут использованы при выборке.
Методы:
  • getYourProducts
    Принимает произвольное количество фильтров и возвращает выгрузку ваших продуктов на основе фильтров.
    // $filters - массив фильтров для выгрузки
    // Возвращает ReportType содержащий массив продуктов и информацию о пагинации
    $result = $this->reportManager->getYourProducts(...$filters);
    
  • getRivalProducts
    Принимает произвольное количество фильтров и возвращает выгрузку продуктов конкурентов на основе фильтров.
    // $filters - массив фильтров для выгрузки
    // Возвращает ReportType содержащий массив продуктов и информацию о пагинации
    $result = $this->reportManager->getRivalProducts(...$filters);
    
  • getSimilars
    Принимает произвольное количество фильтров и возвращает выгрузку сопоставлений ваших товаров с товарами конкурентов на основе фильтров.
    // $filters - массив фильтров для выгрузки
    // Возвращает ReportType содержащий массив ваших товаров и массив совпавших товаров конкурентов и информацию о пагинации
    $result = $this->reportManager->getSimilars(...$filters);
    
  • setFilters
    Сохраняет переданные фильтры для использования в последующих запросах
    // $filters - массив фильтров для выгрузки
    $this->reportManager->setFilters(...$filters);
    
  • addFilter
    Добавляет переданный фильтр к массиву уже сохраненных фильтров
    // $filter - фильтр для выгрузки
    $this->reportManager->setFilters($filter);
    
  • removeFilter
    Удаляет переданный фильтр из массива уже сохраненных фильтров по его названию
    // $filter - фильтр для выгрузки
    // Может быть как строкой так и FilterInterface
    $this->reportManager->removeFilter($filter);
    
  • replaceFilter
    Заменяет существующий сохраненный фильтр переданным
    // $filter - фильтр для выгрузки (FilterInterface)
    $this->reportManager->replaceFilter($filter);
    
  • resetFilters
    Очищает сохраненные фильтры, добавленные через setFilters()
    $this->reportManager->resetFilters();
    

Фильтры

Каждый фильтр наследуется от соответствующего типа фильтра. Существует 8 видов фильтров:

  1. BooleanFilter - Фильтр для булевых типов фильтров (где есть выбор да/нет)
  2. EmptyTypeFilter - Без указания типа фильтра, принимает только явные значения
  3. EmptyTypeMultipleValuesFilter - Для фильтров с выбором нескольких значений (тэги, города, категории и т.д.) и без типа фильтра
  4. InequalityFilter - Фильтр для сравнения числовых значений
  5. MembershipFilter - Фильтр для строковых значений. Позволяет указать принадлежит ли одна строка другой или сравнить их
  6. MultipleValuesFilter - Для типов фильтров с выбором нескольких значений (города, категории и компании) с выбором типа фильтра
  7. OnlyExplicitValuesFilter - Фильтр без указания типа, принимает только явные значения. Примеры параметров можно посмотреть в личном кабинете allrival.com
  8. TimePeriodFilter - Фильтр для работы с датой и временем

Примеры

  • Получение ваших товаров на основе фильтров
    // $apiKey - API ключ из личного кабинета Allrival
    $apiKey = ...;
    
    // Создаем клиент
    $client = new Client($apiKey);
    
    // Создаем массив нужных фильтров
    $filters = [
        new PriceFilter(50, PriceFilter::GREATER_THAN),
        new NameFilter('Товар', NameFilter::CONTAINS),
        new SimilarProductPriceFilter(50, SimilarProductPriceFilter::GREATER_THAN),
        new WithBestPriceFilter(WithBestPriceFilter::YES),
        new RivalsCompanyFilter(111),
    ];
    
    // Добавляем фильтры в клиент для последующих запросов
    $client->setFilters(...$filters);
    
    
    /**
     * Получаем выгрузку ваших продуктов с фильтрами
     *
     * @var $report ReportType
     */
    $report = $this->reportManager->getYourProducts();
    
    // Массив с вашими продуктами
    $products = $report->getItems();
    
    // Информация о пагинации
    $pagination = $report->getPagination();
    
    // Количество ваших продуктов на странице
    $itemsCount = $pagination->getItemsCount();
    
    // Общее количество ваших продуктов
    $itemsTotalCount = $pagination->getItemsTotalCount();
    
    // Общее количество страниц
    $pagesCount = $pagination->getPagesCount();
    
    // Делаем что-нибудь с продуктами
    // ...
    
  • Добавление и удаление товаров
    // $apiKey - API ключ из личного кабинета Allrival
    $apiKey = ...;
    
    // Создаем клиент
    $client = new Client($apiKey);
    
    // Ссылка на товар
    $createdProductUrl = ...;
    
    // Получаем добавленный продукт в виде ProductType
    $createdProduct = $this->productManager->addProduct($createdProductUrl);
    
    // Делаем что-то с добавленным товаром
    ...
    ....
    .....
    
    // URL удаляемого товара
    $deletedProductUrl = ...;
    
    // Информация об удалении товара (true/false)
    $isDeleted = $this->productManager->deleteProduct($deletedProductUrl);
    
  • Получение истории цен
    // Id продукта, у которого хотим получить историю цен
    $productId = ...;
    
    /**
     * @var PriceHistoryType $priceHistory
     */
    $priceHistory = $this->priceHistoryManager->getPriceHistory($productId);
    
    // Может быть UNIX-time, строкой или DateTime
    $date = ...;
    
    // Получаем цену в указанный момент времени
    $price = $priceHistory->getByDate($date);
    
    // Возвращает массив с историей цен
    $priceHistoryArray = $priceHistory->getHistory();
    
  • Создание и удаление сопоставлений
    // Id продукта из вашей компании
    $yourProductIdForCreatedMatch = ...;
    
    // Id продукта из компании конкурента
    $rivalProductIdForCreatedMatch = ...;
    
    /**
     * @var ClusterType $createdMatching
     */
    $createdMatching = $this->clusterManager->createMatching($yourProductIdForCreatedMatch, $rivalProductIdForCreatedMatch);
    
    ...
    ....
    .....
    
    // Id продукта из вашей компании
    $yourProductIdForDeletedMatch = ...;
    
    // Id продукта из компании конкурента
    $rivalProductIdForDeletedMatch = ...;
    
    /**
     * @var ClusterType $deletedMatching
     */
    $deletedMatching = $this->clusterManager->deleteMatching($yourProductIdForDeletedMatch, $rivalProductIdForDeletedMatch);
    

Больше примеров использования находятся в папке ./tests

bravegeek/allrival-sdk 适用场景与选型建议

bravegeek/allrival-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.12k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 06 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「sdk」 「parsing」 「web scraping」 「allrival」 「products matching」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 bravegeek/allrival-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 bravegeek/allrival-sdk 我们能提供哪些服务?
定制开发 / 二次开发

基于 bravegeek/allrival-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.12k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-06-22