feat: 添加阿里云短信服务支持并优化验证码逻辑

- 引入 alibabacloud/dysmsapi-20170525 依赖,集成阿里云短信服务
- 将短信验证码从6位改为4位,优化用户体验
- 添加聚水潭商品按时间范围同步功能,支持分页拉取
- 增强Cron任务异常处理,添加错误日志记录
- 修复系统附件服务中图片路径处理逻辑
- 更新阿里云SDK相关组件至最新版本
- 添加think-trace调试扩展,便于问题排查
- 优化跨域中间件,使用str_contains替代strpos
This commit is contained in:
2026-04-30 15:19:40 +08:00
parent 0334fef6c1
commit c7f85ffbda
565 changed files with 59742 additions and 3391 deletions

118
test_db_config.php Normal file
View File

@@ -0,0 +1,118 @@
#!/usr/bin/env php
<?php
namespace think;
require __DIR__ . '/vendor/autoload.php';
echo "========================================\n";
echo "检查数据库聚水潭配置\n";
echo "========================================\n\n";
$app = new App();
$app->initialize();
echo "✅ 应用初始化成功!\n\n";
try {
echo "1️⃣ 查询数据库配置...\n\n";
$configModel = new \app\model\system\config\SystemConfig();
$configs = $configModel->whereIn('name', [
'jst_login_account',
'jst_login_password',
'jst_appkey',
'jst_appsecret'
])->select();
echo "找到以下配置:\n";
foreach ($configs as $config) {
$value = $config['value'];
if (in_array($config['name'], ['jst_login_password', 'jst_appsecret'])) {
echo " - {$config['name']}: " . (empty($value) ? '❌ 未配置' : '✅ 已配置(' . strlen($value) . '位)') . "\n";
} else {
echo " - {$config['name']}: " . (empty($value) ? '❌ 未配置' : $value) . "\n";
}
}
echo "\n";
$loginAccount = $configs->where('name', 'jst_login_account')->value('value', '');
$loginPassword = $configs->where('name', 'jst_login_password')->value('value', '');
if (empty($loginAccount) || empty($loginPassword)) {
echo "⚠️ 数据库中缺少登录凭证\n\n";
echo "建议:\n";
echo "1. 前往后台: 系统设置 → ERP配置\n";
echo "2. 填写聚水潭登录账号和密码\n";
echo "3. 保存配置\n\n";
echo "或者直接在.env文件中添加:\n";
echo "JST_LOGIN_ACCOUNT=你的账号\n";
echo "JST_LOGIN_PASSWORD=你的密码\n\n";
exit(1);
}
echo "✅ 找到登录凭证!\n\n";
echo "2️⃣ 尝试刷新Token...\n\n";
try {
$haichaoJst = \app\haichao\HaichaoJstServices::getServices();
echo "正在调用authLogin...\n";
$haichaoJst->authLogin($loginAccount, $loginPassword);
echo "✅ 登录成功!\n\n";
$envFile = __DIR__ . '/.env';
$envContent = file_get_contents($envFile);
preg_match('/JST_ACCESS_TOKEN\s*=\s*(.*)/', $envContent, $matches);
$newToken = isset($matches[1]) ? trim($matches[1]) : '';
echo "新Token: " . substr($newToken, 0, 20) . "...\n\n";
echo "3️⃣ 测试新Token...\n\n";
$result = $haichaoJst->getProductListStand();
echo "✅ API调用成功!\n\n";
if (!empty($result)) {
echo "📦 获取到 " . count($result) . " 条商品数据\n\n";
if (isset($result[0])) {
echo "📋 示例商品:\n";
$product = $result[0];
echo json_encode($product, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n";
}
} else {
echo "⚠️ 未获取到商品数据\n";
echo "可能原因:\n";
echo "1. 聚水潭系统中没有商品\n";
echo "2. 时间范围内没有修改过的商品\n\n";
}
} catch (\Throwable $e) {
echo "❌ 刷新失败: " . $e->getMessage() . "\n\n";
echo "请检查:\n";
echo "1. 聚水潭账号密码是否正确\n";
echo "2. 聚水潭应用是否已授权\n";
echo "3. 应用Key和Secret是否正确\n\n";
}
echo "========================================\n";
echo "完成\n";
echo "========================================\n";
} catch (\Throwable $e) {
echo "\n❌ 发生错误!\n";
echo "错误信息: " . $e->getMessage() . "\n";
echo "错误文件: " . $e->getFile() . ":" . $e->getLine() . "\n";
echo "\n堆栈跟踪:\n" . $e->getTraceAsString() . "\n";
exit(1);
}