Merge remote-tracking branch 'origin/feature/REQ-2046' into feature/20240306

This commit is contained in:
TanJ 2024-03-05 20:14:40 +08:00
commit 5b1c8513b7
3 changed files with 86 additions and 27 deletions

View File

@ -11,6 +11,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
*
* 经过auth之后可以得到ContextInfo
@ -57,6 +59,8 @@ public class ContextInfo {
*/
private Integer ouType;
private List<Integer> ouTypes;
/**
* 如果是企业视角传EntId
* 如果是项目视角传ProjectId
@ -87,6 +91,8 @@ public class ContextInfo {
*/
private Integer workspaceJoinType;
private List<Integer> workspaceJoinTypes;
/**
* 模板方法用来自定义ContextInfo
*
@ -273,4 +279,20 @@ public class ContextInfo {
public void setWorkspaceJoinType(Integer workspaceJoinType) {
this.workspaceJoinType = workspaceJoinType;
}
public List<Integer> getOuTypes() {
return ouTypes;
}
public void setOuTypes(List<Integer> ouTypes) {
this.ouTypes = ouTypes;
}
public List<Integer> getWorkspaceJoinTypes() {
return workspaceJoinTypes;
}
public void setWorkspaceJoinTypes(List<Integer> workspaceJoinTypes) {
this.workspaceJoinTypes = workspaceJoinTypes;
}
}

View File

@ -9,11 +9,9 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import jdk.nashorn.internal.ir.Terminal;
import cn.hutool.core.util.StrUtil;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.Map.Entry;
/**
@ -452,18 +450,37 @@ public class TerminalInfo {
return NT_CMS_WEB_ENT_ZB.equals(newTerminalString);
}
public boolean isCMS_WEB_ENT_ZB(Integer workspaceType) {
return NT_CMS_WEB_ENT_ZB.equals(newTerminalString)
|| (NT_CMS_WEB_GENERAL.equals(newTerminalString) && workspaceType == 1);
}
public boolean isCMS_WEB_PROJ() {
return NT_CMS_WEB_PROJ.equals(newTerminalString);
}
public boolean isCMS_WEB_PROJ(Integer workspaceType) {
return NT_CMS_WEB_PROJ.equals(newTerminalString)
|| (NT_CMS_WEB_GENERAL.equals(newTerminalString) && workspaceType == 2);
}
public boolean isCMP_APP_ENT_ZB() {
return NT_CMP_APP_ENT_ZB.equals(newTerminalString);
}
public boolean isCMP_APP_ENT_ZB(Integer workspaceType) {
return NT_CMP_APP_ENT_ZB.equals(newTerminalString)
|| (NT_CMP_APP_GENERAL.equals(newTerminalString) && workspaceType == 1);
}
public boolean isCMP_APP_PROJ() {
return NT_CMP_APP_PROJ.equals(newTerminalString);
}
public boolean isCMP_APP_PROJ(Integer workspaceType) {
return NT_CMP_APP_PROJ.equals(newTerminalString)
|| (NT_CMP_APP_GENERAL.equals(newTerminalString) && workspaceType == 2);
}
public boolean isCM_APP_CM_LEADER() {
return NT_CM_APP_CM_LEADER.equals(newTerminalString);
}
@ -701,6 +718,15 @@ public class TerminalInfo {
return terminalKey;
}
/** 是否管理端APP - 待细化 现在等同于isAppGeneral **/
public boolean isManageApp() {
//APP管理端多terminal统一使用NT_CMP_APP_GENERAL 同时兼容老APP terminal
if (StrUtil.isBlank(newTerminalString)) {
return false;
}
return StrUtil.equalsAny(newTerminalString, NT_CM_APP_CM_LEADER, NT_CM_APP_GENERAL, NT_CMP_APP_PROJ, NT_CMP_APP_GENERAL, NT_CMP_APP_ENT_ZB);
}
public static void main(String[] args) {
TerminalInfo tm = new TerminalInfo("proj");
System.out.println(tm.getRawTerminalString());

View File

@ -20,10 +20,15 @@ import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.http.HttpException;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@ -142,7 +147,7 @@ public class ContextInfoBuilderAspect {
}
public Object[] parseContextInfoAndReturnArgs(HttpServletRequest request, ProceedingJoinPoint pjp,
ContextInfo contextInfo) {
ContextInfo contextInfo) {
// 把ContextInfo注入到函数的入参中
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
Method method = methodSignature.getMethod();
@ -279,7 +284,7 @@ public class ContextInfoBuilderAspect {
*/
@Deprecated
private String buildLegacyGuessMissedReqStringForRemoteAuth(ContextInfo contextInfo,
HttpServletRequest originalRequest) {
HttpServletRequest originalRequest) {
LegacyGuessMissedReq req = new LegacyGuessMissedReq();
req.setOriginalUrl(originalRequest.getRequestURI());
req.setHeaderOuId(contextInfo.getOuId());
@ -304,36 +309,42 @@ public class ContextInfoBuilderAspect {
BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false);
contextInfo.setUserInfo(userInfo);
try {
if(userinfoMap.containsKey("ouType"))
contextInfo.setOuType(Integer.parseInt(userinfoMap.get("ouType").toString()));
} catch (Throwable t) {
log.warn("fill ouType error, user identityId=" + userInfo.getIdentityId());
}
try {
contextInfo.setWorkspaceType(Integer.parseInt(userinfoMap.get("workspaceType").toString()));
}catch (Throwable t) {
log.warn("fill workspaceType error, user identityId=" + userInfo.getIdentityId());
}
try {
contextInfo.setWorkspaceJoinType(Integer.parseInt(userinfoMap.get("workspaceJoinType").toString()));
}catch (Throwable t) {
log.warn("fill workspaceJoinType error, user identityId=" + userInfo.getIdentityId());
}
try {
fillOUWorkspaceType(contextInfo, userinfoMap);
fillLegacyGuess(contextInfo, userinfoMap);
contextInfo.getSystemAndDeviceInfo().setLoginDevice(contextInfo.getTerminalInfo().getSimpleTerminal());
// loginDevice 字段已经被消费了所以这里需要新创建一个字段 用来设置登录端
contextInfo.getSystemAndDeviceInfo().setDevice((String) userinfoMap.get("loginDevice"));
} catch (Exception e) {
log.warn("fill legacy guess error for user identityId=" + userInfo.getIdentityId(), e);
log.warn("fill contextInfo error for user identityId=" + userInfo.getIdentityId(), e);
}
contextInfo.setUserInfoMap(new UserInfoMap(userinfoMap));
}
private void fillOUWorkspaceType(ContextInfo contextInfo, Map<String, Object> userinfoMap) {
try {
contextInfo.setWorkspaceType(Integer.parseInt(userinfoMap.getOrDefault("workspaceType", "0").toString()));
//ouType和ouTypes
contextInfo.setOuType(Integer.parseInt(userinfoMap.getOrDefault("ouType", "0").toString()));
Object ouTypes = userinfoMap.get("ouTypes");
if (ouTypes instanceof JSONArray) {
contextInfo.setOuTypes(((JSONArray) ouTypes).toList(Integer.class));
}
//workspaceJoinType和 workspaceJoinTypes;
contextInfo.setWorkspaceJoinType(Integer.parseInt(userinfoMap.getOrDefault("workspaceJoinType", "0").toString()));
Object workspaceTypes = userinfoMap.get("workspaceJoinTypes");
if (workspaceTypes instanceof JSONArray) {
contextInfo.setWorkspaceJoinTypes(((JSONArray) workspaceTypes).toList(Integer.class));
}
} catch (Throwable t) {
log.warn("fill ouType/workspace join type error", t);
}
}
/**
* 期待着前端上线之后header都补齐这些代码可以全都删掉
*