Merge branch 'v1.13' into dev

This commit is contained in:
taojinlong 2022-07-28 17:15:34 +08:00
commit f2942f2d3a
2 changed files with 46 additions and 34 deletions

View File

@ -123,18 +123,24 @@ public class PermissionService {
dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(userId)); dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(userId));
dataSetRowPermissionsDTO.setAuthTargetType("user"); dataSetRowPermissionsDTO.setAuthTargetType("user");
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
dataSetRowPermissionsDTO.setAuthTargetIds(roleIds);
dataSetRowPermissionsDTO.setAuthTargetType("role"); if(CollectionUtils.isNotEmpty(roleIds)){
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); dataSetRowPermissionsDTO.setAuthTargetIds(roleIds);
dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId)); dataSetRowPermissionsDTO.setAuthTargetType("role");
dataSetRowPermissionsDTO.setAuthTargetType("dept"); datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
}
if(deptId != null){
dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId));
dataSetRowPermissionsDTO.setAuthTargetType("dept");
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
}
dataSetRowPermissionsDTO.setAuthTargetType("sysParams"); dataSetRowPermissionsDTO.setAuthTargetType("sysParams");
dataSetRowPermissionsDTO.setAuthTargetIds(null); dataSetRowPermissionsDTO.setAuthTargetIds(null);
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
values.put("${sysParams.userId}", userEntity.getUsername()); values.put("${sysParams.userId}", userEntity.getUsername());
values.put("${sysParams.userName}", userEntity.getNickName()); values.put("${sysParams.userName}", userEntity.getNickName());
values.put("${sysParams.userEmail}", userEntity.getEmail()); values.put("${sysParams.userEmail}", userEntity.getEmail());
@ -170,28 +176,33 @@ public class PermissionService {
dataSetColumnPermissionsDTO.setAuthTargetType("user"); dataSetColumnPermissionsDTO.setAuthTargetType("user");
datasetColumnPermissions.addAll(columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)); datasetColumnPermissions.addAll(columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO));
dataSetColumnPermissionsDTO.setAuthTargetIds(roleIds); if(CollectionUtils.isNotEmpty(roleIds)){
dataSetColumnPermissionsDTO.setAuthTargetType("role"); dataSetColumnPermissionsDTO.setAuthTargetIds(roleIds);
List<DataSetColumnPermissionsDTO> roleColumnPermissionsDTOS = new ArrayList<>(); dataSetColumnPermissionsDTO.setAuthTargetType("role");
for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) { List<DataSetColumnPermissionsDTO> roleColumnPermissionsDTOS = new ArrayList<>();
columnPermissionsDTO.getWhiteListUser(); for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) {
List<Long> userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken<List<Long>>() {}.getType()); columnPermissionsDTO.getWhiteListUser();
if(!userIdList.contains(userId)){ List<Long> userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken<List<Long>>() {}.getType());
roleColumnPermissionsDTOS.add(columnPermissionsDTO); if(!userIdList.contains(userId)){
roleColumnPermissionsDTOS.add(columnPermissionsDTO);
}
} }
datasetColumnPermissions.addAll(roleColumnPermissionsDTOS);
} }
datasetColumnPermissions.addAll(roleColumnPermissionsDTOS);
dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId)); if(deptId != null){
dataSetColumnPermissionsDTO.setAuthTargetType("dept"); dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId));
List<DataSetColumnPermissionsDTO> deptColumnPermissionsDTOS = new ArrayList<>(); dataSetColumnPermissionsDTO.setAuthTargetType("dept");
for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) { List<DataSetColumnPermissionsDTO> deptColumnPermissionsDTOS = new ArrayList<>();
List<Long> userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken<List<Long>>() {}.getType()); for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) {
if(!userIdList.contains(userId)){ List<Long> userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken<List<Long>>() {}.getType());
deptColumnPermissionsDTOS.add(columnPermissionsDTO); if(!userIdList.contains(userId)){
deptColumnPermissionsDTOS.add(columnPermissionsDTO);
}
} }
datasetColumnPermissions.addAll(deptColumnPermissionsDTOS);
} }
datasetColumnPermissions.addAll(deptColumnPermissionsDTOS);
return datasetColumnPermissions; return datasetColumnPermissions;
} }

View File

@ -1,9 +1,7 @@
package io.dataease.service.datasource; package io.dataease.service.datasource;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@ -61,7 +59,6 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class DatasourceService { public class DatasourceService {
@Resource @Resource
@ -91,6 +88,7 @@ public class DatasourceService {
} }
@DeCleaner(DePermissionType.DATASOURCE) @DeCleaner(DePermissionType.DATASOURCE)
@Transactional(rollbackFor = Exception.class)
public Datasource addDatasource(Datasource datasource) throws Exception { public Datasource addDatasource(Datasource datasource) throws Exception {
if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())) { if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())) {
throw new Exception("Datasource type not supported."); throw new Exception("Datasource type not supported.");
@ -298,12 +296,12 @@ public class DatasourceService {
if (datasource == null) { if (datasource == null) {
return ResultHolder.error("Can not find datasource: " + datasourceId); return ResultHolder.error("Can not find datasource: " + datasourceId);
} }
String datasourceStatus = null;
try { try {
Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource); datasourceRequest.setDatasource(datasource);
String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest); datasourceStatus = datasourceProvider.checkStatus(datasourceRequest);
datasource.setStatus(datasourceStatus);
if (datasource.getType().equalsIgnoreCase("api")) { if (datasource.getType().equalsIgnoreCase("api")) {
List<ApiDefinition> apiDefinitionList = new Gson().fromJson(datasource.getConfiguration(), new TypeToken<List<ApiDefinition>>() { List<ApiDefinition> apiDefinitionList = new Gson().fromJson(datasource.getConfiguration(), new TypeToken<List<ApiDefinition>>() {
@ -328,10 +326,14 @@ public class DatasourceService {
return ResultHolder.success("Success"); return ResultHolder.success("Success");
} catch (Exception e) { } catch (Exception e) {
datasource.setStatus("Error"); datasourceStatus = "Error";
return ResultHolder.error("Datasource is invalid: " + e.getMessage()); return ResultHolder.error("Datasource is invalid: " + e.getMessage());
} finally { } finally {
datasourceMapper.updateByPrimaryKey(datasource); Datasource record = new Datasource();
record.setStatus(datasourceStatus);
DatasourceExample example = new DatasourceExample();
example.createCriteria().andIdEqualTo(datasource.getId());
datasourceMapper.updateByExampleSelective(record, example);
} }
} }
@ -461,15 +463,14 @@ public class DatasourceService {
datasourceRequest.setDatasource(datasource); datasourceRequest.setDatasource(datasource);
String status = datasourceProvider.checkStatus(datasourceRequest); String status = datasourceProvider.checkStatus(datasourceRequest);
record.setStatus(status); record.setStatus(status);
datasourceMapper.updateByExampleSelective(datasource, example); datasourceMapper.updateByExampleSelective(record, example);
} catch (Exception e) { } catch (Exception e) {
Datasource temp = datasourceMapper.selectByPrimaryKey(datasource.getId()); Datasource temp = datasourceMapper.selectByPrimaryKey(datasource.getId());
record.setStatus("Error"); record.setStatus("Error");
if (!StringUtils.equals(temp.getStatus(), "Error")) { if (!StringUtils.equals(temp.getStatus(), "Error")) {
sendWebMsg(datasource); sendWebMsg(datasource);
datasourceMapper.updateByExampleSelective(datasource, example); datasourceMapper.updateByExampleSelective(record, example);
} }
} }
} }