feat: 同步今日小程序与后台迭代版本

集中提交今日 API、管理端、小程序与部署文档调整,确保 Gitea 主分支与本地最新开发版本一致。

Made-with: Cursor
This commit is contained in:
卡若
2026-04-20 11:07:55 +08:00
parent 7108f28280
commit ce55c48c64
180 changed files with 11659 additions and 6078 deletions

View File

@@ -0,0 +1,64 @@
<?php
/**
* 用 PDO 执行 SQL 文件(去掉行注释 -- 后整段 exec适配多行 UPDATE
*/
declare(strict_types=1);
if ($argc < 2) {
fwrite(STDERR, "用法: php scripts/run_sql_file_pdo.php <相对api根目录的sql路径>\n");
exit(1);
}
$root = dirname(__DIR__);
$sqlPath = $root . '/' . ltrim($argv[1], '/');
if (!is_readable($sqlPath)) {
fwrite(STDERR, "找不到文件: {$sqlPath}\n");
exit(1);
}
$envFile = $root . '/.env';
$env = [];
if (is_readable($envFile)) {
foreach (file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: [] as $line) {
$line = trim(str_replace("\r", '', $line));
if ($line === '' || (isset($line[0]) && $line[0] === '#')) {
continue;
}
if (!preg_match('/^([A-Za-z0-9_]+)\s*=\s*(.*)$/', $line, $m)) {
continue;
}
$env[$m[1]] = trim($m[2], " \t\"'");
}
}
$host = $env['DATABASE_HOSTNAME'] ?? '127.0.0.1';
$port = (int) ($env['DATABASE_HOSTPORT'] ?? 3306);
$db = $env['DATABASE_DATABASE'] ?? '';
$user = $env['DATABASE_USERNAME'] ?? '';
$pass = $env['DATABASE_PASSWORD'] ?? '';
if ($db === '' || $user === '') {
fwrite(STDERR, ".env 缺少 DATABASE_DATABASE / DATABASE_USERNAME\n");
exit(1);
}
$raw = file_get_contents($sqlPath);
if ($raw === false || trim($raw) === '') {
fwrite(STDERR, "SQL 为空\n");
exit(1);
}
// 去掉整行 -- 注释(本仓库迁移文件常用)
$sql = preg_replace('/^\s*--.*$/m', '', $raw);
$sql = trim(preg_replace("/\n{3,}/", "\n\n", $sql));
if ($sql === '') {
fwrite(STDERR, "去掉注释后无 SQL\n");
exit(1);
}
$dsn = "mysql:host={$host};port={$port};dbname={$db};charset=utf8mb4";
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$pdo->exec($sql);
echo "OK\n";