forked from github/dataease
perf(仪表板-选项卡): 启动时自动卸载已废弃的选项卡插件
This commit is contained in:
parent
86c7fb015d
commit
322460ad44
@ -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<String> 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<MyPlugin> plugins = pluginService.query(request);
|
||||
if (CollectionUtils.isEmpty(plugins)) return;
|
||||
Map<Boolean, List<MyPlugin>> groupMap = plugins.stream().collect(Collectors.groupingBy(this::isDiscard));
|
||||
if (ObjectUtils.isEmpty(groupMap)) return;
|
||||
List<MyPlugin> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user