From c97b9a1ae69f31c9bb4b28f804ea9ed4e84cd47c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 28 Jul 2022 17:09:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E6=BA=90):=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E6=A0=A1=E9=AA=8C=E6=97=B6=E4=BA=8B=E5=8A=A1?= =?UTF-8?q?=E9=94=81=E8=A1=A8=E6=97=B6=E9=97=B4=E5=A4=AA=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/datasource/DatasourceService.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index d5d9c6ae60..489b69383e 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -1,9 +1,7 @@ package io.dataease.service.datasource; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; @@ -61,7 +59,6 @@ import java.util.*; import java.util.stream.Collectors; @Service -@Transactional(rollbackFor = Exception.class) public class DatasourceService { @Resource @@ -91,6 +88,7 @@ public class DatasourceService { } @DeCleaner(DePermissionType.DATASOURCE) + @Transactional(rollbackFor = Exception.class) public Datasource addDatasource(Datasource datasource) throws Exception { if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())) { throw new Exception("Datasource type not supported."); @@ -298,12 +296,12 @@ public class DatasourceService { if (datasource == null) { return ResultHolder.error("Can not find datasource: " + datasourceId); } + String datasourceStatus = null; try { Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(datasource); - String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest); - datasource.setStatus(datasourceStatus); + datasourceStatus = datasourceProvider.checkStatus(datasourceRequest); if (datasource.getType().equalsIgnoreCase("api")) { List apiDefinitionList = new Gson().fromJson(datasource.getConfiguration(), new TypeToken>() { @@ -328,10 +326,14 @@ public class DatasourceService { return ResultHolder.success("Success"); } catch (Exception e) { - datasource.setStatus("Error"); + datasourceStatus = "Error"; return ResultHolder.error("Datasource is invalid: " + e.getMessage()); } 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); String status = datasourceProvider.checkStatus(datasourceRequest); record.setStatus(status); - datasourceMapper.updateByExampleSelective(datasource, example); + datasourceMapper.updateByExampleSelective(record, example); } catch (Exception e) { Datasource temp = datasourceMapper.selectByPrimaryKey(datasource.getId()); record.setStatus("Error"); if (!StringUtils.equals(temp.getStatus(), "Error")) { sendWebMsg(datasource); - datasourceMapper.updateByExampleSelective(datasource, example); + datasourceMapper.updateByExampleSelective(record, example); } - } }