@echo off
setlocal

REM 远程服务器配置
set REMOTE_HOST=192.168.0.95
set REMOTE_USER=root
set REMOTE_PASSWORD=aiotagro
set REMOTE_DIR=/data/java/aiotmini

REM 本地项目配置
set SERVER_MODULE=aagro-server
set TARGET_JAR=%SERVER_MODULE%\target\%SERVER_MODULE%.jar

echo 开始部署项目到远程服务器...

REM 1. 清理并构建项目
echo 正在清理并构建项目...
call mvn clean package -Dmaven.test.skip=true

if %errorlevel% neq 0 (
    echo 项目构建失败，退出部署
    exit /b 1
)

echo 项目构建成功

REM 2. 检查目标jar文件是否存在
if not exist "%TARGET_JAR%" (
    echo 目标jar文件不存在: %TARGET_JAR%
    exit /b 1
)

REM 3. 上传到远程服务器 (需要安装pscp工具)
echo 正在上传文件到远程服务器...
pscp -pw %REMOTE_PASSWORD% %TARGET_JAR% %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%/

if %errorlevel% neq 0 (
    echo 文件上传失败
    exit /b 1
)

echo 文件上传成功

REM 4. 上传Dockerfile到远程服务器
echo 正在上传Dockerfile到远程服务器...
pscp -pw %REMOTE_PASSWORD% %SERVER_MODULE%\Dockerfile %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%/

if %errorlevel% neq 0 (
    echo Dockerfile上传失败
    exit /b 1
)

echo Dockerfile上传成功

REM 5. 在远程服务器上构建Docker镜像并运行容器
echo 正在远程服务器上构建Docker镜像并运行容器...
plink -ssh -pw %REMOTE_PASSWORD% %REMOTE_USER%@%REMOTE_HOST% "cd %REMOTE_DIR% && docker build -t aagro-server . && docker stop aagro-server-container 2>/dev/null && docker rm aagro-server-container 2>/dev/null && docker run -d --name aagro-server-container --restart always -p 48080:48080 -e SPRING_PROFILES_ACTIVE=custom aagro-server"

if %errorlevel% neq 0 (
    echo 远程Docker操作失败
    exit /b 1
)

echo 项目部署成功！
echo 访问地址: http://%REMOTE_HOST%:48080

pause