|
@@ -575,6 +575,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|
|
@Override
|
|
|
public Map<String, Object> listMenus(Long roleId, Long menuId) {
|
|
|
SysMenu menu = selectMenuById(menuId);
|
|
|
+ requireNonNull(menu, "当前菜单不存在,id = " + menuId);
|
|
|
List<SysMenu> allMenu = menuMapper.selectMenuList(new SysMenu());
|
|
|
List<SysMenu> tempList = Lists.newArrayListWithCapacity(16);
|
|
|
recursionList(allMenu, menu, tempList);
|
|
@@ -594,14 +595,15 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|
|
// 找到当前menuId对应的所有的叶子结点
|
|
|
List<SysMenu> leafNodes = allLeafNodeById(menuId);
|
|
|
List<Long> menuIdList = map(leafNodes, SysMenu::getId);
|
|
|
+ List<String> allBtnList = RoleEnum.roles();
|
|
|
List<SysRoleMenu> roleMenuList = roleMenuService.listByRoleIdMenuIdList(roleId, menuIdList);
|
|
|
if (isEmpty(roleMenuList)) {
|
|
|
- result.put("sysMenus", tempList);
|
|
|
+ initWhenRoleMenuIsEmpty(menuId, menu);
|
|
|
+ result.put("sysMenus", Collections.singletonList(menu));
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
List<Long> roleMenuIdList = map(roleMenuList, SysRoleMenu::getMenuId);
|
|
|
- List<String> allBtnList = RoleEnum.roles();
|
|
|
|
|
|
for (SysMenu sysMenu : tempList) {
|
|
|
List<Map<String, Object>> containsHead = RoleEnum.initData();
|
|
@@ -612,7 +614,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|
|
|
|
|
List<String> btnList = getBtnFromMenu(roleMenuIdList, childList);
|
|
|
|
|
|
- String tableName = RoleMenuDto.getTableNameFromPerms(childList.get(0).getPerms());
|
|
|
+ String tableName = childList.get(0).getSysTableName();
|
|
|
GenTable genTable = redisService.getCacheObject(RedisKey.TABLE_INFO + tableName);
|
|
|
if (isEmpty(genTable)) {
|
|
|
continue;
|
|
@@ -643,6 +645,17 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private void initWhenRoleMenuIsEmpty(Long menuId, SysMenu menu) {
|
|
|
+ String menuTableName = menu.getSysTableName();
|
|
|
+ GenTable menuGenTable = redisService.getCacheObject(RedisKey.TABLE_INFO + menuTableName);
|
|
|
+ if (isEmpty(menuGenTable)) {
|
|
|
+ requireNonNull(menuGenTable, "当前菜单对应的表不存在,menuId = " + menuId + ", tableName = " + menuTableName);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> menuRoleList = ArrayUtils.split(menuGenTable.getMenuRole(), "");
|
|
|
+ menu.setContainsHead(RoleEnum.initDataByBtnList(menuRoleList));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 功能描述: roleMenuIdList包含childList中的id的全部取出来
|
|
|
*
|