bravegeek / allrival-sdk
一个为简化allrival.com网站API使用而设计的SDK
v1.0.0
2023-06-15 20:02 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/dotenv: ^6.2
README
一个为简化allrival.com网站API使用而设计的SDK
SKD创建用于简化与allrival.com网站API的交互
API文档
安装
composer require bravegeek/allrival-sdk
客户端
类AllrivalSDK\Client.php是SDK交互的入口点。
其中包含与Allrival API交互的管理器。
管理器
本SDK提供了5种类型的管理器
- 产品管理器
- 公司管理器
- 集群管理器
- 报告管理器
- 价格历史管理器
- 产品管理器负责添加和删除商品。当传递已保存商品的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);
- 公司管理器负责获取网站Allrival上的所有公司及其竞争对手的信息,以及通过ID删除公司及其产品
方法
- getYourCompanyInfo
返回您公司的信息及其竞争对手
示例// Возвращает CompanyType / array $result = $this->companyManager->getYourCompanyInfo();
- removeProductsByCompanyId
通过ID删除公司及其产品
$id = ...; // Id вашей компании // Возвращает true / false $result = $this->companyManager->removeProductsByCompanyId($id)
- 集群管理器负责创建/删除您的产品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);
方法
- 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种过滤器类型
- BooleanFilter - 用于布尔类型过滤器的过滤器(有是/否的选择)
- EmptyTypeFilter - 没有指定过滤器类型,仅接受显式值
- EmptyTypeMultipleValuesFilter - 用于选择多个值(标签、城市、类别等)且没有类型的过滤器
- InequalityFilter - 用于比较数值的过滤器
- MembershipFilter - 用于字符串值的过滤器。允许指定一个字符串是否属于另一个字符串或比较它们
- MultipleValuesFilter - 用于选择多个值(城市、类别和公司)且具有类型选择的过滤器类型
- OnlyExplicitValuesFilter - 无类型指示的过滤器,只接受显式值。参数示例可在 allrival.com 的个人账户中查看
- 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 文件夹中