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 + +