From 9d15d57c35a852cd39e05887c5f52e9f3d6fd760 Mon Sep 17 00:00:00 2001 From: Kris <13243687953@163.com> Date: Sat, 24 Jan 2026 15:09:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=92=8C=E7=8E=AF=E5=A2=83=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 登录前验证是否存在激活的环境 - 登录前验证环境是否处于激活状态 - 登录历史中记录环境编码和环境ID - 添加错误码:NO_ACTIVE_ENVIRONMENT、ENVIRONMENT_NOT_ACTIVE、ORG_TYPE_EMPTY - 增强日志输出,显示环境信息 需求编号: 2026-01-21-001 --- .../impl/SalesforceLoginServiceImpl.java | 56 +++++++++++++++---- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/datai-scenes/datai-scene-salesforce/datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java b/datai-scenes/datai-scene-salesforce/datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java index 53d1b286..b010d701 100644 --- a/datai-scenes/datai-scene-salesforce/datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java +++ b/datai-scenes/datai-scene-salesforce/datai-salesforce-auth/src/main/java/com/datai/auth/service/impl/SalesforceLoginServiceImpl.java @@ -66,7 +66,33 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { if (StringUtils.isEmpty(loginType)) { throw new SalesforceAuthException("LOGIN_TYPE_EMPTY", "登录类型不能为空"); } - + + String orgType = request.getOrgType(); + if (StringUtils.isEmpty(orgType)) { + throw new SalesforceAuthException("ORG_TYPE_EMPTY", "ORG类型不能为空"); + } + + DataiConfigEnvironment activeEnvironment = configEnvironmentService.getCurrentActiveEnvironment(orgType); + if (activeEnvironment == null) { + logger.warn("登录失败,当前没有激活的环境,ORG类型: {}", orgType); + SalesforceLoginResult errorResult = new SalesforceLoginResult(); + errorResult.setSuccess(false); + errorResult.setErrorCode("NO_ACTIVE_ENVIRONMENT"); + errorResult.setErrorMessage("当前没有激活的环境,请联系管理员激活环境后再登录"); + saveLoginHistory(errorResult, request, "failed", null); + return errorResult; + } + + if (!Boolean.TRUE.equals(activeEnvironment.getIsActive())) { + logger.warn("登录失败,当前环境未激活,环境编码: {}, ORG类型: {}", activeEnvironment.getEnvironmentCode(), orgType); + SalesforceLoginResult errorResult = new SalesforceLoginResult(); + errorResult.setSuccess(false); + errorResult.setErrorCode("ENVIRONMENT_NOT_ACTIVE"); + errorResult.setErrorMessage("当前环境未激活,请联系管理员激活环境后再登录"); + saveLoginHistory(errorResult, request, "failed", activeEnvironment); + return errorResult; + } + LoginStrategy strategy = loginStrategyFactory.getLoginStrategy(loginType); SalesforceLoginResult result = strategy.login(request); @@ -74,16 +100,17 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { if (result.isSuccess()) { saveLoginSession(result, request); - saveLoginHistory(result, request, "success"); + saveLoginHistory(result, request, "success", activeEnvironment); - String cacheKey = getCacheKeyByOrgType(request.getOrgType()); + String cacheKey = getCacheKeyByOrgType(orgType); CacheUtils.put(SalesforceConfigConstants.CACHE_NAME, cacheKey, result); - updateEnvironmentValidity(request.getOrgType(), true); + updateEnvironmentValidity(orgType, true); - logger.info("Salesforce登录成功,Session ID: {}, 用户ID: {}, ORG类型: {}", result.getSessionId(), result.getUserId(), result.getOrgType()); + logger.info("Salesforce登录成功,Session ID: {}, 用户ID: {}, ORG类型: {}, 环境编码: {}", + result.getSessionId(), result.getUserId(), result.getOrgType(), activeEnvironment.getEnvironmentCode()); } else { - saveLoginHistory(result, request, "failed"); + saveLoginHistory(result, request, "failed", activeEnvironment); logger.error("Salesforce登录失败,错误代码: {}, 错误信息: {}", result.getErrorCode(), result.getErrorMessage()); } @@ -95,7 +122,7 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { errorResult.setSuccess(false); errorResult.setErrorCode(e.getErrorCode()); errorResult.setErrorMessage(e.getMessage()); - saveLoginHistory(errorResult, request, "failed"); + saveLoginHistory(errorResult, request, "failed", null); return errorResult; } catch (Exception e) { logger.error("Salesforce登录系统异常: {}", e.getMessage(), e); @@ -103,7 +130,7 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { errorResult.setSuccess(false); errorResult.setErrorCode("SYSTEM_ERROR"); errorResult.setErrorMessage("系统异常: " + e.getMessage()); - saveLoginHistory(errorResult, request, "failed"); + saveLoginHistory(errorResult, request, "failed", null); return errorResult; } } @@ -183,7 +210,7 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { } } - private void saveLoginHistory(SalesforceLoginResult result, SalesforceLoginRequest request, String status) { + private void saveLoginHistory(SalesforceLoginResult result, SalesforceLoginRequest request, String status, DataiConfigEnvironment activeEnvironment) { LocalDateTime requestTime = LocalDateTime.now(); try { @@ -216,6 +243,11 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { history.setOrganizationId(result.getOrganizationId()); history.setLoginStatus(status); + if (activeEnvironment != null) { + history.setEnvironmentCode(activeEnvironment.getEnvironmentCode()); + history.setEnvironmentId(activeEnvironment.getId()); + } + HttpServletRequest httpRequest = getCurrentRequest(); if (httpRequest != null) { String userAgent = httpRequest.getHeader("User-Agent"); @@ -256,7 +288,11 @@ public class SalesforceLoginServiceImpl implements ISalesforceLoginService { history.setOrgType(request.getOrgType()); loginHistoryService.insertDataiSfLoginHistory(history); - logger.debug("保存登录历史记录成功,状态: {}", status); + + String envInfo = activeEnvironment != null + ? String.format("环境编码: %s, 环境ID: %d", activeEnvironment.getEnvironmentCode(), activeEnvironment.getId()) + : "无激活环境"; + logger.debug("保存登录历史记录成功,状态: {}, {}", status, envInfo); } catch (Exception e) { logger.error("保存登录历史记录失败: {}", e.getMessage(), e); }