#!/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 ""