Files
zyt/install_express_tracking.sh
2026-04-07 18:13:03 +08:00

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 ""