From ef3114cffdff00d84ef890c8887c86246a34e0b7 Mon Sep 17 00:00:00 2001 From: zengxiaobo Date: Tue, 28 May 2024 14:58:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96context?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/support/context/AxContext.java | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/web-support-lib/src/main/java/cn/axzo/foundation/web/support/context/AxContext.java b/web-support-lib/src/main/java/cn/axzo/foundation/web/support/context/AxContext.java index 17a8a21..62797ba 100644 --- a/web-support-lib/src/main/java/cn/axzo/foundation/web/support/context/AxContext.java +++ b/web-support-lib/src/main/java/cn/axzo/foundation/web/support/context/AxContext.java @@ -11,7 +11,7 @@ import lombok.*; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Optional; -import java.util.function.BiFunction; +import java.util.function.BiConsumer; @Data @Builder @@ -53,9 +53,8 @@ public class AxContext { } HttpServletRequest request = getRequest().get(); AxContext context = AxContext.builder().build(); - Boolean[] initialled = Arrays.stream(HeaderEnum.values()) - .map(e -> e.getFiller().apply(request, context)) - .toArray(Boolean[]::new); + Arrays.stream(HeaderEnum.values()) + .forEach(e -> e.getFiller().accept(request, context)); //所有的header设置成功才算成功 return context; } @@ -87,37 +86,46 @@ public class AxContext { @Getter public enum HeaderEnum { USER("用户信息", (request, context) -> { - String userHeader = request.getHeader("userinfo"); - if (Strings.isNullOrEmpty(userHeader)) { - return false; - } - String userStr = new String(BaseEncoding.base64().decode(userHeader), Charsets.UTF_8); - context.setAxUser(JSONObject.parseObject(userStr, AxUser.class)); - return true; + getUserJSON(request) + .ifPresent(e -> context.setAxUser(e.toJavaObject(AxUser.class))); }), OU_ID("企业ID", (request, context) -> { String ouIdHeader = request.getHeader("ouId"); - if (Strings.isNullOrEmpty(ouIdHeader)) { - return false; + if (!Strings.isNullOrEmpty(ouIdHeader) || !"0".equals(ouIdHeader)) { + context.setOuId(Long.parseLong(ouIdHeader)); + return; } - context.setOuId(Long.parseLong(ouIdHeader)); - return true; + getUserJSON(request).ifPresent(e -> { + Long userOuId = e.getLong("ouId"); + context.setOuId(userOuId != null && userOuId > 0 ? userOuId : null); + }); }), WORKSPACE_ID("租户ID", (request, context) -> { String workspaceIdHeader = request.getHeader("workspaceId"); - if (Strings.isNullOrEmpty(workspaceIdHeader)) { - return false; + if (!Strings.isNullOrEmpty(workspaceIdHeader) || !"0".equals(workspaceIdHeader)) { + context.setWorkspaceId(Long.parseLong(workspaceIdHeader)); + return; } - context.setWorkspaceId(Long.parseLong(workspaceIdHeader)); - return true; + getUserJSON(request).ifPresent(e -> { + Long userWorkspaceId = e.getLong("workspaceId"); + context.setWorkspaceId(userWorkspaceId != null && userWorkspaceId > 0 ? userWorkspaceId : null); + }); }), TERMINAL("终端", (request, context) -> { context.setTerminal(request.getHeader("terminal")); - return true; }); private final String desc; - private final BiFunction filler; + private final BiConsumer filler; + } + + private static Optional getUserJSON(HttpServletRequest request) { + String userHeader = request.getHeader("userinfo"); + if (Strings.isNullOrEmpty(userHeader)) { + return Optional.empty(); + } + String userStr = new String(BaseEncoding.base64().decode(userHeader), Charsets.UTF_8); + return Optional.of(JSONObject.parseObject(userStr)); } public static void main(String[] args) {