#!/bin/bash

# ============================================
# 宝塔 Webhook 自动部署脚本 - Monisuo
# ============================================

# 配置项 - 请根据实际情况修改
PROJECT_PATH="/opt/monisuo"           # 项目部署路径
GIT_REPO="http://sion:woshisaw.@8.155.172.147:3001/sion/monisuo.git"  # Git仓库地址
JAR_NAME="monisuo-1.0.jar"            # JAR包名称
LOG_FILE="/opt/monisuo/deploy.log"    # 部署日志文件

# 记录日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

log "========== 开始部署 =========="

# 进入项目目录
cd $PROJECT_PATH || {
    log "错误: 无法进入目录 $PROJECT_PATH"
    exit 1
}

# 拉取最新代码
log "正在拉取最新代码..."
git pull origin main >> $LOG_FILE 2>&1

if [ $? -ne 0 ]; then
    log "错误: Git pull 失败"
    exit 1
fi

log "代码拉取成功"

# 检查是否有更新
CHANGED=$(git diff --name-only HEAD~1 HEAD)
log "变更文件: $CHANGED"

# 如果有Java代码变更，重新打包
if echo "$CHANGED" | grep -q "src/"; then
    log "检测到Java代码变更，开始重新打包..."

    # Maven打包
    mvn clean package -DskipTests >> $LOG_FILE 2>&1

    if [ $? -ne 0 ]; then
        log "错误: Maven打包失败"
        exit 1
    fi

    log "Maven打包成功"
fi

# 重启后端服务
log "正在重启后端服务..."

# 停止旧服务
pkill -f $JAR_NAME
sleep 2

# 启动新服务
nohup java -jar $PROJECT_PATH/target/$JAR_NAME --spring.profiles.active=dev > $PROJECT_PATH/app.log 2>&1 &

if [ $? -eq 0 ]; then
    log "后端服务启动成功"
else
    log "错误: 后端服务启动失败"
    exit 1
fi

# 检查服务是否启动成功
sleep 5
if pgrep -f $JAR_NAME > /dev/null; then
    log "服务运行正常"
else
    log "错误: 服务启动后未运行"
    exit 1
fi

log "========== 部署完成 =========="
echo "Deploy Success!"
