#!/bin/bash

# 设置远程服务器信息
REMOTE_USER="root"  # 远程服务器用户名，根据你的实际情况修改
REMOTE_HOST="111.230.193.88" # 远程服务器地址
REMOTE_BASE_DIR="/home/software"  # 远程服务器上的部署目录，根据你的目录结构修改

# 本地 JAR 包路径  -- 根据你提供的目录结构修改
LOCAL_FS_ADMIN_JAR="./fs-admin/target/fs-admin.jar" # 假设target目录和你提供的 tree 命令显示的目录同级
LOCAL_FS_COMPANY_JAR="./fs-company/target/fs-company.jar"
LOCAL_FS_USER_APP_JAR="./fs-user-app/target/fs-user-app.jar"

# 函数：检查本地文件是否存在
check_local_file() {
  if [ ! -f "$1" ]; then
    echo "Error: Local file $1 not found."
    exit 1
  fi
}

# 检查本地 JAR 文件是否存在
check_local_file "$LOCAL_FS_ADMIN_JAR"
check_local_file "$LOCAL_FS_COMPANY_JAR"
check_local_file "$LOCAL_FS_USER_APP_JAR"
# 停止远程服务器上可能正在运行的旧版本（假设进程名与 JAR 包名相同）
stop_remote_app() {
  local app_name=$1
  ssh "$REMOTE_USER@$REMOTE_HOST" "pkill -f $app_name || true"
}

# 部署单个 JAR 包
deploy_jar() {
  local local_jar=$1
  local remote_dir=$2
  local app_name=$(basename "$local_jar" .jar)

   # 创建远程目录（如果不存在）
  ssh "$REMOTE_USER@$REMOTE_HOST" "mkdir -p $REMOTE_BASE_DIR/$remote_dir"
  # 停止旧版本
  stop_remote_app $app_name

  # 上传 JAR 包
  scp "$local_jar" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir/"

  # 在后台启动 JAR 包, 并将输出重定向到 /dev/null
    ssh "$REMOTE_USER@$REMOTE_HOST" "nohup java -jar -Dfile.encoding=UTF-8 $REMOTE_BASE_DIR/$remote_dir/$app_name.jar > $REMOTE_BASE_DIR/$remote_dir/$app_name.log 2>&1 &"

  echo "Deployed $app_name to $REMOTE_HOST:$REMOTE_BASE_DIR/$remote_dir"
}
# 主要部署流程

# 部署 fs-admin
deploy_jar "$LOCAL_FS_ADMIN_JAR" "fs-admin"

# 部署 fs-company
deploy_jar "$LOCAL_FS_COMPANY_JAR" "fs-company"

# 部署 fs-user-app
deploy_jar "$LOCAL_FS_USER_APP_JAR" "fs-user-app"

echo "Deployment completed."

