Files
anxinyan/server-api/app/support/Kuaidi100ConfigService.php
2026-05-26 17:08:33 +08:00

62 lines
1.7 KiB
PHP

<?php
namespace app\support;
use support\think\Db;
class Kuaidi100ConfigService
{
private const GROUP = 'kuaidi100';
public function getConfig(): array
{
$rows = Db::name('system_configs')
->where('config_group', self::GROUP)
->column('config_value', 'config_key');
$enabled = $this->normalizeEnabled((string)($rows['enabled'] ?? 'disabled')) === 'enabled';
$minInterval = (int)($rows['query_min_interval_minutes'] ?? 30);
$minInterval = max(5, min(1440, $minInterval > 0 ? $minInterval : 30));
return [
'enabled' => $enabled,
'customer' => trim((string)($rows['customer'] ?? '')),
'key' => trim((string)($rows['key'] ?? '')),
'callback_url' => trim((string)($rows['callback_url'] ?? '')),
'callback_salt' => trim((string)($rows['callback_salt'] ?? '')),
'query_min_interval_minutes' => $minInterval,
];
}
public function isEnabled(): bool
{
return $this->getConfig()['enabled'];
}
public function isReadyForQuery(): bool
{
$config = $this->getConfig();
return $config['enabled'] && $config['customer'] !== '' && $config['key'] !== '';
}
public function isReadyForSubscribe(): bool
{
$config = $this->getConfig();
return $config['enabled'] && $config['key'] !== '' && $config['callback_url'] !== '';
}
public function isReadyForRecognition(): bool
{
$config = $this->getConfig();
return $config['enabled'] && $config['key'] !== '';
}
public function normalizeEnabled(string $value): string
{
return in_array($value, ['enabled', 'disabled'], true) ? $value : 'disabled';
}
}