Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
9b3767a9
Commit
9b3767a9
authored
Aug 21, 2022
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化多角色数据权限匹配规则
parent
851dc54b
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
203 additions
and
66 deletions
+203
-66
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
...va/com/ruoyi/web/controller/system/SysDeptController.java
+0
-23
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
...va/com/ruoyi/web/controller/system/SysRoleController.java
+21
-2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
...va/com/ruoyi/web/controller/system/SysUserController.java
+15
-0
ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
.../src/main/java/com/ruoyi/common/annotation/DataScope.java
+5
-0
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
...rc/main/java/com/ruoyi/common/constant/UserConstants.java
+5
-0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
...ain/java/com/ruoyi/common/core/domain/entity/SysRole.java
+15
-1
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
...ain/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
+10
-3
ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/PermissionContextHolder.java
...i/framework/security/context/PermissionContextHolder.java
+21
-0
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
...va/com/ruoyi/framework/web/service/PermissionService.java
+2
-0
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java
...com/ruoyi/framework/web/service/SysPermissionService.java
+17
-1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
.../src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+8
-0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
...c/main/java/com/ruoyi/system/service/ISysDeptService.java
+8
-0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
...c/main/java/com/ruoyi/system/service/ISysMenuService.java
+8
-0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+13
-0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+21
-0
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
...system/src/main/resources/mapper/system/SysMenuMapper.xml
+8
-0
ruoyi-ui/src/api/system/dept.js
ruoyi-ui/src/api/system/dept.js
+0
-16
ruoyi-ui/src/api/system/role.js
ruoyi-ui/src/api/system/role.js
+9
-1
ruoyi-ui/src/api/system/user.js
ruoyi-ui/src/api/system/user.js
+8
-0
ruoyi-ui/src/views/system/role/index.vue
ruoyi-ui/src/views/system/role/index.vue
+5
-12
ruoyi-ui/src/views/system/user/index.vue
ruoyi-ui/src/views/system/user/index.vue
+4
-7
No files found.
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
View file @
9b3767a9
...
@@ -78,29 +78,6 @@ public class SysDeptController extends BaseController
...
@@ -78,29 +78,6 @@ public class SysDeptController extends BaseController
return
AjaxResult
.
success
(
deptService
.
selectDeptById
(
deptId
));
return
AjaxResult
.
success
(
deptService
.
selectDeptById
(
deptId
));
}
}
/**
* 获取部门下拉树列表
*/
@GetMapping
(
"/treeselect"
)
public
AjaxResult
treeselect
(
SysDept
dept
)
{
List
<
SysDept
>
depts
=
deptService
.
selectDeptList
(
dept
);
return
AjaxResult
.
success
(
deptService
.
buildDeptTreeSelect
(
depts
));
}
/**
* 加载对应角色部门列表树
*/
@GetMapping
(
value
=
"/roleDeptTreeselect/{roleId}"
)
public
AjaxResult
roleDeptTreeselect
(
@PathVariable
(
"roleId"
)
Long
roleId
)
{
List
<
SysDept
>
depts
=
deptService
.
selectDeptList
(
new
SysDept
());
AjaxResult
ajax
=
AjaxResult
.
success
();
ajax
.
put
(
"checkedKeys"
,
deptService
.
selectDeptListByRoleId
(
roleId
));
ajax
.
put
(
"depts"
,
deptService
.
buildDeptTreeSelect
(
depts
));
return
ajax
;
}
/**
/**
* 新增部门
* 新增部门
*/
*/
...
...
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
View file @
9b3767a9
...
@@ -17,6 +17,7 @@ import com.ruoyi.common.annotation.Log;
...
@@ -17,6 +17,7 @@ import com.ruoyi.common.annotation.Log;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.domain.entity.SysDept
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.model.LoginUser
;
import
com.ruoyi.common.core.domain.model.LoginUser
;
...
@@ -27,6 +28,7 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
...
@@ -27,6 +28,7 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
import
com.ruoyi.framework.web.service.SysPermissionService
;
import
com.ruoyi.framework.web.service.SysPermissionService
;
import
com.ruoyi.framework.web.service.TokenService
;
import
com.ruoyi.framework.web.service.TokenService
;
import
com.ruoyi.system.domain.SysUserRole
;
import
com.ruoyi.system.domain.SysUserRole
;
import
com.ruoyi.system.service.ISysDeptService
;
import
com.ruoyi.system.service.ISysRoleService
;
import
com.ruoyi.system.service.ISysRoleService
;
import
com.ruoyi.system.service.ISysUserService
;
import
com.ruoyi.system.service.ISysUserService
;
...
@@ -44,13 +46,16 @@ public class SysRoleController extends BaseController
...
@@ -44,13 +46,16 @@ public class SysRoleController extends BaseController
@Autowired
@Autowired
private
TokenService
tokenService
;
private
TokenService
tokenService
;
@Autowired
@Autowired
private
SysPermissionService
permissionService
;
private
SysPermissionService
permissionService
;
@Autowired
@Autowired
private
ISysUserService
userService
;
private
ISysUserService
userService
;
@Autowired
private
ISysDeptService
deptService
;
@PreAuthorize
(
"@ss.hasPermi('system:role:list')"
)
@PreAuthorize
(
"@ss.hasPermi('system:role:list')"
)
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
SysRole
role
)
public
TableDataInfo
list
(
SysRole
role
)
...
@@ -242,4 +247,18 @@ public class SysRoleController extends BaseController
...
@@ -242,4 +247,18 @@ public class SysRoleController extends BaseController
roleService
.
checkRoleDataScope
(
roleId
);
roleService
.
checkRoleDataScope
(
roleId
);
return
toAjax
(
roleService
.
insertAuthUsers
(
roleId
,
userIds
));
return
toAjax
(
roleService
.
insertAuthUsers
(
roleId
,
userIds
));
}
}
/**
* 获取对应角色部门树列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:role:list')"
)
@GetMapping
(
value
=
"/deptTree/{roleId}"
)
public
AjaxResult
deptTree
(
@PathVariable
(
"roleId"
)
Long
roleId
)
{
AjaxResult
ajax
=
AjaxResult
.
success
();
ajax
.
put
(
"checkedKeys"
,
deptService
.
selectDeptListByRoleId
(
roleId
));
ajax
.
put
(
"depts"
,
deptService
.
selectDeptTreeList
(
new
SysDept
()));
return
ajax
;
}
}
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
View file @
9b3767a9
...
@@ -20,6 +20,7 @@ import com.ruoyi.common.annotation.Log;
...
@@ -20,6 +20,7 @@ import com.ruoyi.common.annotation.Log;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.domain.entity.SysDept
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.page.TableDataInfo
;
import
com.ruoyi.common.core.page.TableDataInfo
;
...
@@ -27,6 +28,7 @@ import com.ruoyi.common.enums.BusinessType;
...
@@ -27,6 +28,7 @@ import com.ruoyi.common.enums.BusinessType;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.poi.ExcelUtil
;
import
com.ruoyi.common.utils.poi.ExcelUtil
;
import
com.ruoyi.system.service.ISysDeptService
;
import
com.ruoyi.system.service.ISysPostService
;
import
com.ruoyi.system.service.ISysPostService
;
import
com.ruoyi.system.service.ISysRoleService
;
import
com.ruoyi.system.service.ISysRoleService
;
import
com.ruoyi.system.service.ISysUserService
;
import
com.ruoyi.system.service.ISysUserService
;
...
@@ -46,6 +48,9 @@ public class SysUserController extends BaseController
...
@@ -46,6 +48,9 @@ public class SysUserController extends BaseController
@Autowired
@Autowired
private
ISysRoleService
roleService
;
private
ISysRoleService
roleService
;
@Autowired
private
ISysDeptService
deptService
;
@Autowired
@Autowired
private
ISysPostService
postService
;
private
ISysPostService
postService
;
...
@@ -234,4 +239,14 @@ public class SysUserController extends BaseController
...
@@ -234,4 +239,14 @@ public class SysUserController extends BaseController
userService
.
insertUserAuth
(
userId
,
roleIds
);
userService
.
insertUserAuth
(
userId
,
roleIds
);
return
success
();
return
success
();
}
}
/**
* 获取部门树列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:list')"
)
@GetMapping
(
"/deptTree"
)
public
AjaxResult
deptTree
(
SysDept
dept
)
{
return
AjaxResult
.
success
(
deptService
.
selectDeptTreeList
(
dept
));
}
}
}
ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
View file @
9b3767a9
...
@@ -25,4 +25,9 @@ public @interface DataScope
...
@@ -25,4 +25,9 @@ public @interface DataScope
* 用户表的别名
* 用户表的别名
*/
*/
public
String
userAlias
()
default
""
;
public
String
userAlias
()
default
""
;
/**
* 权限字符(如不填默认会自动根据注解获取)
*/
public
String
permission
()
default
""
;
}
}
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
View file @
9b3767a9
...
@@ -12,6 +12,11 @@ public class UserConstants
...
@@ -12,6 +12,11 @@ public class UserConstants
*/
*/
public
static
final
String
SYS_USER
=
"SYS_USER"
;
public
static
final
String
SYS_USER
=
"SYS_USER"
;
/**
* ss标记的权限字符
*/
public
static
final
String
SS_PERMISSION
=
"SS_PERMISSION"
;
/** 正常状态 */
/** 正常状态 */
public
static
final
String
NORMAL
=
"0"
;
public
static
final
String
NORMAL
=
"0"
;
...
...
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
View file @
9b3767a9
package
com.ruoyi.common.core.domain.entity
;
package
com.ruoyi.common.core.domain.entity
;
import
java.util.Set
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
import
javax.validation.constraints.Size
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
...
@@ -59,6 +60,9 @@ public class SysRole extends BaseEntity
...
@@ -59,6 +60,9 @@ public class SysRole extends BaseEntity
/** 部门组(数据权限) */
/** 部门组(数据权限) */
private
Long
[]
deptIds
;
private
Long
[]
deptIds
;
/** 角色菜单权限 */
private
Set
<
String
>
permissions
;
public
SysRole
()
public
SysRole
()
{
{
...
@@ -203,7 +207,17 @@ public class SysRole extends BaseEntity
...
@@ -203,7 +207,17 @@ public class SysRole extends BaseEntity
{
{
this
.
deptIds
=
deptIds
;
this
.
deptIds
=
deptIds
;
}
}
public
Set
<
String
>
getPermissions
()
{
return
permissions
;
}
public
void
setPermissions
(
Set
<
String
>
permissions
)
{
this
.
permissions
=
permissions
;
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
View file @
9b3767a9
...
@@ -11,8 +11,9 @@ import com.ruoyi.common.core.domain.BaseEntity;
...
@@ -11,8 +11,9 @@ import com.ruoyi.common.core.domain.BaseEntity;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.model.LoginUser
;
import
com.ruoyi.common.core.domain.model.LoginUser
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.framework.security.context.PermissionContextHolder
;
/**
/**
* 数据过滤处理
* 数据过滤处理
...
@@ -70,8 +71,9 @@ public class DataScopeAspect
...
@@ -70,8 +71,9 @@ public class DataScopeAspect
// 如果是超级管理员,则不过滤数据
// 如果是超级管理员,则不过滤数据
if
(
StringUtils
.
isNotNull
(
currentUser
)
&&
!
currentUser
.
isAdmin
())
if
(
StringUtils
.
isNotNull
(
currentUser
)
&&
!
currentUser
.
isAdmin
())
{
{
String
permission
=
StringUtils
.
defaultIfEmpty
(
controllerDataScope
.
permission
(),
PermissionContextHolder
.
getContext
());
dataScopeFilter
(
joinPoint
,
currentUser
,
controllerDataScope
.
deptAlias
(),
dataScopeFilter
(
joinPoint
,
currentUser
,
controllerDataScope
.
deptAlias
(),
controllerDataScope
.
userAlias
());
controllerDataScope
.
userAlias
()
,
permission
);
}
}
}
}
}
}
...
@@ -83,8 +85,9 @@ public class DataScopeAspect
...
@@ -83,8 +85,9 @@ public class DataScopeAspect
* @param user 用户
* @param user 用户
* @param deptAlias 部门别名
* @param deptAlias 部门别名
* @param userAlias 用户别名
* @param userAlias 用户别名
* @param permission 权限字符
*/
*/
public
static
void
dataScopeFilter
(
JoinPoint
joinPoint
,
SysUser
user
,
String
deptAlias
,
String
userAlias
)
public
static
void
dataScopeFilter
(
JoinPoint
joinPoint
,
SysUser
user
,
String
deptAlias
,
String
userAlias
,
String
permission
)
{
{
StringBuilder
sqlString
=
new
StringBuilder
();
StringBuilder
sqlString
=
new
StringBuilder
();
List
<
String
>
conditions
=
new
ArrayList
<
String
>();
List
<
String
>
conditions
=
new
ArrayList
<
String
>();
...
@@ -96,6 +99,10 @@ public class DataScopeAspect
...
@@ -96,6 +99,10 @@ public class DataScopeAspect
{
{
continue
;
continue
;
}
}
if
(
StringUtils
.
isNotEmpty
(
permission
)
&&
StringUtils
.
isNotEmpty
(
role
.
getPermissions
())
&&
!
role
.
getPermissions
().
contains
(
permission
))
{
continue
;
}
if
(
DATA_SCOPE_ALL
.
equals
(
dataScope
))
if
(
DATA_SCOPE_ALL
.
equals
(
dataScope
))
{
{
sqlString
=
new
StringBuilder
();
sqlString
=
new
StringBuilder
();
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/PermissionContextHolder.java
0 → 100644
View file @
9b3767a9
package
com.ruoyi.framework.security.context
;
/**
* 权限信息
*
* @author ruoyi
*/
public
class
PermissionContextHolder
{
private
static
final
ThreadLocal
<
String
>
contextHolder
=
new
ThreadLocal
<>();
public
static
void
setContext
(
String
permission
)
{
contextHolder
.
set
(
permission
);
}
public
static
String
getContext
()
{
return
contextHolder
.
get
();
}
}
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
View file @
9b3767a9
...
@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.entity.SysRole;
...
@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.entity.SysRole;
import
com.ruoyi.common.core.domain.model.LoginUser
;
import
com.ruoyi.common.core.domain.model.LoginUser
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.framework.security.context.PermissionContextHolder
;
/**
/**
* RuoYi首创 自定义权限实现,ss取自SpringSecurity首字母
* RuoYi首创 自定义权限实现,ss取自SpringSecurity首字母
...
@@ -43,6 +44,7 @@ public class PermissionService
...
@@ -43,6 +44,7 @@ public class PermissionService
{
{
return
false
;
return
false
;
}
}
PermissionContextHolder
.
setContext
(
permission
);
return
hasPermissions
(
loginUser
.
getPermissions
(),
permission
);
return
hasPermissions
(
loginUser
.
getPermissions
(),
permission
);
}
}
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java
View file @
9b3767a9
package
com.ruoyi.framework.web.service
;
package
com.ruoyi.framework.web.service
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.system.service.ISysMenuService
;
import
com.ruoyi.system.service.ISysMenuService
;
import
com.ruoyi.system.service.ISysRoleService
;
import
com.ruoyi.system.service.ISysRoleService
;
...
@@ -59,7 +61,21 @@ public class SysPermissionService
...
@@ -59,7 +61,21 @@ public class SysPermissionService
}
}
else
else
{
{
perms
.
addAll
(
menuService
.
selectMenuPermsByUserId
(
user
.
getUserId
()));
List
<
SysRole
>
roles
=
user
.
getRoles
();
if
(!
roles
.
isEmpty
()
&&
roles
.
size
()
>
1
)
{
// 多角色设置permissions属性,以便数据权限匹配权限
for
(
SysRole
role
:
roles
)
{
Set
<
String
>
rolePerms
=
menuService
.
selectMenuPermsByRoleId
(
role
.
getRoleId
());
role
.
setPermissions
(
rolePerms
);
perms
.
addAll
(
rolePerms
);
}
}
else
{
perms
.
addAll
(
menuService
.
selectMenuPermsByUserId
(
user
.
getUserId
()));
}
}
}
return
perms
;
return
perms
;
}
}
...
...
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
View file @
9b3767a9
...
@@ -34,6 +34,14 @@ public interface SysMenuMapper
...
@@ -34,6 +34,14 @@ public interface SysMenuMapper
*/
*/
public
List
<
SysMenu
>
selectMenuListByUserId
(
SysMenu
menu
);
public
List
<
SysMenu
>
selectMenuListByUserId
(
SysMenu
menu
);
/**
* 根据角色ID查询权限
*
* @param roleId 角色ID
* @return 权限列表
*/
public
List
<
String
>
selectMenuPermsByRoleId
(
Long
roleId
);
/**
/**
* 根据用户ID查询权限
* 根据用户ID查询权限
*
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
View file @
9b3767a9
...
@@ -19,6 +19,14 @@ public interface ISysDeptService
...
@@ -19,6 +19,14 @@ public interface ISysDeptService
*/
*/
public
List
<
SysDept
>
selectDeptList
(
SysDept
dept
);
public
List
<
SysDept
>
selectDeptList
(
SysDept
dept
);
/**
* 查询部门树结构信息
*
* @param dept 部门信息
* @return 部门树信息集合
*/
public
List
<
TreeSelect
>
selectDeptTreeList
(
SysDept
dept
);
/**
/**
* 构建前端所需要树结构
* 构建前端所需要树结构
*
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
View file @
9b3767a9
...
@@ -38,6 +38,14 @@ public interface ISysMenuService
...
@@ -38,6 +38,14 @@ public interface ISysMenuService
*/
*/
public
Set
<
String
>
selectMenuPermsByUserId
(
Long
userId
);
public
Set
<
String
>
selectMenuPermsByUserId
(
Long
userId
);
/**
* 根据角色ID查询权限
*
* @param roleId 角色ID
* @return 权限列表
*/
public
Set
<
String
>
selectMenuPermsByRoleId
(
Long
roleId
);
/**
/**
* 根据用户ID查询菜单树信息
* 根据用户ID查询菜单树信息
*
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
View file @
9b3767a9
...
@@ -48,6 +48,19 @@ public class SysDeptServiceImpl implements ISysDeptService
...
@@ -48,6 +48,19 @@ public class SysDeptServiceImpl implements ISysDeptService
return
deptMapper
.
selectDeptList
(
dept
);
return
deptMapper
.
selectDeptList
(
dept
);
}
}
/**
* 查询部门树结构信息
*
* @param dept 部门信息
* @return 部门树信息集合
*/
@Override
public
List
<
TreeSelect
>
selectDeptTreeList
(
SysDept
dept
)
{
List
<
SysDept
>
depts
=
SpringUtils
.
getAopProxy
(
this
).
selectDeptList
(
dept
);
return
buildDeptTreeSelect
(
depts
);
}
/**
/**
* 构建前端所需要树结构
* 构建前端所需要树结构
*
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
View file @
9b3767a9
...
@@ -100,6 +100,27 @@ public class SysMenuServiceImpl implements ISysMenuService
...
@@ -100,6 +100,27 @@ public class SysMenuServiceImpl implements ISysMenuService
return
permsSet
;
return
permsSet
;
}
}
/**
* 根据角色ID查询权限
*
* @param roleId 角色ID
* @return 权限列表
*/
@Override
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
))
{
permsSet
.
addAll
(
Arrays
.
asList
(
perm
.
trim
().
split
(
","
)));
}
}
return
permsSet
;
}
/**
/**
* 根据用户ID查询菜单
* 根据用户ID查询菜单
*
*
...
...
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
View file @
9b3767a9
...
@@ -111,6 +111,14 @@
...
@@ -111,6 +111,14 @@
where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
</select>
</select>
<select
id=
"selectMenuPermsByRoleId"
parameterType=
"Long"
resultType=
"String"
>
select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
where m.status = '0' and rm.role_id = #{roleId}
</select>
<select
id=
"selectMenuById"
parameterType=
"Long"
resultMap=
"SysMenuResult"
>
<select
id=
"selectMenuById"
parameterType=
"Long"
resultMap=
"SysMenuResult"
>
<include
refid=
"selectMenuVo"
/>
<include
refid=
"selectMenuVo"
/>
where menu_id = #{menuId}
where menu_id = #{menuId}
...
...
ruoyi-ui/src/api/system/dept.js
View file @
9b3767a9
...
@@ -25,22 +25,6 @@ export function getDept(deptId) {
...
@@ -25,22 +25,6 @@ export function getDept(deptId) {
})
})
}
}
// 查询部门下拉树结构
export
function
treeselect
()
{
return
request
({
url
:
'
/system/dept/treeselect
'
,
method
:
'
get
'
})
}
// 根据角色ID查询部门树结构
export
function
roleDeptTreeselect
(
roleId
)
{
return
request
({
url
:
'
/system/dept/roleDeptTreeselect/
'
+
roleId
,
method
:
'
get
'
})
}
// 新增部门
// 新增部门
export
function
addDept
(
data
)
{
export
function
addDept
(
data
)
{
return
request
({
return
request
({
...
...
ruoyi-ui/src/api/system/role.js
View file @
9b3767a9
...
@@ -108,4 +108,12 @@ export function authUserSelectAll(data) {
...
@@ -108,4 +108,12 @@ export function authUserSelectAll(data) {
method
:
'
put
'
,
method
:
'
put
'
,
params
:
data
params
:
data
})
})
}
}
\ No newline at end of file
// 根据角色ID查询部门树结构
export
function
deptTreeSelect
(
roleId
)
{
return
request
({
url
:
'
/system/role/deptTree/
'
+
roleId
,
method
:
'
get
'
})
}
ruoyi-ui/src/api/system/user.js
View file @
9b3767a9
...
@@ -125,3 +125,11 @@ export function updateAuthRole(data) {
...
@@ -125,3 +125,11 @@ export function updateAuthRole(data) {
params
:
data
params
:
data
})
})
}
}
// 查询部门下拉树结构
export
function
deptTreeSelect
()
{
return
request
({
url
:
'
/system/user/deptTree
'
,
method
:
'
get
'
})
}
ruoyi-ui/src/views/system/role/index.vue
View file @
9b3767a9
...
@@ -254,9 +254,8 @@
...
@@ -254,9 +254,8 @@
</template>
</template>
<
script
>
<
script
>
import
{
listRole
,
getRole
,
delRole
,
addRole
,
updateRole
,
dataScope
,
changeRoleStatus
}
from
"
@/api/system/role
"
;
import
{
listRole
,
getRole
,
delRole
,
addRole
,
updateRole
,
dataScope
,
changeRoleStatus
,
deptTreeSelect
}
from
"
@/api/system/role
"
;
import
{
treeselect
as
menuTreeselect
,
roleMenuTreeselect
}
from
"
@/api/system/menu
"
;
import
{
treeselect
as
menuTreeselect
,
roleMenuTreeselect
}
from
"
@/api/system/menu
"
;
import
{
treeselect
as
deptTreeselect
,
roleDeptTreeselect
}
from
"
@/api/system/dept
"
;
export
default
{
export
default
{
name
:
"
Role
"
,
name
:
"
Role
"
,
...
@@ -364,12 +363,6 @@ export default {
...
@@ -364,12 +363,6 @@ export default {
this
.
menuOptions
=
response
.
data
;
this
.
menuOptions
=
response
.
data
;
});
});
},
},
/** 查询部门树结构 */
getDeptTreeselect
()
{
deptTreeselect
().
then
(
response
=>
{
this
.
deptOptions
=
response
.
data
;
});
},
// 所有菜单节点数据
// 所有菜单节点数据
getMenuAllCheckedKeys
()
{
getMenuAllCheckedKeys
()
{
// 目前被选中的菜单节点
// 目前被选中的菜单节点
...
@@ -396,8 +389,8 @@ export default {
...
@@ -396,8 +389,8 @@ export default {
});
});
},
},
/** 根据角色ID查询部门树结构 */
/** 根据角色ID查询部门树结构 */
get
RoleDeptTreeselect
(
roleId
)
{
get
DeptTree
(
roleId
)
{
return
roleDeptTrees
elect
(
roleId
).
then
(
response
=>
{
return
deptTreeS
elect
(
roleId
).
then
(
response
=>
{
this
.
deptOptions
=
response
.
depts
;
this
.
deptOptions
=
response
.
depts
;
return
response
;
return
response
;
});
});
...
@@ -543,12 +536,12 @@ export default {
...
@@ -543,12 +536,12 @@ export default {
/** 分配数据权限操作 */
/** 分配数据权限操作 */
handleDataScope
(
row
)
{
handleDataScope
(
row
)
{
this
.
reset
();
this
.
reset
();
const
roleDeptTreeselect
=
this
.
getRoleDeptTreeselect
(
row
.
roleId
);
const
deptTreeSelect
=
this
.
getDeptTree
(
row
.
roleId
);
getRole
(
row
.
roleId
).
then
(
response
=>
{
getRole
(
row
.
roleId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
=
response
.
data
;
this
.
openDataScope
=
true
;
this
.
openDataScope
=
true
;
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
roleDeptTrees
elect
.
then
(
res
=>
{
deptTreeS
elect
.
then
(
res
=>
{
this
.
$refs
.
dept
.
setCheckedKeys
(
res
.
checkedKeys
);
this
.
$refs
.
dept
.
setCheckedKeys
(
res
.
checkedKeys
);
});
});
});
});
...
...
ruoyi-ui/src/views/system/user/index.vue
View file @
9b3767a9
...
@@ -342,9 +342,8 @@
...
@@ -342,9 +342,8 @@
</template>
</template>
<
script
>
<
script
>
import
{
listUser
,
getUser
,
delUser
,
addUser
,
updateUser
,
resetUserPwd
,
changeUserStatus
}
from
"
@/api/system/user
"
;
import
{
listUser
,
getUser
,
delUser
,
addUser
,
updateUser
,
resetUserPwd
,
changeUserStatus
,
deptTreeSelect
}
from
"
@/api/system/user
"
;
import
{
getToken
}
from
"
@/utils/auth
"
;
import
{
getToken
}
from
"
@/utils/auth
"
;
import
{
treeselect
}
from
"
@/api/system/dept
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
"
@riophae/vue-treeselect/dist/vue-treeselect.css
"
;
import
"
@riophae/vue-treeselect/dist/vue-treeselect.css
"
;
...
@@ -462,7 +461,7 @@ export default {
...
@@ -462,7 +461,7 @@ export default {
},
},
created
()
{
created
()
{
this
.
getList
();
this
.
getList
();
this
.
get
Treeselect
();
this
.
get
DeptTree
();
this
.
getConfigKey
(
"
sys.user.initPassword
"
).
then
(
response
=>
{
this
.
getConfigKey
(
"
sys.user.initPassword
"
).
then
(
response
=>
{
this
.
initPassword
=
response
.
msg
;
this
.
initPassword
=
response
.
msg
;
});
});
...
@@ -479,8 +478,8 @@ export default {
...
@@ -479,8 +478,8 @@ export default {
);
);
},
},
/** 查询部门下拉树结构 */
/** 查询部门下拉树结构 */
get
Treeselect
()
{
get
DeptTree
()
{
trees
elect
().
then
(
response
=>
{
deptTreeS
elect
().
then
(
response
=>
{
this
.
deptOptions
=
response
.
data
;
this
.
deptOptions
=
response
.
data
;
});
});
},
},
...
@@ -561,7 +560,6 @@ export default {
...
@@ -561,7 +560,6 @@ export default {
/** 新增按钮操作 */
/** 新增按钮操作 */
handleAdd
()
{
handleAdd
()
{
this
.
reset
();
this
.
reset
();
this
.
getTreeselect
();
getUser
().
then
(
response
=>
{
getUser
().
then
(
response
=>
{
this
.
postOptions
=
response
.
posts
;
this
.
postOptions
=
response
.
posts
;
this
.
roleOptions
=
response
.
roles
;
this
.
roleOptions
=
response
.
roles
;
...
@@ -573,7 +571,6 @@ export default {
...
@@ -573,7 +571,6 @@ export default {
/** 修改按钮操作 */
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
this
.
reset
();
this
.
reset
();
this
.
getTreeselect
();
const
userId
=
row
.
userId
||
this
.
ids
;
const
userId
=
row
.
userId
||
this
.
ids
;
getUser
(
userId
).
then
(
response
=>
{
getUser
(
userId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
=
response
.
data
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment