feat: 优化context
This commit is contained in:
parent
10cfc22963
commit
ef3114cffd
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user