69 lines
2.5 KiB
PHP
69 lines
2.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
|
|
|
$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
|
|
$dotenv->safeLoad();
|
|
|
|
$dsn = sprintf(
|
|
'mysql:host=%s;port=%s;dbname=%s;charset=%s',
|
|
$_ENV['DB_HOST'] ?? '127.0.0.1',
|
|
$_ENV['DB_PORT'] ?? '3306',
|
|
$_ENV['DB_DATABASE'] ?? '',
|
|
$_ENV['DB_CHARSET'] ?? 'utf8mb4'
|
|
);
|
|
|
|
$pdo = new PDO(
|
|
$dsn,
|
|
$_ENV['DB_USERNAME'] ?? '',
|
|
$_ENV['DB_PASSWORD'] ?? '',
|
|
[
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
]
|
|
);
|
|
|
|
$pdo->exec(<<<'SQL'
|
|
CREATE TABLE IF NOT EXISTS express_companies (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
company_name VARCHAR(64) NOT NULL DEFAULT '',
|
|
company_code VARCHAR(64) NOT NULL DEFAULT '',
|
|
status VARCHAR(32) NOT NULL DEFAULT 'enabled',
|
|
is_default TINYINT(1) NOT NULL DEFAULT 0,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
remark VARCHAR(255) NOT NULL DEFAULT '',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_express_companies_name (company_name),
|
|
UNIQUE KEY uk_express_companies_code (company_code),
|
|
KEY idx_express_companies_status (status),
|
|
KEY idx_express_companies_default (is_default)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='快递公司字典'
|
|
SQL);
|
|
|
|
$now = date('Y-m-d H:i:s');
|
|
$stmt = $pdo->prepare('SELECT id FROM express_companies WHERE company_name = ? LIMIT 1');
|
|
$stmt->execute(['顺丰速运']);
|
|
$exists = $stmt->fetch();
|
|
|
|
if (!$exists) {
|
|
$insert = $pdo->prepare('INSERT INTO express_companies (company_name, company_code, status, is_default, sort_order, remark, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
|
|
$insert->execute(['顺丰速运', 'sf_express', 'enabled', 1, 1, '系统默认快递公司', $now, $now]);
|
|
echo "SEED_DEFAULT_EXPRESS_COMPANY\n";
|
|
}
|
|
|
|
$defaultCount = (int)$pdo->query("SELECT COUNT(*) FROM express_companies WHERE status = 'enabled' AND is_default = 1")->fetchColumn();
|
|
if ($defaultCount === 0) {
|
|
$row = $pdo->query("SELECT id FROM express_companies WHERE status = 'enabled' ORDER BY sort_order ASC, id ASC LIMIT 1")->fetch();
|
|
if ($row) {
|
|
$update = $pdo->prepare('UPDATE express_companies SET is_default = 1, updated_at = ? WHERE id = ?');
|
|
$update->execute([$now, (int)$row['id']]);
|
|
echo "SET_DEFAULT_EXPRESS_COMPANY\n";
|
|
}
|
|
}
|
|
|
|
echo "SCHEMA_UPGRADE_OK\n";
|