81 行
3.3 KiB
PHP
81 行
3.3 KiB
PHP
<?php
|
|
/**
|
|
* 提现与收益中心数据表结构升级迁移脚本
|
|
* 解决问题:
|
|
* 1. hla_shopro_withdraw.withdraw_info 字段由 varchar(255) 升级为 text,杜绝 SQLSTATE[22001] 截断报错
|
|
* 2. hla_shopro_withdraw.charge_rate 升级为 decimal(10, 4),支持高精度提现手续费率
|
|
* 3. hla_shopro_withdraw.platform 升级为 varchar(50),增强多端客户端兼容
|
|
* 4. hla_shopro_withdraw.payment_json 升级为 text,支持长交易回包
|
|
* 5. hla_shopro_withdraw_log.content 升级为 text,记录完整日志
|
|
* 6. hla_shopro_partner_reward.reward_type 扩容至 varchar(64)
|
|
*/
|
|
|
|
define('APP_PATH', __DIR__ . '/../application/');
|
|
define('ROOT_PATH', dirname(realpath(APP_PATH)) . '/');
|
|
|
|
if (file_exists(__DIR__ . '/../thinkphp/base.php')) {
|
|
require_once __DIR__ . '/../thinkphp/base.php';
|
|
require_once __DIR__ . '/../thinkphp/helper.php';
|
|
if (is_file(ROOT_PATH . '.env')) {
|
|
$env = parse_ini_file(ROOT_PATH . '.env', true);
|
|
foreach ($env as $key => $val) {
|
|
$name = 'PHP_' . strtoupper($key);
|
|
if (is_array($val)) {
|
|
foreach ($val as $k => $v) {
|
|
$item = $name . '_' . strtoupper($k);
|
|
putenv("$item=$v");
|
|
}
|
|
} else {
|
|
putenv("$name=$val");
|
|
}
|
|
}
|
|
}
|
|
\think\Config::set(\think\Config::load(APP_PATH . 'config.php'));
|
|
\think\Config::set(include APP_PATH . 'database.php', 'database');
|
|
\think\Loader::addNamespace('app', APP_PATH);
|
|
}
|
|
|
|
use think\Db;
|
|
|
|
function runWithdrawMigration()
|
|
{
|
|
echo "========================================================\n";
|
|
echo " 开始执行提现模块与收益中心表结构安全升级迁移\n";
|
|
echo "========================================================\n";
|
|
|
|
$prefix = config('database.prefix') ?: 'hla_';
|
|
|
|
$sqls = [
|
|
"ALTER TABLE `{$prefix}shopro_withdraw` MODIFY COLUMN `withdraw_info` text NULL COMMENT '提现信息'",
|
|
"ALTER TABLE `{$prefix}shopro_withdraw` MODIFY COLUMN `charge_rate` decimal(10, 4) NOT NULL DEFAULT '0.0000' COMMENT '手续费率'",
|
|
"ALTER TABLE `{$prefix}shopro_withdraw` MODIFY COLUMN `platform` varchar(50) NULL DEFAULT NULL COMMENT '平台'",
|
|
"ALTER TABLE `{$prefix}shopro_withdraw` MODIFY COLUMN `payment_json` text NULL COMMENT '交易原始数据'",
|
|
"ALTER TABLE `{$prefix}shopro_withdraw_log` MODIFY COLUMN `content` text NULL COMMENT '日志内容'",
|
|
"ALTER TABLE `{$prefix}shopro_partner_reward` MODIFY COLUMN `reward_type` varchar(64) NOT NULL COMMENT '收益类型标识'",
|
|
"ALTER TABLE `{$prefix}shopro_partner_reward` MODIFY COLUMN `ext` text NULL COMMENT '扩展信息与计算公式 JSON'",
|
|
];
|
|
|
|
$successCount = 0;
|
|
foreach ($sqls as $sql) {
|
|
try {
|
|
Db::execute($sql);
|
|
echo "[SUCCESS] " . $sql . "\n";
|
|
$successCount++;
|
|
} catch (\Exception $e) {
|
|
echo "[WARN/SKIP] " . $sql . " => " . $e->getMessage() . "\n";
|
|
}
|
|
}
|
|
|
|
echo "\n迁移执行完毕,成功执行 {$successCount}/" . count($sqls) . " 条语句。\n";
|
|
return true;
|
|
}
|
|
|
|
if (php_sapi_name() === 'cli') {
|
|
try {
|
|
runWithdrawMigration();
|
|
} catch (\Throwable $e) {
|
|
echo "迁移执行异常: " . $e->getMessage() . "\n";
|
|
exit(1);
|
|
}
|
|
}
|