diff --git a/backend/src/main/java/io/dataease/plugins/config/PluginRunner.java b/backend/src/main/java/io/dataease/plugins/config/PluginRunner.java index 0ed8418e78..529889b1e4 100644 --- a/backend/src/main/java/io/dataease/plugins/config/PluginRunner.java +++ b/backend/src/main/java/io/dataease/plugins/config/PluginRunner.java @@ -4,23 +4,37 @@ import io.dataease.commons.utils.LogUtil; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.plugins.common.base.domain.MyPlugin; import io.dataease.service.sys.PluginService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; import java.io.File; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Component public class PluginRunner implements ApplicationRunner { + private static final List discardModules = new ArrayList<>(); + @Value("${dataease.plugin.dir:/opt/dataease/plugins/}") private String pluginDir; @Autowired private PluginService pluginService; + @PostConstruct + public void init() { + discardModules.add("dataease-extensions-tabs-backend"); + } + @Override @@ -28,7 +42,29 @@ public class PluginRunner implements ApplicationRunner { // 执行加载插件逻辑 BaseGridRequest request = new BaseGridRequest(); List plugins = pluginService.query(request); + if (CollectionUtils.isEmpty(plugins)) return; + Map> groupMap = plugins.stream().collect(Collectors.groupingBy(this::isDiscard)); + if (ObjectUtils.isEmpty(groupMap)) return; + List discardPlugins = groupMap.get(true); + if (CollectionUtils.isNotEmpty(discardPlugins)) { + try { + + for (int i = 0; i < discardPlugins.size(); i++) { + MyPlugin plugin = discardPlugins.get(i); + pluginService.uninstall(plugin.getPluginId()); + } + }catch (Exception e) { + LogUtil.error(e.getMessage(), e); + } + + } + + if (CollectionUtils.isEmpty(groupMap.get(false))) return; + plugins.stream().forEach(plugin -> { + if (isDiscard(plugin)) { + + } String store = plugin.getStore(); String version = plugin.getVersion(); String moduleName = plugin.getModuleName(); @@ -52,4 +88,8 @@ public class PluginRunner implements ApplicationRunner { } + private boolean isDiscard(MyPlugin myPlugin) { + return discardModules.contains(myPlugin.getModuleName()); + } + }