From 322460ad447f488698062cb5b5d21dd535f291ad Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 17 Aug 2022 12:00:49 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E4=BB=AA=E8=A1=A8=E6=9D=BF-=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E5=8D=A1):=20=E5=90=AF=E5=8A=A8=E6=97=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8D=B8=E8=BD=BD=E5=B7=B2=E5=BA=9F=E5=BC=83=E7=9A=84?= =?UTF-8?q?=E9=80=89=E9=A1=B9=E5=8D=A1=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/plugins/config/PluginRunner.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) 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()); + } + }