bravegeek/allrival-sdk

一个为简化allrival.com网站API使用而设计的SDK

v1.0.0 2023-06-15 20:02 UTC

This package is auto-updated.

Last update: 2024-09-04 16:58:21 UTC


README

一个为简化allrival.com网站API使用而设计的SDK

SKD创建用于简化与allrival.com网站API的交互
API文档

安装

composer require bravegeek/allrival-sdk

Packagist链接

客户端

类AllrivalSDK\Client.php是SDK交互的入口点。
其中包含与Allrival API交互的管理器。

管理器

本SDK提供了5种类型的管理器

  • 产品管理器
  • 公司管理器
  • 集群管理器
  • 报告管理器
  • 价格历史管理器
  1. 产品管理器负责添加和删除商品。当传递已保存商品的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. 公司管理器负责获取网站Allrival上的所有公司及其竞争对手的信息,以及通过ID删除公司及其产品
    方法
  • getYourCompanyInfo
    返回您公司的信息及其竞争对手
    示例
    // Возвращает CompanyType / array
    $result = $this->companyManager->getYourCompanyInfo();
    
  • removeProductsByCompanyId
    通过ID删除公司及其产品
    $id = ...; // Id вашей компании
    
    // Возвращает true / false
    $result = $this->companyManager->removeProductsByCompanyId($id)
    
  1. 集群管理器负责创建/删除您的产品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) 报告管理器 - 负责导出。接受将用于查询的过滤器。
方法
  • 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 文件夹中