feat(REQ-2300):获取提交数据的workspaceId

This commit is contained in:
李昆鹏 2024-07-30 10:23:44 +08:00
parent 52f5e9b546
commit bcef59ffd2

View File

@ -137,7 +137,9 @@ public class DataPermissionInterceptor {
return; return;
} }
Optional<MatchDataObjectResp> matchDataObjectOptional = this.matchRule(dataPermission, httpRequest); Long responseBodyWorkspaceId = getRequestBodyWorkspaceId(httpRequest, dataPermission);
Optional<MatchDataObjectResp> matchDataObjectOptional = this.matchRule(dataPermission, responseBodyWorkspaceId);
if (!matchDataObjectOptional.isPresent()) { if (!matchDataObjectOptional.isPresent()) {
log.warn("no match data rule, bizCode:{}, personId{}, ouId:{}, workspaceId:{}", log.warn("no match data rule, bizCode:{}, personId{}, ouId:{}, workspaceId:{}",
dataPermission.bizCode(), dataPermission.bizCode(),
@ -149,7 +151,7 @@ public class DataPermissionInterceptor {
DataPermissionContextHolder.DataPermissionContext dataPermissionContext = DataPermissionContextHolder.DataPermissionContext.builder() DataPermissionContextHolder.DataPermissionContext dataPermissionContext = DataPermissionContextHolder.DataPermissionContext.builder()
.dataPermission(dataPermission) .dataPermission(dataPermission)
.workspaceId(contextInfo.getWorkspaceId()) .workspaceId(Objects.nonNull(responseBodyWorkspaceId) ? responseBodyWorkspaceId : contextInfo.getWorkspaceId())
.ouId(contextInfo.getOuId()) .ouId(contextInfo.getOuId())
.personId(contextInfo.getUserInfo().getPersonId()) .personId(contextInfo.getUserInfo().getPersonId())
.resultKey(matchDataObjectOptional.get().getResultKey()) .resultKey(matchDataObjectOptional.get().getResultKey())
@ -158,22 +160,14 @@ public class DataPermissionInterceptor {
DataPermissionContextHolder.setContext(dataPermissionContext); DataPermissionContextHolder.setContext(dataPermissionContext);
} }
private Optional<MatchDataObjectResp> matchRule(DataPermission dataPermission, HttpServletRequest httpRequest) { private Optional<MatchDataObjectResp> matchRule(DataPermission dataPermission, Long responseBodyWorkspaceId) {
ContextInfo contextInfo = ContextInfoHolder.get(); ContextInfo contextInfo = ContextInfoHolder.get();
Long workspaceId = null;
String requestBodyWorkspaceId = dataPermission.requestBodyWorkspaceId();
if (StringUtils.isNotBlank(requestBodyWorkspaceId)) {
workspaceId = getRequestBodyWorkspaceId(httpRequest, requestBodyWorkspaceId);
}
if (Objects.isNull(workspaceId)) {
workspaceId = contextInfo.getWorkspaceId();
}
MatchDataObjectReq matchDataObjectReq = MatchDataObjectReq.builder() MatchDataObjectReq matchDataObjectReq = MatchDataObjectReq.builder()
.dataObjectCode(dataPermission.bizCode()) .dataObjectCode(dataPermission.bizCode())
.ouId(contextInfo.getOuId()) .ouId(contextInfo.getOuId())
.workspaceId(workspaceId) .workspaceId(Objects.nonNull(responseBodyWorkspaceId) ? responseBodyWorkspaceId : contextInfo.getWorkspaceId())
.personId(contextInfo.getUserInfo().getPersonId()) .personId(contextInfo.getUserInfo().getPersonId())
.build(); .build();
@ -202,12 +196,16 @@ public class DataPermissionInterceptor {
return dataPermissionContext; return dataPermissionContext;
} }
private Long getRequestBodyWorkspaceId(HttpServletRequest httpRequest, String requestBodyWorkspaceIdKey) { private Long getRequestBodyWorkspaceId(HttpServletRequest httpRequest, DataPermission dataPermission) {
try { try {
String requestBodyWorkspaceId = dataPermission.requestBodyWorkspaceId();
if (StringUtils.isBlank(requestBodyWorkspaceId)) {
return null;
}
String requestBody = httpRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator())); String requestBody = httpRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(requestBody); JsonNode rootNode = mapper.readTree(requestBody);
String workspaceId = rootNode.path(requestBodyWorkspaceIdKey).asText(); String workspaceId = rootNode.path(requestBodyWorkspaceId).asText();
if (StringUtils.isNotBlank(workspaceId)) { if (StringUtils.isNotBlank(workspaceId)) {
return Long.valueOf(workspaceId); return Long.valueOf(workspaceId);
} }