diff --git a/backend/pom.xml b/backend/pom.xml
index b2216cd9b2..3e84f3d27a 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -351,6 +351,13 @@
c3p0
0.9.1.2
+
+
+ io.dataease
+ dataease-plugin-xpack
+ 1.0
+
diff --git a/backend/src/main/java/io/dataease/auth/api/dto/DynamicMenuDto.java b/backend/src/main/java/io/dataease/auth/api/dto/DynamicMenuDto.java
index 5b68491943..e83e0f1ced 100644
--- a/backend/src/main/java/io/dataease/auth/api/dto/DynamicMenuDto.java
+++ b/backend/src/main/java/io/dataease/auth/api/dto/DynamicMenuDto.java
@@ -29,6 +29,8 @@ public class DynamicMenuDto implements Serializable {
private Integer type;
+ private Boolean isPlugin;
+
private List children;
}
diff --git a/backend/src/main/java/io/dataease/auth/server/AuthServer.java b/backend/src/main/java/io/dataease/auth/server/AuthServer.java
index ce306b470b..51621b4df7 100644
--- a/backend/src/main/java/io/dataease/auth/server/AuthServer.java
+++ b/backend/src/main/java/io/dataease/auth/server/AuthServer.java
@@ -13,9 +13,11 @@ import io.dataease.auth.util.RsaUtil;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.commons.utils.ServletUtils;
-/*import io.dataease.plugins.config.SpringContextUtil;
-import io.dataease.plugins.xpack.dto.response.SysSettingDto;
-import io.dataease.plugins.xpack.service.DePluginXpackService;*/
+
+import io.dataease.plugins.config.SpringContextUtil;
+
+import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
+import io.dataease.plugins.xpack.display.service.DisPlayXpackService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -108,14 +110,15 @@ public class AuthServer implements AuthApi {
SysUserEntity userById = authUserService.getUserById(4L);
String nickName = userById.getNickName();
// System.out.println(nickName);
- /* Map beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType(DePluginXpackService.class);
+ Map beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType(DisPlayXpackService.class);
for (Map.Entry entry : beansOfType.entrySet()) {
Object key = entry.getKey();
- DePluginXpackService value = (DePluginXpackService)entry.getValue();
+ DisPlayXpackService value = (DisPlayXpackService)entry.getValue();
List sysSettingDtos = value.systemSettings();
+
String name = entry.getValue().getClass().getName();
System.out.println("key: "+ key + ", value: "+ name);
- }*/
+ }
return "apple";
}
}
diff --git a/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java
index 7254206150..c234f58b2e 100644
--- a/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java
+++ b/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java
@@ -5,6 +5,11 @@ import io.dataease.auth.entity.SysUserEntity;
import io.dataease.base.mapper.ext.AuthMapper;
import io.dataease.auth.service.AuthUserService;
import io.dataease.commons.constants.AuthConstants;
+import io.dataease.plugins.common.dto.PluginSysMenu;
+import io.dataease.plugins.common.service.PluginMenuService;
+import io.dataease.plugins.config.SpringContextUtil;
+import io.dataease.plugins.util.PluginUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
@@ -53,6 +58,14 @@ public class AuthUserServiceImpl implements AuthUserService {
@Override
public List permissions(Long userId){
List permissions = authMapper.permissions(userId);
+ List pluginSysMenus = PluginUtils.pluginMenus();
+ if (CollectionUtils.isNotEmpty(pluginSysMenus)) {
+ List menuIds = authMapper.userMenuIds(userId);
+ List pluginPermissions = pluginSysMenus.stream().
+ filter(sysMenu -> menuIds.contains(sysMenu.getMenuId()))
+ .map(menu -> menu.getPermission()).collect(Collectors.toList());
+ permissions.addAll(pluginPermissions);
+ }
return permissions.stream().filter(StringUtils::isNotEmpty).collect(Collectors.toList());
}
diff --git a/backend/src/main/java/io/dataease/auth/service/impl/DynamicMenuServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/DynamicMenuServiceImpl.java
index fd2318c068..60f5e4114a 100644
--- a/backend/src/main/java/io/dataease/auth/service/impl/DynamicMenuServiceImpl.java
+++ b/backend/src/main/java/io/dataease/auth/service/impl/DynamicMenuServiceImpl.java
@@ -6,6 +6,9 @@ import io.dataease.auth.service.DynamicMenuService;
import io.dataease.base.domain.SysMenu;
import io.dataease.base.domain.SysMenuExample;
import io.dataease.base.mapper.SysMenuMapper;
+import io.dataease.plugins.common.dto.PluginSysMenu;
+import io.dataease.plugins.util.PluginUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -25,6 +28,12 @@ public class DynamicMenuServiceImpl implements DynamicMenuService {
sysMenuExample.setOrderByClause(" menu_sort ");
List sysMenus = sysMenuMapper.selectByExample(sysMenuExample);
List dynamicMenuDtos = sysMenus.stream().map(this::convert).collect(Collectors.toList());
+ //增加插件中的菜单
+ List pluginSysMenus = PluginUtils.pluginMenus();
+ if (CollectionUtils.isNotEmpty(pluginSysMenus) ) {
+ List pluginDtos = pluginSysMenus.stream().map(this::convert).collect(Collectors.toList());
+ dynamicMenuDtos.addAll(pluginDtos);
+ }
List result = buildTree(dynamicMenuDtos);
return result;
}
@@ -44,6 +53,25 @@ public class DynamicMenuServiceImpl implements DynamicMenuService {
dynamicMenuDto.setMeta(menuMeta);
dynamicMenuDto.setPermission(sysMenu.getPermission());
dynamicMenuDto.setHidden(sysMenu.getHidden());
+ dynamicMenuDto.setIsPlugin(false);
+ return dynamicMenuDto;
+ }
+ private DynamicMenuDto convert(PluginSysMenu sysMenu){
+ DynamicMenuDto dynamicMenuDto = new DynamicMenuDto();
+ dynamicMenuDto.setId(sysMenu.getMenuId());
+ dynamicMenuDto.setPid(sysMenu.getPid());
+ dynamicMenuDto.setName(sysMenu.getName());
+ dynamicMenuDto.setPath(sysMenu.getPath());
+ dynamicMenuDto.setRedirect(null);
+ dynamicMenuDto.setType(sysMenu.getType());
+ dynamicMenuDto.setComponent(sysMenu.getComponent());
+ MenuMeta menuMeta = new MenuMeta();
+ menuMeta.setTitle(sysMenu.getTitle());
+ menuMeta.setIcon(sysMenu.getIcon());
+ dynamicMenuDto.setMeta(menuMeta);
+ dynamicMenuDto.setPermission(sysMenu.getPermission());
+ dynamicMenuDto.setHidden(sysMenu.getHidden());
+ dynamicMenuDto.setIsPlugin(true);
return dynamicMenuDto;
}
diff --git a/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java
index 97df62a17d..8e345c500e 100644
--- a/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java
+++ b/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java
@@ -47,7 +47,7 @@ public class ShiroServiceImpl implements ShiroService {
filterChainDefinitionMap.put("/system/ui/**", ANON);
- filterChainDefinitionMap.put("/PluginDemo.js", ANON);
+ filterChainDefinitionMap.put("/SystemParam.js", ANON);
filterChainDefinitionMap.put("/DeXPack.js", ANON);
filterChainDefinitionMap.put("/api/auth/test", ANON);
diff --git a/backend/src/main/java/io/dataease/base/domain/MyPlugin.java b/backend/src/main/java/io/dataease/base/domain/MyPlugin.java
index 2dd3204176..ec73b4cc75 100644
--- a/backend/src/main/java/io/dataease/base/domain/MyPlugin.java
+++ b/backend/src/main/java/io/dataease/base/domain/MyPlugin.java
@@ -21,6 +21,8 @@ public class MyPlugin implements Serializable {
private String creator;
+ private Boolean loadMybatis;
+
private Long releaseTime;
private Long installTime;
diff --git a/backend/src/main/java/io/dataease/base/domain/MyPluginExample.java b/backend/src/main/java/io/dataease/base/domain/MyPluginExample.java
index c723bbeee0..b7dc903668 100644
--- a/backend/src/main/java/io/dataease/base/domain/MyPluginExample.java
+++ b/backend/src/main/java/io/dataease/base/domain/MyPluginExample.java
@@ -624,6 +624,66 @@ public class MyPluginExample {
return (Criteria) this;
}
+ public Criteria andLoadMybatisIsNull() {
+ addCriterion("load_mybatis is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisIsNotNull() {
+ addCriterion("load_mybatis is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisEqualTo(Boolean value) {
+ addCriterion("load_mybatis =", value, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisNotEqualTo(Boolean value) {
+ addCriterion("load_mybatis <>", value, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisGreaterThan(Boolean value) {
+ addCriterion("load_mybatis >", value, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("load_mybatis >=", value, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisLessThan(Boolean value) {
+ addCriterion("load_mybatis <", value, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisLessThanOrEqualTo(Boolean value) {
+ addCriterion("load_mybatis <=", value, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisIn(List values) {
+ addCriterion("load_mybatis in", values, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisNotIn(List values) {
+ addCriterion("load_mybatis not in", values, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisBetween(Boolean value1, Boolean value2) {
+ addCriterion("load_mybatis between", value1, value2, "loadMybatis");
+ return (Criteria) this;
+ }
+
+ public Criteria andLoadMybatisNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("load_mybatis not between", value1, value2, "loadMybatis");
+ return (Criteria) this;
+ }
+
public Criteria andReleaseTimeIsNull() {
addCriterion("release_time is null");
return (Criteria) this;
diff --git a/backend/src/main/java/io/dataease/base/mapper/MyPluginMapper.xml b/backend/src/main/java/io/dataease/base/mapper/MyPluginMapper.xml
index 7381c8fb44..d5cfca94b2 100644
--- a/backend/src/main/java/io/dataease/base/mapper/MyPluginMapper.xml
+++ b/backend/src/main/java/io/dataease/base/mapper/MyPluginMapper.xml
@@ -10,6 +10,7 @@
+
@@ -75,8 +76,8 @@
- plugin_id, `name`, `free`, cost, descript, version, install_type, creator, release_time,
- install_time, module_name, bean_name, icon
+ plugin_id, `name`, `free`, cost, descript, version, install_type, creator, load_mybatis,
+ release_time, install_time, module_name, bean_name, icon
+
+