@echo off
REM ==========================================================================
REM 项目部署脚本
REM 用于将Java后端项目部署到远程服务器(192.168.0.95)
REM ==========================================================================

echo ==========================================================================
echo AIOTAGRO后台管理系统部署脚本
echo ==========================================================================

REM 配置信息
set REMOTE_HOST=192.168.0.95
set REMOTE_USER=root
set REMOTE_PASSWORD=aiotagro
set REMOTE_DIR=/data/java/aiotagro

echo 服务器地址: %REMOTE_HOST%
echo 用户名: %REMOTE_USER%
echo 目标目录: %REMOTE_DIR%

echo.
REM 本地项目路径
set LOCAL_PROJECT_DIR=E:\vue\aiotagro-mini

echo 切换到项目目录: %LOCAL_PROJECT_DIR%
cd /d %LOCAL_PROJECT_DIR%

REM 检查是否安装了Maven
echo 检查Maven环境...
mvn -v >nul 2>&1
if %errorlevel% neq 0 (
    echo.
    echo [错误] 未找到Maven命令
    echo 请先安装Maven并配置环境变量PATH
    echo 下载地址: https://maven.apache.org/download.cgi
    echo.
    pause
    exit /b 1
)

echo.
echo Maven版本信息:
mvn -v

echo.
REM 打包项目
echo ==================== 开始打包项目 ====================
mvn clean package -Dmaven.test.skip=true
if %errorlevel% neq 0 (
    echo.
    echo [错误] 项目打包失败，请检查代码是否有错误
    pause
    exit /b 1
)

echo.
echo ==================== 打包完成 ====================

REM 查找打包后的jar文件
echo 查找打包生成的jar文件...
for /f "delims=" %%i in ('dir aagro-server\target\*.jar /b /s') do set JAR_FILE=%%i

if "%JAR_FILE%"=="" (
    echo.
    echo [错误] 未找到打包后的jar文件
    echo 请确认项目结构是否正确
    pause
    exit /b 1
)

echo 找到jar文件: %JAR_FILE%

REM 检查是否安装了Putty工具(pscp和plink)
echo.
echo 检查Putty工具...
pscp -V >nul 2>&1
if %errorlevel% neq 0 (
    echo.
    echo [警告] 未找到pscp命令，请先安装Putty工具
    echo 下载地址: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
    echo.
    echo 安装完成后请将Putty安装目录添加到环境变量PATH中
    pause
    exit /b 1
)

REM 使用pscp上传文件
echo.
echo ==================== 开始上传文件 ====================
pscp -pw %REMOTE_PASSWORD% "%JAR_FILE%" %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%/
if %errorlevel% neq 0 (
    echo.
    echo [错误] 文件上传失败，请检查网络连接和服务器配置
    pause
    exit /b 1
)

echo 上传配置文件...
pscp -pw %REMOTE_PASSWORD% "aagro-server\src\main\resources\application-prod.yaml" %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%/
if %errorlevel% neq 0 (
    echo.
    echo [错误] 配置文件上传失败
    pause
    exit /b 1
)

echo.
echo ==================== 上传启动脚本 ====================
echo cd /data/java/aiotagro > start.sh
echo nohup java -jar *.jar --spring.profiles.active=prod ^> app.log 2^>^&1 ^& >> start.sh
echo echo "应用已启动" >> start.sh

echo 上传启动脚本...
pscp -pw %REMOTE_PASSWORD% start.sh %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_DIR%/
if %errorlevel% neq 0 (
    echo.
    echo [错误] 启动脚本上传失败
    pause
    exit /b 1
)

REM 在远程服务器上设置权限并启动应用
echo.
echo ==================== 远程部署 ====================
echo 设置启动脚本权限...
plink -ssh -P 22 -pw %REMOTE_PASSWORD% %REMOTE_USER%@%REMOTE_HOST% "chmod +x %REMOTE_DIR%/start.sh"
if %errorlevel% neq 0 (
    echo.
    echo [错误] 设置远程脚本权限失败
    pause
    exit /b 1
)

echo 启动应用...
plink -ssh -P 22 -pw %REMOTE_PASSWORD% %REMOTE_USER%@%REMOTE_HOST% "cd %REMOTE_DIR%; ./start.sh"
if %errorlevel% neq 0 (
    echo.
    echo [错误] 远程启动应用失败
    pause
    exit /b 1
)

echo.
echo ==================== 部署完成 ====================
echo 部署成功完成！
echo 服务器: %REMOTE_HOST%
echo 目录: %REMOTE_DIR%
echo.
pause