fix(client): 设备移除逻辑与认证流程优化

- 修改设备移除时的本地清理方法,统一调用 clearLocalAuth
- 优化设备数量限制校验逻辑,避免重复计算当前设备- 移除冗余的设备状态检查,简化设备移除流程- 调整 Redis 连接超时与等待时间,提升连接稳定性- 增强 MySQL 数据库连接配置,添加自动重连机制
-优化 Druid 连接池参数,提高数据库连接性能
- 简化客户端认证与数据上报逻辑,提升处理效率
- 移除过期设备状态更新逻辑,减少不必要的数据库操作- 调整慢 SQL 记录阈值,便于及时发现性能问题-优化版本分布与数据类型统计查询逻辑,提高响应速度
This commit is contained in:
2025-10-15 18:32:48 +08:00
parent f614860eee
commit 6f04658265
29 changed files with 702 additions and 1010 deletions

View File

@@ -3,86 +3,77 @@ setlocal enabledelayedexpansion
set APP_ASAR=%~1
set UPDATE_FILE=%~2
set EXE_PATH=%~3
set LOG_FILE=%TEMP%\electron-update.log
set JAR_UPDATE=%~3
set EXE_PATH=%~4
echo ======================================== > "%LOG_FILE%"
echo Electron App Auto-Update Helper >> "%LOG_FILE%"
echo Started: %date% %time% >> "%LOG_FILE%"
echo ======================================== >> "%LOG_FILE%"
echo. >> "%LOG_FILE%"
if not exist "%UPDATE_FILE%" if "%JAR_UPDATE%"=="" exit /b 1
if not exist "%UPDATE_FILE%" if not exist "%JAR_UPDATE%" exit /b 1
if not exist "%UPDATE_FILE%" (
echo [ERROR] Update file not found: %UPDATE_FILE% >> "%LOG_FILE%"
goto :start_app
)
echo [INFO] Update file found: %UPDATE_FILE% >> "%LOG_FILE%"
echo [INFO] Target app.asar: %APP_ASAR% >> "%LOG_FILE%"
echo [INFO] Application exe: %EXE_PATH% >> "%LOG_FILE%"
echo [INFO] Waiting for application to close... >> "%LOG_FILE%"
REM 获取应用进程名
REM Wait for application to close
for /f "tokens=*" %%a in ("%EXE_PATH%") do set EXE_NAME=%%~nxa
echo [INFO] Waiting for %EXE_NAME% to close... >> "%LOG_FILE%"
REM 等待应用进程完全关闭最多等待10秒
set COUNT=0
:wait_loop
tasklist /FI "IMAGENAME eq %EXE_NAME%" 2>nul | find /I "%EXE_NAME%" >nul
if errorlevel 1 goto process_closed
set /a COUNT+=1
if %COUNT% GEQ 20 (
echo [WARN] Application still running after 10 seconds >> "%LOG_FILE%"
goto process_closed
)
if %COUNT% GEQ 20 goto process_closed
timeout /t 1 /nobreak >nul
goto wait_loop
:process_closed
echo [INFO] Application process closed >> "%LOG_FILE%"
timeout /t 1 /nobreak >nul
echo [INFO] Backing up current app.asar... >> "%LOG_FILE%"
if exist "%APP_ASAR%.backup" (
del /f /q "%APP_ASAR%.backup" >nul 2>&1
REM Update ASAR
if exist "%UPDATE_FILE%" (
if exist "%APP_ASAR%.backup" del /f /q "%APP_ASAR%.backup" >nul 2>&1
if exist "%APP_ASAR%" move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1
move /y "%UPDATE_FILE%" "%APP_ASAR%" >nul 2>&1
if errorlevel 1 if exist "%APP_ASAR%.backup" move /y "%APP_ASAR%.backup" "%APP_ASAR%" >nul 2>&1
if exist "%UPDATE_FILE%" del /f /q "%UPDATE_FILE%" >nul 2>&1
)
if exist "%APP_ASAR%" (
move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1
REM Update JAR
:update_jar
if "%JAR_UPDATE%"=="" goto :start_app
if not exist "%JAR_UPDATE%" goto :start_app
timeout /t 3 /nobreak >nul
for %%I in ("%APP_ASAR%") do set RESOURCES_DIR=%%~dpI
for %%F in ("%JAR_UPDATE%") do set JAR_NAME=%%~nF
echo %JAR_NAME% | findstr /B /C:"erp_client_sb-" >nul
if errorlevel 1 (
for /f "tokens=1-3 delims=/ " %%a in ("%date%") do set TODAY=%%a%%b%%c
for /f "tokens=1-3 delims=:." %%a in ("%time%") do set NOW=%%a%%b%%c
set JAR_NAME=erp_client_sb-2.4.7-!TODAY!!NOW!.jar
)
REM Delete old JAR files
for %%F in ("%RESOURCES_DIR%erp_client_sb-*.jar") do (
set RETRY_COUNT=0
:retry_delete
del /f /q "%%F" >nul 2>&1
if errorlevel 1 (
echo [WARN] First move attempt failed, retrying... >> "%LOG_FILE%"
timeout /t 2 /nobreak >nul
move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1
if errorlevel 1 (
echo [ERROR] Failed to backup app.asar, file is locked >> "%LOG_FILE%"
goto :start_app
set /a RETRY_COUNT+=1
if !RETRY_COUNT! LEQ 5 (
timeout /t 2 /nobreak >nul
goto :retry_delete
)
)
echo [SUCCESS] Backup completed >> "%LOG_FILE%"
)
echo [INFO] Applying update... >> "%LOG_FILE%"
move /y "%UPDATE_FILE%" "%APP_ASAR%" >nul 2>&1
REM Install new JAR file
set NEW_JAR_PATH=%RESOURCES_DIR%%JAR_NAME%
set INSTALL_RETRY=0
:retry_install
move /y "%JAR_UPDATE%" "%NEW_JAR_PATH%" >nul 2>&1
if errorlevel 1 (
echo [ERROR] Failed to apply update >> "%LOG_FILE%"
if exist "%APP_ASAR%.backup" (
echo [INFO] Restoring backup... >> "%LOG_FILE%"
move /y "%APP_ASAR%.backup" "%APP_ASAR%" >nul 2>&1
set /a INSTALL_RETRY+=1
if %INSTALL_RETRY% LEQ 5 (
timeout /t 2 /nobreak >nul
goto :retry_install
)
goto :start_app
)
echo [SUCCESS] Update applied successfully! >> "%LOG_FILE%"
if exist "%UPDATE_FILE%" (
del /f /q "%UPDATE_FILE%" >nul 2>&1
)
if exist "%JAR_UPDATE%" del /f /q "%JAR_UPDATE%" >nul 2>&1
:start_app
echo [INFO] Restarting application... >> "%LOG_FILE%"
echo ======================================== >> "%LOG_FILE%"
start "" "%EXE_PATH%"
exit /b 0