diff --git a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java index 529cdb16af..e04d3196ed 100644 --- a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java +++ b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java @@ -7,6 +7,7 @@ import io.dataease.base.mapper.*; import io.dataease.base.mapper.ext.ExtDataSourceMapper; import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.commons.exception.DEException; +import io.dataease.commons.model.AuthURD; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.CommonThreadPool; import io.dataease.commons.utils.LogUtil; @@ -25,6 +26,8 @@ import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.exception.DataEaseException; import io.dataease.i18n.Translator; import io.dataease.service.dataset.DataSetGroupService; +import io.dataease.service.message.DeMsgutil; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -34,7 +37,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.UUID; @Service @@ -238,7 +244,8 @@ public class DatasourceService { public void updateDatasourceStatus(){ List datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample()); datasources.forEach(datasource -> { - checkAndUpdateDatasourceStatus(datasource); + // checkAndUpdateDatasourceStatus(datasource); + checkAndUpdateDatasourceStatus(datasource, true); }); } @@ -255,4 +262,39 @@ public class DatasourceService { datasourceMapper.updateByPrimaryKeySelective(datasource); } } + + private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg){ + try { + DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); + DatasourceRequest datasourceRequest = new DatasourceRequest(); + datasourceRequest.setDatasource(datasource); + datasourceProvider.checkStatus(datasourceRequest); + datasource.setStatus("Success"); + datasourceMapper.updateByPrimaryKeySelective(datasource); + } catch (Exception e) { + datasource.setStatus("Error"); + sendWebMsg(datasource); + datasourceMapper.updateByPrimaryKeySelective(datasource); + } + } + + + private void sendWebMsg(Datasource datasource) { + + String id = datasource.getId(); + AuthURD authURD = AuthUtils.authURDR(id); + Set userIds = AuthUtils.userIdsByURD(authURD); + Long typeId = 8L;// 代表数据源失效 + Gson gson = new Gson(); + userIds.forEach(userId -> { + Map param = new HashMap<>(); + param.put("id", id); + param.put("name", datasource.getName()); + + + String content = "数据源【" + datasource.getName() + "】无效"; + + DeMsgutil.sendMsg(userId, typeId, 1L, content, gson.toJson(param)); + }); + } }