143 lines
3.8 KiB
Bash
143 lines
3.8 KiB
Bash
#!/bin/bash
|
|
|
|
# ============================================
|
|
# 物流追踪系统安装脚本
|
|
# ============================================
|
|
|
|
echo "=========================================="
|
|
echo "物流追踪系统安装"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# 检查MySQL连接信息
|
|
echo "请输入MySQL连接信息:"
|
|
read -p "数据库主机 [localhost]: " DB_HOST
|
|
DB_HOST=${DB_HOST:-localhost}
|
|
|
|
read -p "数据库端口 [3306]: " DB_PORT
|
|
DB_PORT=${DB_PORT:-3306}
|
|
|
|
read -p "数据库名称: " DB_NAME
|
|
read -p "数据库用户名: " DB_USER
|
|
read -sp "数据库密码: " DB_PASS
|
|
echo ""
|
|
|
|
# 测试数据库连接
|
|
echo ""
|
|
echo "测试数据库连接..."
|
|
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "SELECT 1" > /dev/null 2>&1
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "❌ 数据库连接失败,请检查连接信息"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ 数据库连接成功"
|
|
|
|
# 执行SQL脚本
|
|
echo ""
|
|
echo "创建数据库表..."
|
|
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" < server/database/migrations/create_express_tracking_tables.sql
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ 数据库表创建成功"
|
|
else
|
|
echo "❌ 数据库表创建失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 注册定时任务命令
|
|
echo ""
|
|
echo "配置定时任务..."
|
|
echo ""
|
|
echo "请手动添加以下内容到 server/config/console.php 的 commands 数组中:"
|
|
echo ""
|
|
echo "'express:auto-update' => \\app\\command\\ExpressAutoUpdate::class,"
|
|
echo ""
|
|
|
|
# 测试命令
|
|
echo "测试定时任务命令..."
|
|
cd server
|
|
php think express:auto-update
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ 定时任务命令测试成功"
|
|
else
|
|
echo "❌ 定时任务命令测试失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 配置crontab
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "配置crontab定时任务"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "请选择更新频率:"
|
|
echo "1) 每5分钟(高频,适合重要业务)"
|
|
echo "2) 每10分钟(推荐)"
|
|
echo "3) 每30分钟(低频,节省费用)"
|
|
echo "4) 手动配置"
|
|
read -p "请选择 [2]: " FREQ_CHOICE
|
|
FREQ_CHOICE=${FREQ_CHOICE:-2}
|
|
|
|
PROJECT_PATH=$(pwd)
|
|
|
|
case $FREQ_CHOICE in
|
|
1)
|
|
CRON_EXPR="*/5 * * * *"
|
|
;;
|
|
2)
|
|
CRON_EXPR="*/10 * * * *"
|
|
;;
|
|
3)
|
|
CRON_EXPR="*/30 * * * *"
|
|
;;
|
|
4)
|
|
echo "请手动配置crontab"
|
|
echo "执行: crontab -e"
|
|
echo "添加: */10 * * * * cd $PROJECT_PATH/server && php think express:auto-update >> /dev/null 2>&1"
|
|
exit 0
|
|
;;
|
|
*)
|
|
CRON_EXPR="*/10 * * * *"
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "将添加以下crontab任务:"
|
|
echo "$CRON_EXPR cd $PROJECT_PATH/server && php think express:auto-update >> /dev/null 2>&1"
|
|
echo ""
|
|
read -p "是否自动添加到crontab? (y/n) [y]: " ADD_CRON
|
|
ADD_CRON=${ADD_CRON:-y}
|
|
|
|
if [ "$ADD_CRON" = "y" ]; then
|
|
# 检查是否已存在
|
|
crontab -l 2>/dev/null | grep -q "express:auto-update"
|
|
if [ $? -eq 0 ]; then
|
|
echo "⚠️ crontab中已存在相关任务,跳过添加"
|
|
else
|
|
# 添加到crontab
|
|
(crontab -l 2>/dev/null; echo "$CRON_EXPR cd $PROJECT_PATH/server && php think express:auto-update >> /dev/null 2>&1") | crontab -
|
|
echo "✅ crontab任务添加成功"
|
|
fi
|
|
else
|
|
echo "请手动添加crontab任务:"
|
|
echo "crontab -e"
|
|
echo "添加: $CRON_EXPR cd $PROJECT_PATH/server && php think express:auto-update >> /dev/null 2>&1"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "安装完成!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "下一步:"
|
|
echo "1. 确认快递100已充值"
|
|
echo "2. 在订单发货时调用 ExpressTrackingService::createOrUpdate()"
|
|
echo "3. 查看文档: EXPRESS_TRACKING_SYSTEM.md"
|
|
echo ""
|
|
echo "测试命令:"
|
|
echo "cd server && php think express:auto-update"
|
|
echo ""
|