diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/init/IInitMongoData.java b/basic-interface/src/main/java/ink/wgink/interfaces/init/IInitMongoData.java new file mode 100644 index 00000000..42d17e89 --- /dev/null +++ b/basic-interface/src/main/java/ink/wgink/interfaces/init/IInitMongoData.java @@ -0,0 +1,17 @@ +package ink.wgink.interfaces.init; + +/** + * @ClassName: IInitMongoData + * @Description: 初始化mongo数据 + * @Author: wanggeng + * @Date: 2022/5/24 20:57 + * @Version: 1.0 + */ +public interface IInitMongoData { + + /** + * 初始化 mongo 数据 + */ + void init(); + +} diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMenuBaseService.java b/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMenuBaseService.java index 92a12b6b..e433172a 100644 --- a/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMenuBaseService.java +++ b/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMenuBaseService.java @@ -125,4 +125,23 @@ public interface IMenuBaseService { */ List listMenuIdByUser(Map params); + + /** + * 系统菜单列表 + * + * @param systemMenuId 系统菜单 + * @return + */ + List listSystemMenu(String systemMenuId); + + + /** + * 系统菜单列表 + * + * @param systemMenuId 系统菜单ID + * @param selectedMenuIds 选中的菜单ID + * @return + */ + List listSystemMenu(String systemMenuId, List selectedMenuIds); + } diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMongoMenuService.java b/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMongoMenuService.java new file mode 100644 index 00000000..808a65c8 --- /dev/null +++ b/basic-interface/src/main/java/ink/wgink/interfaces/menu/IMongoMenuService.java @@ -0,0 +1,68 @@ +package ink.wgink.interfaces.menu; + +import ink.wgink.pojo.dtos.menu.MenuDTO; + +import java.util.List; + +/** + * @ClassName: IMongoMenuService + * @Description: mongo菜单 + * @Author: wanggeng + * @Date: 2022/5/24 20:54 + * @Version: 1.0 + */ +public interface IMongoMenuService { + + /** + * 更新全部系统菜单 + */ + void updateAllSystemMenu(); + + /** + * 删除 + * + * @param menuIds + */ + void delete(List menuIds); + + /** + * 更新 + * + * @param menuId + */ + void update(String menuId); + + /** + * 详情 + * + * @param menuId + * @return + */ + MenuDTO get(String menuId); + + /** + * 详情 + * + * @param menuCode + * @return + */ + MenuDTO getByCode(String menuCode); + + /** + * 系统子菜单列表 + * + * @param systemMenuId 系统菜单ID + * @return + */ + List listSystemSubMenus(String systemMenuId); + + /** + * 系统子菜单列表 + * + * @param systemMenuId 系统菜单ID + * @param selectedMenuIds 选择的菜单ID + * @return + */ + List listSystemSubMenus(String systemMenuId, List selectedMenuIds); + +} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java index 6a14b529..787c11e4 100644 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; /** @@ -161,7 +162,7 @@ public class MenuDTO implements Serializable { } public List getSubMenus() { - return subMenus; + return subMenus == null ? new ArrayList<>() : subMenus; } public void setSubMenus(List subMenus) { diff --git a/login-base/src/main/java/ink/wgink/login/base/controller/route/IndexRouteController.java b/login-base/src/main/java/ink/wgink/login/base/controller/route/IndexRouteController.java index 1aeab112..7764e473 100644 --- a/login-base/src/main/java/ink/wgink/login/base/controller/route/IndexRouteController.java +++ b/login-base/src/main/java/ink/wgink/login/base/controller/route/IndexRouteController.java @@ -86,9 +86,9 @@ public class IndexRouteController { // 管理员 List menuIds = roleMenuBaseService.listMenuId(ISystemConstant.ADMIN); if (menuIds.isEmpty()) { - menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER); + menus = menuBaseService.listSystemMenu(IMenuBaseService.MENU_UNIFIED_USER); } else { - menus = menuBaseService.listAllByParentIdAndIds(IMenuBaseService.MENU_UNIFIED_USER, menuIds); + menus = menuBaseService.listSystemMenu(IMenuBaseService.MENU_UNIFIED_USER, menuIds); } } else { // 普通用户 @@ -101,7 +101,7 @@ public class IndexRouteController { roleIds.add(roleSimpleDTO.getRoleId()); } List menuIds = roleMenuBaseService.listMenuId(roleIds); - menus = menuBaseService.listAllByParentIdAndIds(IMenuBaseService.MENU_UNIFIED_USER, menuIds); + menus = menuBaseService.listSystemMenu(IMenuBaseService.MENU_UNIFIED_USER, menuIds); } } mv.addObject("menus", menus); diff --git a/login-oauth2-server/src/main/java/ink/wgink/login/oauth2/server/service/impl/OAuth2ClientMenuServiceImpl.java b/login-oauth2-server/src/main/java/ink/wgink/login/oauth2/server/service/impl/OAuth2ClientMenuServiceImpl.java index 527fbfd2..b86a2ada 100644 --- a/login-oauth2-server/src/main/java/ink/wgink/login/oauth2/server/service/impl/OAuth2ClientMenuServiceImpl.java +++ b/login-oauth2-server/src/main/java/ink/wgink/login/oauth2/server/service/impl/OAuth2ClientMenuServiceImpl.java @@ -51,13 +51,13 @@ public class OAuth2ClientMenuServiceImpl extends DefaultBaseService implements I menuIds = roleMenuBaseService.listMenuId(ISystemConstant.ADMIN); // 管理员菜单为空,加载全部 if (menuIds.isEmpty()) { - return menuBaseService.listAllByParentId(oAuth2ClientPO.getMenuId()); + return menuBaseService.listSystemMenu(oAuth2ClientPO.getMenuId()); } } else { // 其他角色菜单 menuIds = roleMenuBaseService.listMenuId(roleIds); } - return menuBaseService.listAllByParentIdAndIds(oAuth2ClientPO.getMenuId(), menuIds); + return menuBaseService.listSystemMenu(oAuth2ClientPO.getMenuId(), menuIds); } } diff --git a/mongo-login/src/main/java/ink/wgink/mongo/login/startup/MongoLoginStartUp.java b/mongo-login/src/main/java/ink/wgink/mongo/login/init/InitMongoLoginUser.java similarity index 56% rename from mongo-login/src/main/java/ink/wgink/mongo/login/startup/MongoLoginStartUp.java rename to mongo-login/src/main/java/ink/wgink/mongo/login/init/InitMongoLoginUser.java index 6713cc23..acd46104 100644 --- a/mongo-login/src/main/java/ink/wgink/mongo/login/startup/MongoLoginStartUp.java +++ b/mongo-login/src/main/java/ink/wgink/mongo/login/init/InitMongoLoginUser.java @@ -1,5 +1,6 @@ -package ink.wgink.mongo.login.startup; +package ink.wgink.mongo.login.init; +import ink.wgink.interfaces.init.IInitMongoData; import ink.wgink.interfaces.user.mongo.IMongoLoginUserService; import ink.wgink.properties.ServerProperties; import ink.wgink.service.user.service.IUserService; @@ -8,24 +9,22 @@ import ink.wgink.util.thread.CachedThreadPoolUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** - * @ClassName: MongoLoginStartUp - * @Description: mongo启动 + * @ClassName: InitLoginUser + * @Description: 初始化登录用户 * @Author: wanggeng - * @Date: 2022/5/19 16:25 + * @Date: 2022/5/24 20:59 * @Version: 1.0 */ @Component -public class MongoLoginStartUp implements ApplicationRunner { +public class InitMongoLoginUser implements IInitMongoData { - private static final Logger LOG = LoggerFactory.getLogger(MongoLoginStartUp.class); + private static final Logger LOG = LoggerFactory.getLogger(InitMongoLoginUser.class); @Autowired private ServerProperties serverProperties; @Autowired @@ -34,24 +33,24 @@ public class MongoLoginStartUp implements ApplicationRunner { private IUserService userService; @Override - public void run(ApplicationArguments args) throws Exception { + public void init() { if (serverProperties.getMasterNode()) { - LOG.debug("master-node: {}" + serverProperties.getMasterNode()); + LOG.debug("MASTER-NODE: {}" + serverProperties.getMasterNode()); CachedThreadPoolUtil.execute(() -> { // 初始化所有账号内容 - System.out.println("**************************"); - System.out.println("** LoginUser Init Start **"); - System.out.println("**************************"); + System.out.println("***************************"); + System.out.println("** LOGIN USER INIT START **"); + System.out.println("***************************"); long startTime = System.currentTimeMillis(); Map params = new HashMap<>(0); userService.listPO(params).forEach(userPO -> { mongoLoginUserService.update(UserUtil.createLoginUser(userPO)); }); long endTime = System.currentTimeMillis(); - System.out.println("**************************"); - System.out.println("** LoginUser Init End **"); - System.out.println("**************************"); - LOG.debug("LoginUser init used time: {}ms", (endTime - startTime) / 1000L); + System.out.println("*************************"); + System.out.println("** LOGIN USER INIT END **"); + System.out.println("*************************"); + LOG.debug("LOGIN USER INIT USED TIME: {}ms", (endTime - startTime) / 1000L); }); } } diff --git a/mongo-menu/pom.xml b/mongo-menu/pom.xml new file mode 100644 index 00000000..af9b8042 --- /dev/null +++ b/mongo-menu/pom.xml @@ -0,0 +1,28 @@ + + + + wg-basic + ink.wgink + 1.0-SNAPSHOT + + 4.0.0 + + mongo-menu + + + + org.springframework.data + spring-data-mongodb + provided + + + ink.wgink + service-menu + 1.0-SNAPSHOT + provided + + + + \ No newline at end of file diff --git a/mongo-menu/src/main/java/ink/wgink/mongo/menu/service/impl/MongoMenuServiceImpl.java b/mongo-menu/src/main/java/ink/wgink/mongo/menu/service/impl/MongoMenuServiceImpl.java new file mode 100644 index 00000000..1d417a5b --- /dev/null +++ b/mongo-menu/src/main/java/ink/wgink/mongo/menu/service/impl/MongoMenuServiceImpl.java @@ -0,0 +1,240 @@ +package ink.wgink.mongo.menu.service.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.exceptions.SearchException; +import ink.wgink.interfaces.menu.IMongoMenuService; +import ink.wgink.module.menu.service.IMenuService; +import ink.wgink.pojo.dtos.menu.MenuDTO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @ClassName: MongoMenuServiceImpl + * @Description: mongo菜单,为了提升首页菜单的加载速度 + * @Author: wanggeng + * @Date: 2022/5/24 20:55 + * @Version: 1.0 + */ +@Service +public class MongoMenuServiceImpl extends DefaultBaseService implements IMongoMenuService { + + private static final String COLLECTION_NAME = "systemMenu"; + @Autowired + private MongoTemplate mongoTemplate; + @Autowired + private IMenuService menuService; + + @Override + public void updateAllSystemMenu() { + // 清空集合 + mongoTemplate.dropCollection(COLLECTION_NAME); + List systemMenus = menuService.listByParentId("0"); + systemMenus.forEach(systemMenu -> { + List subSystemMenus = menuService.listAllByParentId(systemMenu.getMenuId()); + systemMenu.setSubMenus(subSystemMenus); + mongoTemplate.save(systemMenu, COLLECTION_NAME); + }); + } + + @Override + public void delete(List menuIds) { + menuIds = new ArrayList<>(menuIds); + List menuDTOS = mongoTemplate.findAll(MenuDTO.class, COLLECTION_NAME); + for (MenuDTO systemMenu : menuDTOS) { + IsFinished isFinished = new IsFinished(); + removeMenu(systemMenu, menuIds, isFinished); + updateSystemMenu(systemMenu); + } + } + + @Override + public void update(String menuId) { + MenuDTO menuDTO = menuService.get(menuId); + if (menuDTO == null) { + throw new SearchException("菜单更新失败,新增菜单不存在"); + } + // 得到根节点菜单编码 + String systemMenuCode = menuDTO.getMenuCode().substring(0, 4); + MenuDTO systemMenuDTO = getByCode(systemMenuCode); + if (systemMenuDTO == null) { + throw new SearchException("菜单更新失败,系统菜单不存在"); + } + IsFinished isFinished = new IsFinished(); + // 重新获取上级菜单(带子集) + MenuDTO parentMenuDTO = menuService.getAll(menuDTO.getMenuParentId()); + if (parentMenuDTO == null) { + throw new SearchException("菜单更新失败,新增菜单上级菜单不存在"); + } + // 递归找到要更新的节点 + setUpdateMenu(systemMenuDTO, parentMenuDTO, isFinished); + updateSystemMenu(systemMenuDTO); + } + + @Override + public MenuDTO get(String menuId) { + return mongoTemplate.findOne(new Query().addCriteria(Criteria.where("menuId").is(menuId)), MenuDTO.class, COLLECTION_NAME); + } + + @Override + public MenuDTO getByCode(String menuCode) { + return mongoTemplate.findOne(new Query().addCriteria(Criteria.where("menuCode").is(menuCode)), MenuDTO.class, COLLECTION_NAME); + } + + @Override + public List listSystemSubMenus(String systemMenuId) { + MenuDTO menuDTO = get(systemMenuId); + if (menuDTO == null) { + throw new SearchException("系统菜单不存在"); + } + return menuDTO.getSubMenus(); + } + + @Override + public List listSystemSubMenus(String systemMenuId, List selectedMenuIds) { + MenuDTO systemMenuDTO = get(systemMenuId); + if (systemMenuDTO == null) { + throw new SearchException("系统菜单不存在"); + } + IsFinished isFinished = new IsFinished(); + return listSelectedMenu(systemMenuDTO, selectedMenuIds, isFinished); + } + + /** + * 递归获取选中的菜单列表 + * + * @param menu + * @param selectedMenuIds + * @param isFinished + * @return + */ + private List listSelectedMenu(MenuDTO menu, List selectedMenuIds, IsFinished isFinished) { + List selectedMenus = new ArrayList<>(); + for (MenuDTO subMenu : menu.getSubMenus()) { + boolean isSelected = false; + for (int i = 0; i < selectedMenuIds.size(); i++) { + if (StringUtils.equals(subMenu.getMenuId(), selectedMenuIds.get(i))) { + isSelected = true; + i--; + break; + } + } + // 菜单被选中 + if (isSelected) { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(subMenu, menuDTO); + List subSelectedMenus = listSelectedMenu(subMenu, selectedMenuIds, isFinished); + menuDTO.setSubMenus(subSelectedMenus); + selectedMenus.add(subMenu); + } + if (selectedMenuIds.isEmpty()) { + isFinished.setFinished(true); + } + if (isFinished.getFinished()) { + return selectedMenus; + } + } + return selectedMenus; + } + + /** + * 删除系统菜单 + * + * @param menuIds + */ + public void deleteSystemMenu(List menuIds) { + mongoTemplate.remove(new Query().addCriteria(Criteria.where("menuId").in(menuIds)), COLLECTION_NAME); + } + + /** + * 移除菜单 + * + * @param menuDTO + * @param removeMenuIds + * @param isFinished + */ + private void removeMenu(MenuDTO menuDTO, List removeMenuIds, IsFinished isFinished) { + List subMenus = menuDTO.getSubMenus(); + for (int i = 0; i < subMenus.size(); i++) { + MenuDTO subMenu = subMenus.get(i); + boolean isRemove = false; + for (int j = 0; j < removeMenuIds.size(); j++) { + if (StringUtils.equals(subMenu.getMenuId(), removeMenuIds.get(j))) { + // 存在 + subMenus.remove(i); + removeMenuIds.remove(j); + j--; + isRemove = true; + break; + } + } + if (removeMenuIds.isEmpty()) { + isFinished.setFinished(true); + return; + } + if (isFinished.getFinished()) { + return; + } + if (!isRemove) { + removeMenu(subMenu, removeMenuIds, isFinished); + } + } + } + + /** + * 更新系统菜单 + * + * @param systemMenuDTO + */ + private void updateSystemMenu(MenuDTO systemMenuDTO) { + // 删除原有 + deleteSystemMenu(Arrays.asList(systemMenuDTO.getMenuId())); + mongoTemplate.save(systemMenuDTO, COLLECTION_NAME); + } + + /** + * 更新菜单 + * + * @param parentMenu + * @param updateMenu + * @param isFinished + */ + private void setUpdateMenu(MenuDTO parentMenu, MenuDTO updateMenu, IsFinished isFinished) { + if (StringUtils.equals(parentMenu.getMenuId(), updateMenu.getMenuId())) { + BeanUtils.copyProperties(updateMenu, parentMenu); + isFinished.setFinished(true); + return; + } + List subMenus = parentMenu.getSubMenus(); + for (MenuDTO subMenu : subMenus) { + setUpdateMenu(subMenu, updateMenu, isFinished); + if (isFinished.getFinished()) { + return; + } + } + } + + /** + * 是否完成 + */ + private class IsFinished { + private Boolean isFinished = false; + + public Boolean getFinished() { + return isFinished; + } + + public void setFinished(Boolean finished) { + isFinished = finished; + } + } + +} diff --git a/mongo-menu/src/main/java/ink/wgink/mongo/menu/service/init/InitMongoMenu.java b/mongo-menu/src/main/java/ink/wgink/mongo/menu/service/init/InitMongoMenu.java new file mode 100644 index 00000000..7be7b4b6 --- /dev/null +++ b/mongo-menu/src/main/java/ink/wgink/mongo/menu/service/init/InitMongoMenu.java @@ -0,0 +1,49 @@ +package ink.wgink.mongo.menu.service.init; + +import ink.wgink.interfaces.init.IInitMongoData; +import ink.wgink.interfaces.menu.IMongoMenuService; +import ink.wgink.properties.ServerProperties; +import ink.wgink.util.thread.CachedThreadPoolUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @ClassName: InitMongoMenu + * @Description: 初始化mongo菜单 + * @Author: wanggeng + * @Date: 2022/5/24 21:14 + * @Version: 1.0 + */ +@Component +public class InitMongoMenu implements IInitMongoData { + + private static final Logger LOG = LoggerFactory.getLogger(InitMongoMenu.class); + + @Autowired + private IMongoMenuService mongoMenuService; + @Autowired + private ServerProperties serverProperties; + + @Override + public void init() { + if (serverProperties.getMasterNode()) { + LOG.debug("MASTER-NODE: {}" + serverProperties.getMasterNode()); + CachedThreadPoolUtil.execute(() -> { + // 初始化所有账号内容 + System.out.println("****************************"); + System.out.println("** SYSTEM MENU INIT START **"); + System.out.println("****************************"); + long startTime = System.currentTimeMillis(); + mongoMenuService.updateAllSystemMenu(); + long endTime = System.currentTimeMillis(); + System.out.println("***************************"); + System.out.println("** SYSTEM MENU INIT END **"); + System.out.println("***************************"); + LOG.debug("SYSTEM MENU INIT USED TIME: {}ms", (endTime - startTime) / 1000L); + }); + } + } + +} diff --git a/service-menu/src/main/java/ink/wgink/module/menu/service/IMenuService.java b/service-menu/src/main/java/ink/wgink/module/menu/service/IMenuService.java index 71e5b03c..61a9b40b 100644 --- a/service-menu/src/main/java/ink/wgink/module/menu/service/IMenuService.java +++ b/service-menu/src/main/java/ink/wgink/module/menu/service/IMenuService.java @@ -2,6 +2,7 @@ package ink.wgink.module.menu.service; import ink.wgink.interfaces.menu.IMenuBaseService; import ink.wgink.module.menu.pojo.vos.MenuVO; +import ink.wgink.pojo.dtos.menu.MenuDTO; import java.util.List; @@ -80,4 +81,18 @@ public interface IMenuService extends IMenuBaseService { */ void remove(String token, List ids); + /** + * 详情 + * + * @param menuId + * @return + */ + MenuDTO get(String menuId); + + /** + * 详情(带子集) + * @param menuId + * @return + */ + MenuDTO getAll(String menuId); } diff --git a/service-menu/src/main/java/ink/wgink/module/menu/service/impl/MenuServiceImpl.java b/service-menu/src/main/java/ink/wgink/module/menu/service/impl/MenuServiceImpl.java index 26a88474..d68e5f5f 100644 --- a/service-menu/src/main/java/ink/wgink/module/menu/service/impl/MenuServiceImpl.java +++ b/service-menu/src/main/java/ink/wgink/module/menu/service/impl/MenuServiceImpl.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import ink.wgink.common.base.DefaultBaseService; import ink.wgink.exceptions.SearchException; import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.interfaces.menu.IMongoMenuService; import ink.wgink.module.menu.dao.IMenuDao; import ink.wgink.module.menu.pojo.vos.MenuVO; import ink.wgink.module.menu.service.IMenuService; @@ -34,6 +35,8 @@ public class MenuServiceImpl extends DefaultBaseService implements IMenuService @Autowired private IMenuDao menuDao; + @Autowired(required = false) + private IMongoMenuService mongoMenuService; @Override public String saveAndReturnIdByParentIdAndNameAndUrl(String menuParentId, String menuName, String menuUrl) { @@ -159,6 +162,9 @@ public class MenuServiceImpl extends DefaultBaseService implements IMenuService setAppSaveInfo(token, params); } menuDao.save(params); + if (mongoMenuService != null) { + mongoMenuService.update(menuId); + } return menuId; } @@ -177,6 +183,30 @@ public class MenuServiceImpl extends DefaultBaseService implements IMenuService setAppUpdateInfo(token, params); } menuDao.remove(params); + if (mongoMenuService != null) { + mongoMenuService.delete(ids); + } + } + + @Override + public MenuDTO get(String menuId) { + Map params = getHashMap(2); + params.put("menuId", menuId); + return get(params); + } + + @Override + public MenuDTO getAll(String menuId) { + MenuDTO menuDTO = get(menuId); + if (menuDTO == null) { + return null; + } + List menuDTOs = listAllByParentId(menuId); + menuDTO.setSubMenus(menuDTOs); + if (!menuDTOs.isEmpty()) { + menuDTO.setParent(true); + } + return menuDTO; } @Override @@ -194,6 +224,9 @@ public class MenuServiceImpl extends DefaultBaseService implements IMenuService setAppUpdateInfo(token, params); } menuDao.update(params); + if (mongoMenuService != null) { + mongoMenuService.update(menuId); + } } @Override @@ -201,6 +234,22 @@ public class MenuServiceImpl extends DefaultBaseService implements IMenuService return menuDao.listIdByUser(params); } + @Override + public List listSystemMenu(String systemMenuId) { + if (mongoMenuService != null) { + return mongoMenuService.listSystemSubMenus(systemMenuId); + } + return listAllByParentId(systemMenuId); + } + + @Override + public List listSystemMenu(String systemMenuId, List selectedMenuIds) { + if (mongoMenuService != null) { + return mongoMenuService.listSystemSubMenus(systemMenuId, selectedMenuIds); + } + return listAllByParentIdAndIds(systemMenuId, selectedMenuIds); + } + /** * 递归查询子菜单 *