33 lines
1.5 KiB
PHP
33 lines
1.5 KiB
PHP
<?php
|
||
|
||
namespace App\Console\Commands;
|
||
|
||
use App\Models\Common\Company;
|
||
use Illuminate\Console\Command;
|
||
use Modules\EcommerceFinance\Services\AccessoryReshipCourierImporter;
|
||
use Modules\EcommerceFinance\Services\AccessoryReshipCourierStore;
|
||
|
||
class ImportAccessoryReshipCourierConfigs extends Command
|
||
{
|
||
protected $signature = 'accessory-reship:import-courier-configs {file} {--company= : 导入所属公司ID} {--dry-run : 仅检查文件及输出条数,不写入}';
|
||
protected $description = '导入用户提供的存量快递补发扣款比例配置(重复项跳过、冲突整批回滚)';
|
||
|
||
public function handle(AccessoryReshipCourierImporter $importer, AccessoryReshipCourierStore $store): int
|
||
{
|
||
$companyId = (int) $this->option('company');
|
||
if ($companyId <= 0 || !Company::query()->where('id', $companyId)->exists()) {
|
||
$this->error('请指定有效的 --company,公司配置不会跨公司写入。');
|
||
return self::FAILURE;
|
||
}
|
||
$path = $this->argument('file');
|
||
$rows = $importer->read($path);
|
||
if ($this->option('dry-run')) {
|
||
$this->info('文件校验通过,共' . count($rows) . '条;未写入。');
|
||
return self::SUCCESS;
|
||
}
|
||
$result = $store->import($companyId, $rows, '用户授权存量配置导入', hash_file('sha256', $path));
|
||
$this->info('导入完成:新增' . $result['added'] . '条,重复跳过' . $result['skipped'] . '条。');
|
||
return self::SUCCESS;
|
||
}
|
||
}
|