@echo off
chcp 65001 >nul
title 报告服务启动程序

:: 创建日志文件
echo 启动时间: %date% %time% > service_log.txt

:: 设置控制台颜色
color 0A

echo ======================================
echo            报告服务启动程序
echo ======================================
echo.

:: 检查 Node.js 是否安装
echo [信息] 检查 Node.js 安装状态... >> service_log.txt
where node >nul 2>nul
if %errorlevel% neq 0 (
    echo [错误] 未安装 Node.js，请先安装 Node.js
    echo [错误] 未安装 Node.js，请先安装 Node.js >> service_log.txt
    echo 请访问 https://nodejs.org 下载安装
    echo.
    echo 按任意键退出...
    pause > nul
    exit /b 1
)
echo [成功] Node.js 已安装 >> service_log.txt

:: 显示 Node.js 版本
echo [信息] Node.js 版本：
node -v
node -v >> service_log.txt

:: 检查是否已安装 PM2
echo [信息] 检查 PM2 安装状态... >> service_log.txt
where pm2 >nul 2>nul
if %errorlevel% neq 0 (
    echo [信息] 正在安装 PM2...
    echo [信息] 正在安装 PM2... >> service_log.txt
    call npm install -g pm2
    if %errorlevel% neq 0 (
        echo [错误] PM2 安装失败，请以管理员权限运行此脚本
        echo [错误] PM2 安装失败 >> service_log.txt
        echo 请右键选择"以管理员身份运行"此脚本
        echo.
        echo 按任意键退出...
        pause > nul
        exit /b 1
    )
)
echo [成功] PM2 已安装 >> service_log.txt

:: 切换到脚本所在目录
echo [信息] 切换工作目录... >> service_log.txt
cd /d "%~dp0"
echo 当前工作目录: %cd%
echo 当前工作目录: %cd% >> service_log.txt

:: 检查是否存在 package.json
echo [信息] 检查 package.json... >> service_log.txt
dir package.json 2>nul | find "package.json" >nul
if %errorlevel% neq 0 (
    echo [错误] 未找到 package.json 文件
    echo [错误] 未找到 package.json 文件 >> service_log.txt
    echo 请确保在正确的项目目录中运行此脚本
    echo 当前目录: %cd%
    echo.
    echo 目录内容：
    dir
    echo.
    echo 按任意键退出...
    pause > nul
    exit /b 1
)
echo [成功] 找到 package.json >> service_log.txt

:: 安装依赖
echo [信息] 正在安装项目依赖...
echo [信息] 正在安装项目依赖... >> service_log.txt
call npm install >> service_log.txt 2>&1
if %errorlevel% neq 0 (
    echo [错误] 依赖安装失败
    echo [错误] 依赖安装失败 >> service_log.txt
    echo 详细错误信息请查看 service_log.txt
    echo.
    echo 按任意键退出...
    pause > nul
    exit /b 1
)
echo [成功] 依赖安装完成 >> service_log.txt

:: 检查服务是否已在运行
echo [信息] 检查服务状态... >> service_log.txt
call pm2 list | findstr "report-service" >nul
if %errorlevel% equ 0 (
    echo [信息] 服务已在运行，正在重启...
    echo [信息] 服务已在运行，正在重启... >> service_log.txt
    call pm2 restart report-service >> service_log.txt 2>&1
) else (
    echo [信息] 正在启动服务...
    echo [信息] 正在启动服务... >> service_log.txt
    call pm2 start server.js --name "report-service" >> service_log.txt 2>&1
)

:: 显示服务状态
echo.
echo [信息] 服务状态：
call pm2 list
call pm2 list >> service_log.txt

echo.
echo [成功] 服务已启动！
echo [成功] 服务已启动！ >> service_log.txt
echo 访问地址: http://localhost:3000
echo.
echo 提示：请不要关闭此窗口，服务将在后台继续运行
echo 如需停止服务，请运行 stop-service.bat
echo 如遇问题，请查看 service_log.txt 文件了解详细信息
echo ======================================

echo.
echo 按任意键继续...
pause > nul 