feat: 优化context

This commit is contained in:
zengxiaobo 2024-05-28 14:58:21 +08:00
parent 10cfc22963
commit ef3114cffd

View File

@ -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<HttpServletRequest, AxContext, Boolean> filler;
private final BiConsumer<HttpServletRequest, AxContext> filler;
}
private static Optional<JSONObject> 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) {