agenta/agentanovaposhta

Nova Poshta 地区、城市、仓库更新器和搜索

dev-master 2022-09-30 09:23 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:42 UTC


README

导入 Nova Poshta 目录(地区、城市、邮局),从控制台更新邮局目录。Livewire 组件用于选择邮局(区域、城市、邮局)。

安装

要求

Laravel 8
PHP 8.x
  1. 通过 composer 添加
composer require agenta/agentanovaposhta
  1. 发布 daaner/novaposhta 库文件
php artisan vendor:publish --provider="Daaner\NovaPoshta\NovaPoshtaServiceProvider"
  1. 发布配置文件 (config/agentanovaposhta.php)
php artisan vendor:publish --tag=config
  1. 添加到 .env 文件
#API-кей "Новой почты" (см. в личном кабинете)
NP_API_KEY=
#кол-во объектов на странице API (по опыту - максимум 100, иначе периодически таймаут)
AGENTA_NP_CHUNK_SIZE=100 

在配置中可以设置要导入数据库的部门类型

'import_warehouse_type' => [$NORMAL, $SHOP, $CARGO, $POSTOMAT, $POSTOMAT_PB],

以及用户可以选择的部门类型

'allowed_warehouse_type' => [$NORMAL, $SHOP, $CARGO, $POSTOMAT, $POSTOMAT_PB],
  1. 运行迁移
php artisan migrate
  1. 运行初始数据导入(可能需要 10-30 分钟以上)
#импорт областей и населенных пунктов
php artisan np:import_cities
#импорт отделений
php artisan np:update_warehouses

使用

更新数据

"Новая Почта" 建议每天更新一次邮局目录。为此,需要运行控制台命令(仅添加数据,不删除已存在的数据 - 如果邮局不营业,则模型将设置 active = false

php artisan np:update_warehouses

还可以更新居民点和地区的目录(不删除,仅创建和更新)

php artisan np:import_cities

Livewire 组件

  1. 发布组件模板并应用所需样式
php artisan vendor:publish --tag="views-agentanovaposhta"
  1. 将其添加到 blade 模板
       ...
        @livewireStyles
    </head>
<body>

    @livewire('novaposhta-select-warehouse')
    ...
    @livewireScripts
    
</body>

组件可以传递参数 'cargo' => true 以仅显示那些城市和邮局是货物的(对于超过 30 公斤的货物),以及页面重新加载时显示之前选择过的区域、城市和邮局

@livewire('novaposhta-select-warehouse', [
    'cargo' => true,
    'selectedRegion' => old('np_region_id'),
    'selectedCity' => old('np_city_id'),
    'selectedWarehouse' => old('np_warehouse_id'),
])

作者