文件

114 行
2.8 KiB
PHP

<?php
namespace addons\shopro_aliyun_express\library;
use think\Db;
class ExpressConfig
{
protected static $instance;
protected $values = [];
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
public static function reload()
{
self::$instance = null;
return self::getInstance();
}
protected function __construct()
{
try {
$rows = Db::name('shopro_aliyun_express_config')->select();
foreach ($rows as $row) {
$this->values[$row['name']] = $row['value'];
}
} catch (\Exception $e) {
$this->values = [];
}
}
public function get($name, $default = '')
{
return array_key_exists($name, $this->values) ? $this->values[$name] : $default;
}
public function all()
{
return $this->values;
}
public function isEnabled()
{
if ($this->get('express_enable', '1') !== '1') {
return false;
}
// 已写入插件配置表则视为可用(避免 info.ini state=0 时业务 API 与后台测试行为不一致)
try {
if (\think\Db::name('shopro_aliyun_express_config')->count() > 0) {
return true;
}
} catch (\Exception $e) {
// ignore
}
if (!function_exists('get_addon_info')) {
return false;
}
$info = get_addon_info('shopro_aliyun_express');
return $info && intval($info['state'] ?? 0) === 1;
}
public function getProvider()
{
$provider = strtolower(trim($this->get('express_provider', 'aliyun')));
if (!in_array($provider, ['aliyun', 'kdniao', 'expressbird'], true)) {
return 'aliyun';
}
return $provider;
}
public function getCacheTtl()
{
$ttl = intval($this->get('cache_ttl', 300));
return $ttl > 0 ? $ttl : 300;
}
public function getAliyunAppcode()
{
return trim($this->get('aliyun_appcode', ''));
}
public function getAliyunApiUrl()
{
$url = trim($this->get('aliyun_api_url', ''));
return $url;
}
public function getAliyunApiMode()
{
$mode = strtolower(trim($this->get('aliyun_api_mode', 'auto')));
$allowed = ['auto', 'expr_post', 'expr_get', 'wuliu_kdi', 'kzexpress'];
return in_array($mode, $allowed, true) ? $mode : 'auto';
}
public function getAliyunHttpMethod()
{
$method = strtolower(trim($this->get('aliyun_http_method', 'auto')));
return in_array($method, ['auto', 'get', 'post'], true) ? $method : 'auto';
}
public function getExpressBirdAppcode()
{
return trim($this->get('expressbird_appcode', ''));
}
}