diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java index 8e4491b0f..7ef9c6db2 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/DangerOperationController.java @@ -273,7 +273,8 @@ public class DangerOperationController { // 如果没有配置 AppSecret,则无法进行后续交互 if (!StringUtils.hasText(appSecret)) { - log.error("【dingtalk】DingTalk AppSecret not configured"); + log.info("【dingtalk】DingTalk AppSecret not configured"); + model.addAttribute("isAuthenticated", false); model.addAttribute("authError", "服务端未配置 AppSecret,无法登录"); return "form"; } @@ -297,7 +298,8 @@ public class DangerOperationController { String accessToken = tokenJson.getString("accessToken"); if (!StringUtils.hasText(accessToken)) { - log.error("【dingtalk】Failed to get access token: {}", tokenResponse); + log.info("【dingtalk】Failed to get access token: {}", tokenResponse); + model.addAttribute("isAuthenticated", false); model.addAttribute("authError", "钉钉登录验证失败: 无法获取 AccessToken"); return "form"; } @@ -315,13 +317,16 @@ public class DangerOperationController { String mobile = userJson.getString("mobile"); if (!StringUtils.hasText(mobile)) { - log.error("【dingtalk】Failed to get user info: {}", userInfoResponse); + log.info("【dingtalk】Failed to get user info: {}", userInfoResponse); + model.addAttribute("isAuthenticated", false); model.addAttribute("authError", "钉钉登录验证失败: 无法获取用户手机号"); return "form"; } List users = RpcExternalUtil.rpcApiResultProcessor(() -> thirdPartySyncApi.getUserInfosByPhone(mobile), "查询用户是否存在", mobile); if (CollectionUtils.isEmpty(users)) { + log.info("【dingtalk】Failed to get user info2: {}", JSON.toJSONString(users)); + model.addAttribute("isAuthenticated", false); model.addAttribute("authError", "用户未授权!"); return "form"; } @@ -341,7 +346,8 @@ public class DangerOperationController { return "form"; } catch (Exception e) { - log.error("【dingtalk】DingTalk Callback Error", e); + log.info("【dingtalk】DingTalk Callback Error", e); + model.addAttribute("isAuthenticated", false); model.addAttribute("authError", "登录过程中发生异常: " + e.getMessage()); return "form"; } diff --git a/workflow-engine-server/src/main/resources/templates/form.html b/workflow-engine-server/src/main/resources/templates/form.html index eb8cf992e..10de2d6f6 100644 --- a/workflow-engine-server/src/main/resources/templates/form.html +++ b/workflow-engine-server/src/main/resources/templates/form.html @@ -34,35 +34,53 @@ } - @@ -148,7 +166,7 @@
-
@@ -587,20 +605,20 @@ // 页面加载时检查后端消息 document.addEventListener('DOMContentLoaded', function () { // 检查流程操作的后端消息(使用 Thymeleaf JS 内联语法) - /*[[#{ - if (${message != null}) { + const serverMessage = /*[[${message}]]*/ null; + if (serverMessage && serverMessage !== 'null') { operationMessage.classList.remove('hidden'); - if (${message.startsWith('操作成功')}) { + if (serverMessage.includes('成功')) { operationMessage.className = 'mt-4 p-4 rounded-lg bg-green-50 border border-green-200 text-green-700'; } else { operationMessage.className = 'mt-4 p-4 rounded-lg bg-red-50 border border-red-200 text-red-700'; } - operationMessage.innerHTML = '' + '${message}'; + const iconClass = serverMessage.includes('成功') ? 'fa-check-circle' : 'fa-exclamation-circle'; + operationMessage.innerHTML = `${serverMessage}`; } - }]]*/ // 显示授权错误(如果有) - if (authError && authError.textContent.trim() !== '') { + if (authError && authError.textContent.trim() !== '' && !authError.textContent.includes('${authError}')) { authError.classList.remove('hidden'); } });