Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
ruoyi-bs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
过峰
ruoyi-bs
Commits
08d79cf5
提交
08d79cf5
authored
12月 13, 2024
作者:
陈柏江
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
路由信息返回格式修改(新)
上级
1a560350
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
499 行增加
和
196 行删除
+499
-196
SysLoginController.java
...a/com/ruoyi/web/controller/system/SysLoginController.java
+1
-1
MetaNewVo.java
...m/src/main/java/com/ruoyi/system/domain/vo/MetaNewVo.java
+203
-0
RouterNewVo.java
...src/main/java/com/ruoyi/system/domain/vo/RouterNewVo.java
+91
-0
SysMenuMapper.java
.../src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+9
-7
SysRoleMapper.java
.../src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+18
-16
SysRoleMenuMapper.java
.../main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+10
-8
ISysMenuService.java
...c/main/java/com/ruoyi/system/service/ISysMenuService.java
+9
-0
SysMenuServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+158
-164
没有找到文件。
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
浏览文件 @
08d79cf5
...
...
@@ -143,7 +143,7 @@ public class SysLoginController {
Long
userId
=
SecurityUtils
.
getUserId
();
List
<
SysMenu
>
menus
=
menuService
.
selectMenuTreeByUserId
(
userId
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"list"
,
menuService
.
buildMenus
(
menus
));
map
.
put
(
"list"
,
menuService
.
buildMenus
New
(
menus
));
return
AjaxResult
.
success
(
map
);
}
}
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaNewVo.java
0 → 100644
浏览文件 @
08d79cf5
package
com
.
ruoyi
.
system
.
domain
.
vo
;
/**
* 路由显示信息
*
* @author ruoyi
*/
public
class
MetaNewVo
{
/**
* 是否显示在菜单中显示隐藏路由(默认值:false)
*/
private
boolean
hidden
;
/**
* 是否显示在菜单中显示隐藏一级路由(默认值:false)
*/
private
boolean
levelHidden
;
/**
* 菜单、面包屑、多标签页显示的名称
*/
private
String
title
;
/**
* 新版图标
*/
private
String
icon
;
/**
* 是否是自定义svg图标(默认值:false,如果设置true,那么需要把你的svg拷贝到icon下,然后icon字段配置上你的图标名)
*/
private
boolean
isCustomSvg
;
/**
* 当前路由是否不缓存(默认值:false)
*/
private
boolean
noKeepAlive
;
/**
* 当前路由是否可关闭多标签页,同上(2021年10月后新版支持)
*/
private
boolean
noClosable
;
/**
* 是否隐藏分栏,仅在分栏布局中二级路由生效(默认值:false,不推荐使用)
*/
private
boolean
noColumn
;
/**
* badge小标签(只支持子级,String类型,支持自定义)
*/
private
String
badge
;
/**
* 当前路由是否不显示多标签页(默认值:false,不推荐使用)
*/
private
boolean
tabHidden
;
/**
* 是否浏览新标签页打开(不适用于分栏布局左侧tab部分,不推荐使用)
*/
private
String
target
;
/**
* 高亮指定菜单,要从跟路由的path开始拼接(用于隐藏页高亮)
*/
private
String
activeMenu
;
/**
* 小圆点(默认值:false)
*/
private
boolean
dot
;
/**
* 动态传参路由是否新开标签页(默认值:false)
*/
private
boolean
dynamicNewTab
;
/**
* 面包屑是否显示(默认值:false)
*/
private
boolean
breadcrumbHidden
;
public
boolean
isHidden
()
{
return
hidden
;
}
public
void
setHidden
(
boolean
hidden
)
{
this
.
hidden
=
hidden
;
}
public
boolean
isLevelHidden
()
{
return
levelHidden
;
}
public
void
setLevelHidden
(
boolean
levelHidden
)
{
this
.
levelHidden
=
levelHidden
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getIcon
()
{
return
icon
;
}
public
void
setIcon
(
String
icon
)
{
this
.
icon
=
icon
;
}
public
boolean
isCustomSvg
()
{
return
isCustomSvg
;
}
public
void
setCustomSvg
(
boolean
customSvg
)
{
isCustomSvg
=
customSvg
;
}
public
boolean
isNoKeepAlive
()
{
return
noKeepAlive
;
}
public
void
setNoKeepAlive
(
boolean
noKeepAlive
)
{
this
.
noKeepAlive
=
noKeepAlive
;
}
public
boolean
isNoClosable
()
{
return
noClosable
;
}
public
void
setNoClosable
(
boolean
noClosable
)
{
this
.
noClosable
=
noClosable
;
}
public
boolean
isNoColumn
()
{
return
noColumn
;
}
public
void
setNoColumn
(
boolean
noColumn
)
{
this
.
noColumn
=
noColumn
;
}
public
String
getBadge
()
{
return
badge
;
}
public
void
setBadge
(
String
badge
)
{
this
.
badge
=
badge
;
}
public
boolean
isTabHidden
()
{
return
tabHidden
;
}
public
void
setTabHidden
(
boolean
tabHidden
)
{
this
.
tabHidden
=
tabHidden
;
}
public
String
getTarget
()
{
return
target
;
}
public
void
setTarget
(
String
target
)
{
this
.
target
=
target
;
}
public
String
getActiveMenu
()
{
return
activeMenu
;
}
public
void
setActiveMenu
(
String
activeMenu
)
{
this
.
activeMenu
=
activeMenu
;
}
public
boolean
isDot
()
{
return
dot
;
}
public
void
setDot
(
boolean
dot
)
{
this
.
dot
=
dot
;
}
public
boolean
isDynamicNewTab
()
{
return
dynamicNewTab
;
}
public
void
setDynamicNewTab
(
boolean
dynamicNewTab
)
{
this
.
dynamicNewTab
=
dynamicNewTab
;
}
public
boolean
isBreadcrumbHidden
()
{
return
breadcrumbHidden
;
}
public
void
setBreadcrumbHidden
(
boolean
breadcrumbHidden
)
{
this
.
breadcrumbHidden
=
breadcrumbHidden
;
}
}
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterNewVo.java
0 → 100644
浏览文件 @
08d79cf5
package
com
.
ruoyi
.
system
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
java.util.List
;
/**
* 路由配置信息
*
* @author ruoyi
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_EMPTY
)
public
class
RouterNewVo
{
/**
* 路由名字
*/
private
String
name
;
/**
* 路由地址
*/
private
String
path
;
/**
* 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
*/
private
String
redirect
;
/**
* 组件地址
*/
private
String
component
;
/**
* 其他元素
*/
private
MetaNewVo
meta
;
/**
* 子路由
*/
private
List
<
RouterNewVo
>
children
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getPath
()
{
return
path
;
}
public
void
setPath
(
String
path
)
{
this
.
path
=
path
;
}
public
String
getRedirect
()
{
return
redirect
;
}
public
void
setRedirect
(
String
redirect
)
{
this
.
redirect
=
redirect
;
}
public
String
getComponent
()
{
return
component
;
}
public
void
setComponent
(
String
component
)
{
this
.
component
=
component
;
}
public
MetaNewVo
getMeta
()
{
return
meta
;
}
public
void
setMeta
(
MetaNewVo
meta
)
{
this
.
meta
=
meta
;
}
public
List
<
RouterNewVo
>
getChildren
()
{
return
children
;
}
public
void
setChildren
(
List
<
RouterNewVo
>
children
)
{
this
.
children
=
children
;
}
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
浏览文件 @
08d79cf5
package
com
.
ruoyi
.
system
.
mapper
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
com.ruoyi.common.core.domain.entity.SysMenu
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 菜单表 数据层
*
* @author ruoyi
*/
public
interface
SysMenu
Mapper
{
@
Mapper
public
interface
SysMenuMapper
{
/**
* 查询系统菜单列表
*
...
...
@@ -36,7 +38,7 @@ public interface SysMenuMapper
/**
* 根据角色ID查询权限
*
*
* @param roleId 角色ID
* @return 权限列表
*/
...
...
@@ -67,8 +69,8 @@ public interface SysMenuMapper
/**
* 根据角色ID查询菜单树信息
*
* @param roleId 角色ID
*
* @param roleId
角色ID
* @param menuCheckStrictly 菜单树选择项是否关联显示
* @return 选中菜单列表
*/
...
...
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
浏览文件 @
08d79cf5
package
com
.
ruoyi
.
system
.
mapper
;
import
java.util.List
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 角色表 数据层
*
*
* @author ruoyi
*/
public
interface
SysRole
Mapper
{
@
Mapper
public
interface
SysRoleMapper
{
/**
* 根据条件分页查询角色数据
*
*
* @param role 角色信息
* @return 角色数据集合信息
*/
...
...
@@ -20,7 +22,7 @@ public interface SysRoleMapper
/**
* 根据用户ID查询角色
*
*
* @param userId 用户ID
* @return 角色列表
*/
...
...
@@ -28,14 +30,14 @@ public interface SysRoleMapper
/**
* 查询所有角色
*
*
* @return 角色列表
*/
public
List
<
SysRole
>
selectRoleAll
();
/**
* 根据用户ID获取角色选择框列表
*
*
* @param userId 用户ID
* @return 选中角色ID列表
*/
...
...
@@ -43,7 +45,7 @@ public interface SysRoleMapper
/**
* 通过角色ID查询角色
*
*
* @param roleId 角色ID
* @return 角色对象信息
*/
...
...
@@ -51,7 +53,7 @@ public interface SysRoleMapper
/**
* 根据用户ID查询角色
*
*
* @param userName 用户名
* @return 角色列表
*/
...
...
@@ -59,7 +61,7 @@ public interface SysRoleMapper
/**
* 校验角色名称是否唯一
*
*
* @param roleName 角色名称
* @return 角色信息
*/
...
...
@@ -67,7 +69,7 @@ public interface SysRoleMapper
/**
* 校验角色权限是否唯一
*
*
* @param roleKey 角色权限
* @return 角色信息
*/
...
...
@@ -75,7 +77,7 @@ public interface SysRoleMapper
/**
* 修改角色信息
*
*
* @param role 角色信息
* @return 结果
*/
...
...
@@ -83,7 +85,7 @@ public interface SysRoleMapper
/**
* 新增角色信息
*
*
* @param role 角色信息
* @return 结果
*/
...
...
@@ -91,7 +93,7 @@ public interface SysRoleMapper
/**
* 通过角色ID删除角色
*
*
* @param roleId 角色ID
* @return 结果
*/
...
...
@@ -99,7 +101,7 @@ public interface SysRoleMapper
/**
* 批量删除角色信息
*
*
* @param roleIds 需要删除的角色ID
* @return 结果
*/
...
...
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
浏览文件 @
08d79cf5
package
com
.
ruoyi
.
system
.
mapper
;
import
java.util.List
;
import
com.ruoyi.system.domain.SysRoleMenu
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 角色与菜单关联表 数据层
*
*
* @author ruoyi
*/
public
interface
SysRoleMenu
Mapper
{
@
Mapper
public
interface
SysRoleMenuMapper
{
/**
* 查询菜单使用数量
*
*
* @param menuId 菜单ID
* @return 结果
*/
...
...
@@ -20,7 +22,7 @@ public interface SysRoleMenuMapper
/**
* 通过角色ID删除角色和菜单关联
*
*
* @param roleId 角色ID
* @return 结果
*/
...
...
@@ -28,7 +30,7 @@ public interface SysRoleMenuMapper
/**
* 批量删除角色菜单关联信息
*
*
* @param ids 需要删除的数据ID
* @return 结果
*/
...
...
@@ -36,7 +38,7 @@ public interface SysRoleMenuMapper
/**
* 批量新增角色菜单信息
*
*
* @param roleMenuList 角色菜单列表
* @return 结果
*/
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
浏览文件 @
08d79cf5
...
...
@@ -4,6 +4,7 @@ import java.util.List;
import
java.util.Set
;
import
com.ruoyi.common.core.domain.TreeSelect
;
import
com.ruoyi.common.core.domain.entity.SysMenu
;
import
com.ruoyi.system.domain.vo.RouterNewVo
;
import
com.ruoyi.system.domain.vo.RouterVo
;
/**
...
...
@@ -71,6 +72,14 @@ public interface ISysMenuService
public
List
<
RouterVo
>
buildMenus
(
List
<
SysMenu
>
menus
);
/**
* 构建前端路由所需要的菜单
*
* @param menus 菜单列表
* @return 路由列表
*/
public
List
<
RouterNewVo
>
buildMenusNew
(
List
<
SysMenu
>
menus
);
/**
* 构建前端所需要树结构
*
* @param menus 菜单列表
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
浏览文件 @
08d79cf5
package
com
.
ruoyi
.
system
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.core.domain.TreeSelect
;
...
...
@@ -18,21 +8,27 @@ import com.ruoyi.common.core.domain.entity.SysRole;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.system.domain.vo.MetaNewVo
;
import
com.ruoyi.system.domain.vo.MetaVo
;
import
com.ruoyi.system.domain.vo.RouterNewVo
;
import
com.ruoyi.system.domain.vo.RouterVo
;
import
com.ruoyi.system.mapper.SysMenuMapper
;
import
com.ruoyi.system.mapper.SysRoleMapper
;
import
com.ruoyi.system.mapper.SysRoleMenuMapper
;
import
com.ruoyi.system.service.ISysMenuService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 菜单 业务层处理
*
*
* @author ruoyi
*/
@Service
public
class
SysMenuServiceImpl
implements
ISysMenuService
{
public
class
SysMenuServiceImpl
implements
ISysMenuService
{
public
static
final
String
PREMISSION_STRING
=
"perms[\"{0}\"]"
;
@Autowired
...
...
@@ -46,33 +42,28 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 根据用户查询系统菜单列表
*
*
* @param userId 用户ID
* @return 菜单列表
*/
@Override
public
List
<
SysMenu
>
selectMenuList
(
Long
userId
)
{
public
List
<
SysMenu
>
selectMenuList
(
Long
userId
)
{
return
selectMenuList
(
new
SysMenu
(),
userId
);
}
/**
* 查询系统菜单列表
*
*
* @param menu 菜单信息
* @return 菜单列表
*/
@Override
public
List
<
SysMenu
>
selectMenuList
(
SysMenu
menu
,
Long
userId
)
{
public
List
<
SysMenu
>
selectMenuList
(
SysMenu
menu
,
Long
userId
)
{
List
<
SysMenu
>
menuList
=
null
;
// 管理员显示所有菜单信息
if
(
SysUser
.
isAdmin
(
userId
))
{
if
(
SysUser
.
isAdmin
(
userId
))
{
menuList
=
menuMapper
.
selectMenuList
(
menu
);
}
else
{
}
else
{
menu
.
getParams
().
put
(
"userId"
,
userId
);
menuList
=
menuMapper
.
selectMenuListByUserId
(
menu
);
}
...
...
@@ -81,19 +72,16 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 根据用户ID查询权限
*
*
* @param userId 用户ID
* @return 权限列表
*/
@Override
public
Set
<
String
>
selectMenuPermsByUserId
(
Long
userId
)
{
public
Set
<
String
>
selectMenuPermsByUserId
(
Long
userId
)
{
List
<
String
>
perms
=
menuMapper
.
selectMenuPermsByUserId
(
userId
);
Set
<
String
>
permsSet
=
new
HashSet
<>();
for
(
String
perm
:
perms
)
{
if
(
StringUtils
.
isNotEmpty
(
perm
))
{
for
(
String
perm
:
perms
)
{
if
(
StringUtils
.
isNotEmpty
(
perm
))
{
permsSet
.
addAll
(
Arrays
.
asList
(
perm
.
trim
().
split
(
","
)));
}
}
...
...
@@ -102,19 +90,16 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 根据角色ID查询权限
*
*
* @param roleId 角色ID
* @return 权限列表
*/
@Override
public
Set
<
String
>
selectMenuPermsByRoleId
(
Long
roleId
)
{
public
Set
<
String
>
selectMenuPermsByRoleId
(
Long
roleId
)
{
List
<
String
>
perms
=
menuMapper
.
selectMenuPermsByRoleId
(
roleId
);
Set
<
String
>
permsSet
=
new
HashSet
<>();
for
(
String
perm
:
perms
)
{
if
(
StringUtils
.
isNotEmpty
(
perm
))
{
for
(
String
perm
:
perms
)
{
if
(
StringUtils
.
isNotEmpty
(
perm
))
{
permsSet
.
addAll
(
Arrays
.
asList
(
perm
.
trim
().
split
(
","
)));
}
}
...
...
@@ -123,20 +108,16 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 根据用户ID查询菜单
*
*
* @param userId 用户名称
* @return 菜单列表
*/
@Override
public
List
<
SysMenu
>
selectMenuTreeByUserId
(
Long
userId
)
{
public
List
<
SysMenu
>
selectMenuTreeByUserId
(
Long
userId
)
{
List
<
SysMenu
>
menus
=
null
;
if
(
SecurityUtils
.
isAdmin
(
userId
))
{
if
(
SecurityUtils
.
isAdmin
(
userId
))
{
menus
=
menuMapper
.
selectMenuTreeAll
();
}
else
{
}
else
{
menus
=
menuMapper
.
selectMenuTreeByUserId
(
userId
);
}
return
getChildPerms
(
menus
,
0
);
...
...
@@ -144,29 +125,26 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 根据角色ID查询菜单树信息
*
*
* @param roleId 角色ID
* @return 选中菜单列表
*/
@Override
public
List
<
Long
>
selectMenuListByRoleId
(
Long
roleId
)
{
public
List
<
Long
>
selectMenuListByRoleId
(
Long
roleId
)
{
SysRole
role
=
roleMapper
.
selectRoleById
(
roleId
);
return
menuMapper
.
selectMenuListByRoleId
(
roleId
,
role
.
isMenuCheckStrictly
());
}
/**
* 构建前端路由所需要的菜单
*
*
* @param menus 菜单列表
* @return 路由列表
*/
@Override
public
List
<
RouterVo
>
buildMenus
(
List
<
SysMenu
>
menus
)
{
public
List
<
RouterVo
>
buildMenus
(
List
<
SysMenu
>
menus
)
{
List
<
RouterVo
>
routers
=
new
LinkedList
<
RouterVo
>();
for
(
SysMenu
menu
:
menus
)
{
for
(
SysMenu
menu
:
menus
)
{
RouterVo
router
=
new
RouterVo
();
router
.
setHidden
(
"1"
.
equals
(
menu
.
getVisible
()));
router
.
setName
(
getRouteName
(
menu
));
...
...
@@ -175,14 +153,11 @@ public class SysMenuServiceImpl implements ISysMenuService
router
.
setQuery
(
menu
.
getQuery
());
router
.
setMeta
(
new
MetaVo
(
menu
.
getMenuName
(),
menu
.
getIcon
(),
StringUtils
.
equals
(
"1"
,
menu
.
getIsCache
()),
menu
.
getPath
()));
List
<
SysMenu
>
cMenus
=
menu
.
getChildren
();
if
(
StringUtils
.
isNotEmpty
(
cMenus
)
&&
UserConstants
.
TYPE_DIR
.
equals
(
menu
.
getMenuType
()))
{
if
(
StringUtils
.
isNotEmpty
(
cMenus
)
&&
UserConstants
.
TYPE_DIR
.
equals
(
menu
.
getMenuType
()))
{
router
.
setAlwaysShow
(
true
);
router
.
setRedirect
(
"noRedirect"
);
router
.
setChildren
(
buildMenus
(
cMenus
));
}
else
if
(
isMenuFrame
(
menu
))
{
}
else
if
(
isMenuFrame
(
menu
))
{
router
.
setMeta
(
null
);
List
<
RouterVo
>
childrenList
=
new
ArrayList
<
RouterVo
>();
RouterVo
children
=
new
RouterVo
();
...
...
@@ -193,9 +168,7 @@ public class SysMenuServiceImpl implements ISysMenuService
children
.
setQuery
(
menu
.
getQuery
());
childrenList
.
add
(
children
);
router
.
setChildren
(
childrenList
);
}
else
if
(
menu
.
getParentId
().
intValue
()
==
0
&&
isInnerLink
(
menu
))
{
}
else
if
(
menu
.
getParentId
().
intValue
()
==
0
&&
isInnerLink
(
menu
))
{
router
.
setMeta
(
new
MetaVo
(
menu
.
getMenuName
(),
menu
.
getIcon
()));
router
.
setPath
(
"/"
);
List
<
RouterVo
>
childrenList
=
new
ArrayList
<
RouterVo
>();
...
...
@@ -214,28 +187,85 @@ public class SysMenuServiceImpl implements ISysMenuService
}
/**
* 构建前端路由所需要的菜单
*
* @param menus 菜单列表
* @return 路由列表
*/
@Override
public
List
<
RouterNewVo
>
buildMenusNew
(
List
<
SysMenu
>
menus
)
{
List
<
RouterNewVo
>
routers
=
new
LinkedList
<
RouterNewVo
>();
MetaNewVo
meta
=
new
MetaNewVo
();
for
(
SysMenu
menu
:
menus
)
{
RouterNewVo
router
=
new
RouterNewVo
();
router
.
setName
(
getRouteName
(
menu
));
router
.
setPath
(
getRouterPath
(
menu
));
router
.
setComponent
(
getComponent
(
menu
));
meta
=
new
MetaNewVo
();
meta
.
setIcon
(
menu
.
getIcon
());
meta
.
setNoKeepAlive
(
StringUtils
.
equals
(
"1"
,
menu
.
getIsCache
()));
router
.
setMeta
(
meta
);
List
<
SysMenu
>
cMenus
=
menu
.
getChildren
();
if
(
StringUtils
.
isNotEmpty
(
cMenus
)
&&
UserConstants
.
TYPE_DIR
.
equals
(
menu
.
getMenuType
()))
{
router
.
setRedirect
(
"noRedirect"
);
router
.
setChildren
(
buildMenusNew
(
cMenus
));
}
else
if
(
isMenuFrame
(
menu
))
{
router
.
setMeta
(
null
);
List
<
RouterNewVo
>
childrenList
=
new
ArrayList
<
RouterNewVo
>();
RouterNewVo
children
=
new
RouterNewVo
();
children
.
setPath
(
menu
.
getPath
());
children
.
setComponent
(
menu
.
getComponent
());
children
.
setName
(
getRouteName
(
menu
.
getRouteName
(),
menu
.
getPath
()));
meta
=
new
MetaNewVo
();
meta
.
setIcon
(
menu
.
getIcon
());
meta
.
setNoKeepAlive
(
StringUtils
.
equals
(
"1"
,
menu
.
getIsCache
()));
children
.
setMeta
(
meta
);
childrenList
.
add
(
children
);
router
.
setChildren
(
childrenList
);
}
else
if
(
menu
.
getParentId
().
intValue
()
==
0
&&
isInnerLink
(
menu
))
{
meta
=
new
MetaNewVo
();
meta
.
setIcon
(
menu
.
getIcon
());
meta
.
setNoKeepAlive
(
StringUtils
.
equals
(
"1"
,
menu
.
getIsCache
()));
router
.
setMeta
(
meta
);
router
.
setPath
(
"/"
);
List
<
RouterNewVo
>
childrenList
=
new
ArrayList
<
RouterNewVo
>();
RouterNewVo
children
=
new
RouterNewVo
();
String
routerPath
=
innerLinkReplaceEach
(
menu
.
getPath
());
children
.
setPath
(
routerPath
);
children
.
setComponent
(
UserConstants
.
INNER_LINK
);
children
.
setName
(
getRouteName
(
menu
.
getRouteName
(),
routerPath
));
meta
=
new
MetaNewVo
();
meta
.
setIcon
(
menu
.
getIcon
());
meta
.
setNoKeepAlive
(
StringUtils
.
equals
(
"1"
,
menu
.
getIsCache
()));
children
.
setMeta
(
meta
);
childrenList
.
add
(
children
);
router
.
setChildren
(
childrenList
);
}
routers
.
add
(
router
);
}
return
routers
;
}
/**
* 构建前端所需要树结构
*
*
* @param menus 菜单列表
* @return 树结构列表
*/
@Override
public
List
<
SysMenu
>
buildMenuTree
(
List
<
SysMenu
>
menus
)
{
public
List
<
SysMenu
>
buildMenuTree
(
List
<
SysMenu
>
menus
)
{
List
<
SysMenu
>
returnList
=
new
ArrayList
<
SysMenu
>();
List
<
Long
>
tempList
=
menus
.
stream
().
map
(
SysMenu:
:
getMenuId
).
collect
(
Collectors
.
toList
());
for
(
Iterator
<
SysMenu
>
iterator
=
menus
.
iterator
();
iterator
.
hasNext
();)
{
for
(
Iterator
<
SysMenu
>
iterator
=
menus
.
iterator
();
iterator
.
hasNext
();
)
{
SysMenu
menu
=
(
SysMenu
)
iterator
.
next
();
// 如果是顶级节点, 遍历该父节点的所有子节点
if
(!
tempList
.
contains
(
menu
.
getParentId
()))
{
if
(!
tempList
.
contains
(
menu
.
getParentId
()))
{
recursionFn
(
menus
,
menu
);
returnList
.
add
(
menu
);
}
}
if
(
returnList
.
isEmpty
())
{
if
(
returnList
.
isEmpty
())
{
returnList
=
menus
;
}
return
returnList
;
...
...
@@ -243,104 +273,95 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 构建前端所需要下拉树结构
*
*
* @param menus 菜单列表
* @return 下拉树结构列表
*/
@Override
public
List
<
TreeSelect
>
buildMenuTreeSelect
(
List
<
SysMenu
>
menus
)
{
public
List
<
TreeSelect
>
buildMenuTreeSelect
(
List
<
SysMenu
>
menus
)
{
List
<
SysMenu
>
menuTrees
=
buildMenuTree
(
menus
);
return
menuTrees
.
stream
().
map
(
TreeSelect:
:
new
).
collect
(
Collectors
.
toList
());
}
/**
* 根据菜单ID查询信息
*
*
* @param menuId 菜单ID
* @return 菜单信息
*/
@Override
public
SysMenu
selectMenuById
(
Long
menuId
)
{
public
SysMenu
selectMenuById
(
Long
menuId
)
{
return
menuMapper
.
selectMenuById
(
menuId
);
}
/**
* 是否存在菜单子节点
*
*
* @param menuId 菜单ID
* @return 结果
*/
@Override
public
boolean
hasChildByMenuId
(
Long
menuId
)
{
public
boolean
hasChildByMenuId
(
Long
menuId
)
{
int
result
=
menuMapper
.
hasChildByMenuId
(
menuId
);
return
result
>
0
;
}
/**
* 查询菜单使用数量
*
*
* @param menuId 菜单ID
* @return 结果
*/
@Override
public
boolean
checkMenuExistRole
(
Long
menuId
)
{
public
boolean
checkMenuExistRole
(
Long
menuId
)
{
int
result
=
roleMenuMapper
.
checkMenuExistRole
(
menuId
);
return
result
>
0
;
}
/**
* 新增保存菜单信息
*
*
* @param menu 菜单信息
* @return 结果
*/
@Override
public
int
insertMenu
(
SysMenu
menu
)
{
public
int
insertMenu
(
SysMenu
menu
)
{
return
menuMapper
.
insertMenu
(
menu
);
}
/**
* 修改保存菜单信息
*
*
* @param menu 菜单信息
* @return 结果
*/
@Override
public
int
updateMenu
(
SysMenu
menu
)
{
public
int
updateMenu
(
SysMenu
menu
)
{
return
menuMapper
.
updateMenu
(
menu
);
}
/**
* 删除菜单管理信息
*
*
* @param menuId 菜单ID
* @return 结果
*/
@Override
public
int
deleteMenuById
(
Long
menuId
)
{
public
int
deleteMenuById
(
Long
menuId
)
{
return
menuMapper
.
deleteMenuById
(
menuId
);
}
/**
* 校验菜单名称是否唯一
*
*
* @param menu 菜单信息
* @return 结果
*/
@Override
public
boolean
checkMenuNameUnique
(
SysMenu
menu
)
{
public
boolean
checkMenuNameUnique
(
SysMenu
menu
)
{
Long
menuId
=
StringUtils
.
isNull
(
menu
.
getMenuId
())
?
-
1L
:
menu
.
getMenuId
();
SysMenu
info
=
menuMapper
.
checkMenuNameUnique
(
menu
.
getMenuName
(),
menu
.
getParentId
());
if
(
StringUtils
.
isNotNull
(
info
)
&&
info
.
getMenuId
().
longValue
()
!=
menuId
.
longValue
())
{
if
(
StringUtils
.
isNotNull
(
info
)
&&
info
.
getMenuId
().
longValue
()
!=
menuId
.
longValue
())
{
return
UserConstants
.
NOT_UNIQUE
;
}
return
UserConstants
.
UNIQUE
;
...
...
@@ -348,15 +369,13 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 获取路由名称
*
*
* @param menu 菜单信息
* @return 路由名称
*/
public
String
getRouteName
(
SysMenu
menu
)
{
public
String
getRouteName
(
SysMenu
menu
)
{
// 非外链并且是一级目录(类型为目录)
if
(
isMenuFrame
(
menu
))
{
if
(
isMenuFrame
(
menu
))
{
return
StringUtils
.
EMPTY
;
}
return
getRouteName
(
menu
.
getRouteName
(),
menu
.
getPath
());
...
...
@@ -364,40 +383,35 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 获取路由名称,如没有配置路由名称则取路由地址
*
*
* @param routerName 路由名称
* @param path 路由地址
* @param path
路由地址
* @return 路由名称(驼峰格式)
*/
public
String
getRouteName
(
String
name
,
String
path
)
{
public
String
getRouteName
(
String
name
,
String
path
)
{
String
routerName
=
StringUtils
.
isNotEmpty
(
name
)
?
name
:
path
;
return
StringUtils
.
capitalize
(
routerName
);
}
/**
* 获取路由地址
*
*
* @param menu 菜单信息
* @return 路由地址
*/
public
String
getRouterPath
(
SysMenu
menu
)
{
public
String
getRouterPath
(
SysMenu
menu
)
{
String
routerPath
=
menu
.
getPath
();
// 内链打开外网方式
if
(
menu
.
getParentId
().
intValue
()
!=
0
&&
isInnerLink
(
menu
))
{
if
(
menu
.
getParentId
().
intValue
()
!=
0
&&
isInnerLink
(
menu
))
{
routerPath
=
innerLinkReplaceEach
(
routerPath
);
}
// 非外链并且是一级目录(类型为目录)
if
(
0
==
menu
.
getParentId
().
intValue
()
&&
UserConstants
.
TYPE_DIR
.
equals
(
menu
.
getMenuType
())
&&
UserConstants
.
NO_FRAME
.
equals
(
menu
.
getIsFrame
()))
{
&&
UserConstants
.
NO_FRAME
.
equals
(
menu
.
getIsFrame
()))
{
routerPath
=
"/"
+
menu
.
getPath
();
}
// 非外链并且是一级目录(类型为菜单)
else
if
(
isMenuFrame
(
menu
))
{
else
if
(
isMenuFrame
(
menu
))
{
routerPath
=
"/"
;
}
return
routerPath
;
...
...
@@ -405,23 +419,17 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 获取组件信息
*
*
* @param menu 菜单信息
* @return 组件信息
*/
public
String
getComponent
(
SysMenu
menu
)
{
public
String
getComponent
(
SysMenu
menu
)
{
String
component
=
UserConstants
.
LAYOUT
;
if
(
StringUtils
.
isNotEmpty
(
menu
.
getComponent
())
&&
!
isMenuFrame
(
menu
))
{
if
(
StringUtils
.
isNotEmpty
(
menu
.
getComponent
())
&&
!
isMenuFrame
(
menu
))
{
component
=
menu
.
getComponent
();
}
else
if
(
StringUtils
.
isEmpty
(
menu
.
getComponent
())
&&
menu
.
getParentId
().
intValue
()
!=
0
&&
isInnerLink
(
menu
))
{
}
else
if
(
StringUtils
.
isEmpty
(
menu
.
getComponent
())
&&
menu
.
getParentId
().
intValue
()
!=
0
&&
isInnerLink
(
menu
))
{
component
=
UserConstants
.
INNER_LINK
;
}
else
if
(
StringUtils
.
isEmpty
(
menu
.
getComponent
())
&&
isParentView
(
menu
))
{
}
else
if
(
StringUtils
.
isEmpty
(
menu
.
getComponent
())
&&
isParentView
(
menu
))
{
component
=
UserConstants
.
PARENT_VIEW
;
}
return
component
;
...
...
@@ -429,54 +437,48 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 是否为菜单内部跳转
*
*
* @param menu 菜单信息
* @return 结果
*/
public
boolean
isMenuFrame
(
SysMenu
menu
)
{
public
boolean
isMenuFrame
(
SysMenu
menu
)
{
return
menu
.
getParentId
().
intValue
()
==
0
&&
UserConstants
.
TYPE_MENU
.
equals
(
menu
.
getMenuType
())
&&
menu
.
getIsFrame
().
equals
(
UserConstants
.
NO_FRAME
);
}
/**
* 是否为内链组件
*
*
* @param menu 菜单信息
* @return 结果
*/
public
boolean
isInnerLink
(
SysMenu
menu
)
{
public
boolean
isInnerLink
(
SysMenu
menu
)
{
return
menu
.
getIsFrame
().
equals
(
UserConstants
.
NO_FRAME
)
&&
StringUtils
.
ishttp
(
menu
.
getPath
());
}
/**
* 是否为parent_view组件
*
*
* @param menu 菜单信息
* @return 结果
*/
public
boolean
isParentView
(
SysMenu
menu
)
{
public
boolean
isParentView
(
SysMenu
menu
)
{
return
menu
.
getParentId
().
intValue
()
!=
0
&&
UserConstants
.
TYPE_DIR
.
equals
(
menu
.
getMenuType
());
}
/**
* 根据父节点的ID获取所有子节点
*
* @param list 分类表
*
* @param list
分类表
* @param parentId 传入的父节点ID
* @return String
*/
public
List
<
SysMenu
>
getChildPerms
(
List
<
SysMenu
>
list
,
int
parentId
)
{
public
List
<
SysMenu
>
getChildPerms
(
List
<
SysMenu
>
list
,
int
parentId
)
{
List
<
SysMenu
>
returnList
=
new
ArrayList
<
SysMenu
>();
for
(
Iterator
<
SysMenu
>
iterator
=
list
.
iterator
();
iterator
.
hasNext
();)
{
for
(
Iterator
<
SysMenu
>
iterator
=
list
.
iterator
();
iterator
.
hasNext
();
)
{
SysMenu
t
=
(
SysMenu
)
iterator
.
next
();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if
(
t
.
getParentId
()
==
parentId
)
{
if
(
t
.
getParentId
()
==
parentId
)
{
recursionFn
(
list
,
t
);
returnList
.
add
(
t
);
}
...
...
@@ -486,19 +488,16 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 递归列表
*
*
* @param list 分类表
* @param t 子节点
* @param t
子节点
*/
private
void
recursionFn
(
List
<
SysMenu
>
list
,
SysMenu
t
)
{
private
void
recursionFn
(
List
<
SysMenu
>
list
,
SysMenu
t
)
{
// 得到子节点列表
List
<
SysMenu
>
childList
=
getChildList
(
list
,
t
);
t
.
setChildren
(
childList
);
for
(
SysMenu
tChild
:
childList
)
{
if
(
hasChild
(
list
,
tChild
))
{
for
(
SysMenu
tChild
:
childList
)
{
if
(
hasChild
(
list
,
tChild
))
{
recursionFn
(
list
,
tChild
);
}
}
...
...
@@ -507,15 +506,12 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 得到子节点列表
*/
private
List
<
SysMenu
>
getChildList
(
List
<
SysMenu
>
list
,
SysMenu
t
)
{
private
List
<
SysMenu
>
getChildList
(
List
<
SysMenu
>
list
,
SysMenu
t
)
{
List
<
SysMenu
>
tlist
=
new
ArrayList
<
SysMenu
>();
Iterator
<
SysMenu
>
it
=
list
.
iterator
();
while
(
it
.
hasNext
())
{
while
(
it
.
hasNext
())
{
SysMenu
n
=
(
SysMenu
)
it
.
next
();
if
(
n
.
getParentId
().
longValue
()
==
t
.
getMenuId
().
longValue
())
{
if
(
n
.
getParentId
().
longValue
()
==
t
.
getMenuId
().
longValue
())
{
tlist
.
add
(
n
);
}
}
...
...
@@ -525,19 +521,17 @@ public class SysMenuServiceImpl implements ISysMenuService
/**
* 判断是否有子节点
*/
private
boolean
hasChild
(
List
<
SysMenu
>
list
,
SysMenu
t
)
{
private
boolean
hasChild
(
List
<
SysMenu
>
list
,
SysMenu
t
)
{
return
getChildList
(
list
,
t
).
size
()
>
0
;
}
/**
* 内链域名特殊字符替换
*
*
* @return 替换后的内链域名
*/
public
String
innerLinkReplaceEach
(
String
path
)
{
return
StringUtils
.
replaceEach
(
path
,
new
String
[]
{
Constants
.
HTTP
,
Constants
.
HTTPS
,
Constants
.
WWW
,
"."
,
":"
},
new
String
[]
{
""
,
""
,
""
,
"/"
,
"/"
});
public
String
innerLinkReplaceEach
(
String
path
)
{
return
StringUtils
.
replaceEach
(
path
,
new
String
[]{
Constants
.
HTTP
,
Constants
.
HTTPS
,
Constants
.
WWW
,
"."
,
":"
},
new
String
[]{
""
,
""
,
""
,
"/"
,
"/"
});
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论