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 73c8c99978..1396e66c68 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -330,6 +330,12 @@ public class DatasourceService { return datasourceMapper.selectByPrimaryKey(id); } + public List selectByType(String type){ + DatasourceExample datasourceExample = new DatasourceExample(); + datasourceExample.createCriteria().andTypeEqualTo(type); + return datasourceMapper.selectByExampleWithBLOBs(datasourceExample); + } + public void initAllDataSourceConnectionPool() { List datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample()); datasources.forEach(datasource -> { diff --git a/backend/src/main/java/io/dataease/service/sys/PluginService.java b/backend/src/main/java/io/dataease/service/sys/PluginService.java index 7b19dac5a8..b00d73dc5d 100644 --- a/backend/src/main/java/io/dataease/service/sys/PluginService.java +++ b/backend/src/main/java/io/dataease/service/sys/PluginService.java @@ -13,10 +13,14 @@ import io.dataease.commons.utils.DeFileUtils; import io.dataease.commons.utils.LogUtil; import io.dataease.commons.utils.ZipUtils; import io.dataease.controller.sys.base.BaseGridRequest; +import io.dataease.i18n.Translator; import io.dataease.listener.util.CacheUtils; import io.dataease.plugins.common.base.domain.MyPlugin; import io.dataease.plugins.common.base.mapper.MyPluginMapper; import io.dataease.plugins.config.LoadjarUtil; +import io.dataease.plugins.config.SpringContextUtil; +import io.dataease.service.datasource.DatasourceService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -49,6 +53,9 @@ public class PluginService { @Resource private MyPluginMapper myPluginMapper; + @Resource + private DatasourceService datasourceService; + @Autowired private LoadjarUtil loadjarUtil; @@ -187,6 +194,15 @@ public class PluginService { CacheUtils.removeAll(AuthConstants.USER_CACHE_NAME); CacheUtils.removeAll(AuthConstants.USER_ROLE_CACHE_NAME); CacheUtils.removeAll(AuthConstants.USER_PERMISSION_CACHE_NAME); + + if(myPlugin.getCategory().equalsIgnoreCase("datasource")){ + if(CollectionUtils.isNotEmpty(datasourceService.selectByType(myPlugin.getDsType()))){ + throw new RuntimeException(Translator.get("i18n_plugin_not_allow_delete")); + } + SpringContextUtil.getBeanFactory().removeBeanDefinition(myPlugin.getDsType() + "DsProvider"); + SpringContextUtil.getBeanFactory().removeBeanDefinition(myPlugin.getDsType() + "QueryProvider"); + SpringContextUtil.getBeanFactory().removeBeanDefinition(myPlugin.getDsType() + "Service"); + } myPluginMapper.deleteByPrimaryKey(pluginId); return true; } diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index a07ed2d8c2..41e7b9c1b1 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -123,3 +123,4 @@ theme_name_empty=name can not be empty i18n_public_chart=【Public Chart】 i18n_class_blue=Blue Tone 插件管理=Plugins +i18n_plugin_not_allow_delete=The plugin in in use cannot be deleted \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 73b2ec6ac2..92d7c9ab32 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -122,4 +122,5 @@ theme_name_empty=名称不能为空 i18n_public_chart=【存量视图】 i18n_class_blue=蓝色调 插件管理=插件管理 +i18n_plugin_not_allow_delete=正在使用的插件不允许删除 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index 0e8f1ca77b..6257dd4ede 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -123,3 +123,4 @@ theme_name_empty=名稱不能為空 i18n_public_chart=【存量视图】 i18n_class_blue=蓝色调 插件管理=插件管理 +i18n_plugin_not_allow_delete=正在使用的插件不允許刪除 \ No newline at end of file