Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来开源组织
youlai-mall
提交
7fa442bf
Y
youlai-mall
项目概览
有来开源组织
/
youlai-mall
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-mall
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7fa442bf
编写于
10月 07, 2022
作者:
H
horizons
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: 菜单权限重构
上级
eaef2f3b
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
232 addition
and
144 deletion
+232
-144
youlai-common/common-mybatis/pom.xml
youlai-common/common-mybatis/pom.xml
+6
-0
youlai-common/common-mybatis/src/main/java/com/youlai/common/mybatis/handler/MyDataPermissionHandler.java
...oulai/common/mybatis/handler/MyDataPermissionHandler.java
+4
-3
youlai-common/common-security/pom.xml
youlai-common/common-security/pom.xml
+0
-2
youlai-common/common-security/src/main/java/com/youlai/common/security/dto/UserAuthDTO.java
...main/java/com/youlai/common/security/dto/UserAuthDTO.java
+3
-2
youlai-common/common-security/src/main/java/com/youlai/common/security/util/SecurityUtils.java
...n/java/com/youlai/common/security/util/SecurityUtils.java
+11
-0
youlai-common/common-web/src/main/java/com/youlai/common/web/config/WebMvcConfig.java
.../main/java/com/youlai/common/web/config/WebMvcConfig.java
+22
-8
youlai-common/common-web/src/main/java/com/youlai/common/web/exception/GlobalExceptionHandler.java
...m/youlai/common/web/exception/GlobalExceptionHandler.java
+1
-0
youlai-system/system-boot/src/main/java/com/youlai/system/controller/SysMenuController.java
.../java/com/youlai/system/controller/SysMenuController.java
+6
-11
youlai-system/system-boot/src/main/java/com/youlai/system/controller/SysRoleController.java
.../java/com/youlai/system/controller/SysRoleController.java
+7
-7
youlai-system/system-boot/src/main/java/com/youlai/system/converter/MenuConverter.java
.../main/java/com/youlai/system/converter/MenuConverter.java
+9
-0
youlai-system/system-boot/src/main/java/com/youlai/system/mapper/SysRoleMapper.java
...src/main/java/com/youlai/system/mapper/SysRoleMapper.java
+10
-0
youlai-system/system-boot/src/main/java/com/youlai/system/mapper/SysRoleMenuMapper.java
...main/java/com/youlai/system/mapper/SysRoleMenuMapper.java
+2
-1
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/entity/SysMenu.java
.../src/main/java/com/youlai/system/pojo/entity/SysMenu.java
+5
-0
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/entity/SysRole.java
.../src/main/java/com/youlai/system/pojo/entity/SysRole.java
+9
-12
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/po/UserPO.java
...-boot/src/main/java/com/youlai/system/pojo/po/UserPO.java
+2
-2
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/query/RolePageQuery.java
...main/java/com/youlai/system/pojo/query/RolePageQuery.java
+6
-1
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java
.../src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java
+6
-2
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/menu/ResourceVO.java
.../main/java/com/youlai/system/pojo/vo/menu/ResourceVO.java
+5
-5
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/role/RolePageVO.java
.../main/java/com/youlai/system/pojo/vo/role/RolePageVO.java
+15
-0
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/user/UserVO.java
.../src/main/java/com/youlai/system/pojo/vo/user/UserVO.java
+3
-2
youlai-system/system-boot/src/main/java/com/youlai/system/service/SysRoleMenuService.java
...in/java/com/youlai/system/service/SysRoleMenuService.java
+2
-1
youlai-system/system-boot/src/main/java/com/youlai/system/service/SysRoleService.java
...c/main/java/com/youlai/system/service/SysRoleService.java
+4
-4
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java
...va/com/youlai/system/service/impl/SysMenuServiceImpl.java
+13
-25
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysRoleMenuServiceImpl.java
...om/youlai/system/service/impl/SysRoleMenuServiceImpl.java
+3
-2
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
...va/com/youlai/system/service/impl/SysRoleServiceImpl.java
+18
-42
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
...va/com/youlai/system/service/impl/SysUserServiceImpl.java
+6
-8
youlai-system/system-boot/src/main/resources/mapper/SysRoleMapper.xml
...m/system-boot/src/main/resources/mapper/SysRoleMapper.xml
+39
-0
youlai-system/system-boot/src/main/resources/mapper/SysRoleMenuMapper.xml
...stem-boot/src/main/resources/mapper/SysRoleMenuMapper.xml
+14
-3
youlai-system/system-boot/src/main/resources/mapper/SysUserMapper.xml
...m/system-boot/src/main/resources/mapper/SysUserMapper.xml
+1
-1
未找到文件。
youlai-common/common-mybatis/pom.xml
浏览文件 @
7fa442bf
...
...
@@ -42,5 +42,11 @@
<artifactId>
common-web
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
com.youlai
</groupId>
<artifactId>
common-security
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
</project>
youlai-common/common-mybatis/src/main/java/com/youlai/common/mybatis/handler/MyDataPermissionHandler.java
浏览文件 @
7fa442bf
...
...
@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import
com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler
;
import
com.youlai.common.constant.GlobalConstants
;
import
com.youlai.common.mybatis.annotation.DataPermission
;
import
com.youlai.common.security.util.SecurityUtils
;
import
com.youlai.common.web.util.JwtUtils
;
import
com.youlai.common.web.util.UserUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
net.sf.jsqlparser.expression.*
;
import
net.sf.jsqlparser.expression.operators.conditional.AndExpression
;
...
...
@@ -18,6 +18,7 @@ import net.sf.jsqlparser.schema.Column;
import
java.lang.reflect.Method
;
import
java.util.List
;
import
java.util.Set
;
/**
* 部门数据权限
...
...
@@ -39,7 +40,7 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
DataPermission
annotation
=
method
.
getAnnotation
(
DataPermission
.
class
);
if
(
ObjectUtils
.
isNotEmpty
(
annotation
)
&&
(
method
.
getName
().
equals
(
methodName
)
||
(
method
.
getName
()
+
"_COUNT"
).
equals
(
methodName
)))
{
// 获取当前的用户角色
List
<
String
>
roles
=
User
Utils
.
getRoles
();
Set
<
String
>
roles
=
Security
Utils
.
getRoles
();
if
(!
roles
.
isEmpty
()
&&
roles
.
contains
(
GlobalConstants
.
ROOT_ROLE_CODE
))
{
// 如果是超级管理员则放行
return
where
;
...
...
@@ -82,7 +83,7 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
* @return
*/
private
static
Expression
getDeptId
()
{
LongValue
deptId
=
new
LongValue
(
JwtUtils
.
getJwtPayload
().
getLong
(
"deptId"
));
LongValue
deptId
=
new
LongValue
(
SecurityUtils
.
getDeptId
(
));
return
deptId
;
}
...
...
youlai-common/common-security/pom.xml
浏览文件 @
7fa442bf
...
...
@@ -34,8 +34,6 @@
<artifactId>
spring-security-oauth2-autoconfigure
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
youlai-common/common-security/src/main/java/com/youlai/common/security/dto/UserAuthDTO.java
浏览文件 @
7fa442bf
...
...
@@ -3,6 +3,7 @@ package com.youlai.common.security.dto;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Set
;
/**
* OAuth2 认证用户信息
...
...
@@ -36,7 +37,7 @@ public class UserAuthDTO {
/**
* 用户角色编码集合 ["ROOT","ADMIN"]
*/
private
Lis
t
<
String
>
roles
;
private
Se
t
<
String
>
roles
;
/**
* 部门ID
...
...
@@ -46,6 +47,6 @@ public class UserAuthDTO {
/**
* 用户权限标识集合["sys:user:add"]
*/
private
Lis
t
<
String
>
perms
;
private
Se
t
<
String
>
perms
;
}
youlai-common/common-security/src/main/java/com/youlai/common/security/util/SecurityUtils.java
浏览文件 @
7fa442bf
...
...
@@ -7,6 +7,7 @@ import org.springframework.security.core.GrantedAuthority;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
...
...
@@ -47,4 +48,14 @@ public class SecurityUtils {
return
roles
;
}
/**
* 是否超级管理员
*
* @return
*/
public
static
boolean
isRoot
(){
Set
<
String
>
roles
=
getRoles
();
return
CollectionUtil
.
isNotEmpty
(
roles
)
&&
roles
.
contains
(
"ROOT"
);
}
}
youlai-common/common-web/src/main/java/com/youlai/common/web/config/WebMvcConfig.java
浏览文件 @
7fa442bf
...
...
@@ -4,6 +4,9 @@ import com.fasterxml.jackson.core.JsonParser;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.module.SimpleModule
;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
;
import
com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer
;
import
lombok.extern.slf4j.Slf4j
;
import
org.hibernate.validator.HibernateValidator
;
import
org.springframework.beans.factory.config.AutowireCapableBeanFactory
;
...
...
@@ -19,6 +22,8 @@ import javax.validation.Validator;
import
javax.validation.ValidatorFactory
;
import
java.math.BigInteger
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.List
;
import
java.util.TimeZone
;
...
...
@@ -27,20 +32,29 @@ import java.util.TimeZone;
public
class
WebMvcConfig
implements
WebMvcConfigurer
{
@Override
public
void
configureMessageConverters
(
List
<
HttpMessageConverter
<?>>
converters
)
{
MappingJackson2HttpMessageConverter
jackson2HttpMessageConverter
=
new
MappingJackson2HttpMessageConverter
();
ObjectMapper
objectMapper
=
jackson2HttpMessageConverter
.
getObjectMapper
();
MappingJackson2HttpMessageConverter
converter
=
new
MappingJackson2HttpMessageConverter
();
ObjectMapper
objectMapper
=
converter
.
getObjectMapper
();
// 日期、时区配置
objectMapper
.
setDateFormat
(
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
));
objectMapper
.
setTimeZone
(
TimeZone
.
getTimeZone
(
"GMT+8"
));
objectMapper
.
configure
(
JsonParser
.
Feature
.
ALLOW_UNQUOTED_FIELD_NAMES
,
true
);
// 后台Long值传递给前端精度丢失问题(JS最大精度整数是Math.pow(2,53))
// 基础模块配置
SimpleModule
simpleModule
=
new
SimpleModule
();
simpleModule
.
addSerializer
(
Long
.
class
,
ToStringSerializer
.
instance
);
simpleModule
.
addSerializer
(
BigInteger
.
class
,
ToStringSerializer
.
instance
);
simpleModule
.
addSerializer
(
Long
.
class
,
ToStringSerializer
.
instance
);
// 后台Long值传递给前端精度丢失问题(JS最大精度整数是Math.pow(2,53))
simpleModule
.
addSerializer
(
BigInteger
.
class
,
ToStringSerializer
.
instance
);
// 后台Long值传递给前端精度丢失问题(JS最大精度整数是Math.pow(2,53))
objectMapper
.
registerModule
(
simpleModule
);
jackson2HttpMessageConverter
.
setObjectMapper
(
objectMapper
);
converters
.
add
(
0
,
jackson2HttpMessageConverter
);
// LocalDateTime
JavaTimeModule
timeModule
=
new
JavaTimeModule
();
DateTimeFormatter
dateTimeFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
timeModule
.
addSerializer
(
LocalDateTime
.
class
,
new
LocalDateTimeSerializer
(
dateTimeFormatter
));
timeModule
.
addDeserializer
(
LocalDateTime
.
class
,
new
LocalDateTimeDeserializer
(
dateTimeFormatter
));
objectMapper
.
registerModules
(
timeModule
);
// 重新加入jackson转换器
converter
.
setObjectMapper
(
objectMapper
);
converters
.
add
(
0
,
converter
);
}
@Bean
...
...
youlai-common/common-web/src/main/java/com/youlai/common/web/exception/GlobalExceptionHandler.java
浏览文件 @
7fa442bf
...
...
@@ -196,6 +196,7 @@ public class GlobalExceptionHandler {
@ResponseStatus
(
HttpStatus
.
BAD_REQUEST
)
@ExceptionHandler
(
Exception
.
class
)
public
<
T
>
Result
<
T
>
handleException
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
());
return
Result
.
failed
(
e
.
getLocalizedMessage
());
}
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/controller/SysMenuController.java
浏览文件 @
7fa442bf
...
...
@@ -31,14 +31,6 @@ import java.util.List;
public
class
SysMenuController
{
private
final
SysMenuService
menuService
;
private
final
SysPermissionService
permissionService
;
@ApiOperation
(
value
=
"资源(菜单+权限)列表"
)
@GetMapping
(
"/resources"
)
public
Result
<
List
<
ResourceVO
>>
listResources
()
{
List
<
ResourceVO
>
resources
=
menuService
.
listResources
();
return
Result
.
success
(
resources
);
}
@ApiOperation
(
value
=
"菜单列表"
)
@GetMapping
...
...
@@ -97,9 +89,6 @@ public class SysMenuController {
@ApiParam
(
"菜单ID,多个以英文(,)分割"
)
@PathVariable
(
"ids"
)
String
ids
)
{
boolean
result
=
menuService
.
removeByIds
(
Arrays
.
asList
(
ids
.
split
(
","
)));
if
(
result
)
{
permissionService
.
refreshPermRolesRules
();
}
return
Result
.
judge
(
result
);
}
...
...
@@ -114,6 +103,12 @@ public class SysMenuController {
return
Result
.
judge
(
result
);
}
@ApiOperation
(
value
=
"资源列表"
)
@GetMapping
(
"/resources"
)
public
Result
<
List
<
ResourceVO
>>
listResources
()
{
List
<
ResourceVO
>
resources
=
menuService
.
listResources
();
return
Result
.
success
(
resources
);
}
}
youlai-system/system-boot/src/main/java/com/youlai/system/controller/SysRoleController.java
浏览文件 @
7fa442bf
...
...
@@ -77,28 +77,28 @@ public class SysRoleController {
@PutMapping
(
value
=
"/{roleId}/status"
)
public
Result
updateRoleStatus
(
@ApiParam
(
"角色ID"
)
@PathVariable
Long
roleId
,
@ApiParam
(
"角色状态
:1-正常;0-禁用
"
)
@RequestParam
Integer
status
@ApiParam
(
"角色状态
(1:正常;0:禁用)
"
)
@RequestParam
Integer
status
)
{
boolean
result
=
sysRoleService
.
updateRoleStatus
(
roleId
,
status
);
return
Result
.
judge
(
result
);
}
@ApiOperation
(
value
=
"获取角色的资源ID集合"
,
notes
=
"资源包括菜单和权限ID"
)
@GetMapping
(
"/{roleId}/resources"
)
public
Result
<
RoleResourceForm
>
getRoleResources
(
@GetMapping
(
"/{roleId}/resource
Id
s"
)
public
Result
<
List
<
Long
>
>
getRoleResources
(
@ApiParam
(
"角色ID"
)
@PathVariable
Long
roleId
)
{
RoleResourceForm
resourceIds
=
sysRoleService
.
getRoleResource
s
(
roleId
);
List
<
Long
>
resourceIds
=
sysRoleService
.
getRoleResourceId
s
(
roleId
);
return
Result
.
success
(
resourceIds
);
}
@ApiOperation
(
value
=
"分配角色的资源权限"
)
@PutMapping
(
"/{roleId}/resources"
)
@PutMapping
(
"/{roleId}/resource
Id
s"
)
public
Result
updateRoleResource
(
@PathVariable
Long
roleId
,
@RequestBody
RoleResourceForm
roleResourceForm
@RequestBody
List
<
Long
>
resourceIds
)
{
boolean
result
=
sysRoleService
.
updateRoleResource
(
roleId
,
roleResourceForm
);
boolean
result
=
sysRoleService
.
updateRoleResource
Ids
(
roleId
,
resourceIds
);
return
Result
.
judge
(
result
);
}
}
youlai-system/system-boot/src/main/java/com/youlai/system/converter/MenuConverter.java
浏览文件 @
7fa442bf
...
...
@@ -2,7 +2,10 @@ package com.youlai.system.converter;
import
com.youlai.system.pojo.entity.SysMenu
;
import
com.youlai.system.pojo.vo.menu.MenuVO
;
import
com.youlai.system.pojo.vo.menu.ResourceVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
org.mapstruct.Mappings
;
/**
* 菜单对象转换器
...
...
@@ -15,4 +18,10 @@ public interface MenuConverter {
MenuVO
entity2VO
(
SysMenu
entity
);
@Mappings
({
@Mapping
(
target
=
"value"
,
source
=
"id"
),
@Mapping
(
target
=
"label"
,
source
=
"name"
)
})
ResourceVO
entity2ResourceVO
(
SysMenu
entity
);
}
\ No newline at end of file
youlai-system/system-boot/src/main/java/com/youlai/system/mapper/SysRoleMapper.java
浏览文件 @
7fa442bf
package
com.youlai.system.mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.youlai.system.pojo.entity.SysRole
;
import
com.youlai.system.pojo.query.RolePageQuery
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
SysRoleMapper
extends
BaseMapper
<
SysRole
>
{
/**
* 角色分页列表
*
* @param page
* @param queryParams
* @return
*/
Page
<
SysRole
>
listRolePages
(
Page
<
SysRole
>
page
,
RolePageQuery
queryParams
);
}
youlai-system/system-boot/src/main/java/com/youlai/system/mapper/SysRoleMenuMapper.java
浏览文件 @
7fa442bf
...
...
@@ -5,6 +5,7 @@ import com.youlai.system.pojo.entity.SysRoleMenu;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
import
java.util.Set
;
/**
* 角色菜单持久层
...
...
@@ -29,5 +30,5 @@ public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
* @param roles
* @return ["sys:user:add"]
*/
List
<
String
>
listPerms
(
Lis
t
<
String
>
roles
);
Set
<
String
>
listPerms
(
Se
t
<
String
>
roles
);
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/entity/SysMenu.java
浏览文件 @
7fa442bf
...
...
@@ -43,6 +43,11 @@ public class SysMenu extends BaseEntity {
private
Integer
visible
;
/**
* 权限标识
*/
private
String
perm
;
private
String
redirect
;
@TableField
(
exist
=
false
)
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/entity/SysRole.java
浏览文件 @
7fa442bf
package
com.youlai.system.pojo.entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.youlai.common.base.BaseEntity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* 角色实体类
*
* @author haoxr
* @date 2022/10/6
*/
@Data
public
class
SysRole
extends
BaseEntity
{
...
...
@@ -24,14 +28,7 @@ public class SysRole extends BaseEntity {
private
Integer
status
;
@ApiModelProperty
(
"逻辑删除标识
0-未删除 1-已删除
"
)
//
@TableLogic(value = "0", delval = "1")
@ApiModelProperty
(
"逻辑删除标识
(1:已删除;0:未删除)
"
)
@TableLogic
(
value
=
"0"
,
delval
=
"1"
)
private
Integer
deleted
;
@TableField
(
exist
=
false
)
private
List
<
Long
>
menuIds
;
@TableField
(
exist
=
false
)
private
List
<
Long
>
permissionIds
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/po/UserPO.java
浏览文件 @
7fa442bf
...
...
@@ -3,6 +3,7 @@ package com.youlai.system.pojo.po;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
/**
...
...
@@ -67,6 +68,5 @@ public class UserPO {
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
private
LocalDateTime
createTime
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/query/RolePageQuery.java
浏览文件 @
7fa442bf
package
com.youlai.system.pojo.query
;
import
com.youlai.common.base.BasePageQuery
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 角色分页查询
实体
* 角色分页查询
对象
*
* @author haoxr
* @date 2022/6/3
*
*/
@ApiModel
@Data
public
class
RolePageQuery
extends
BasePageQuery
{
@ApiModelProperty
(
"关键字(角色名称/角色编码)"
)
private
String
keywords
;
@ApiModelProperty
(
"角色状态"
)
private
Integer
status
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java
浏览文件 @
7fa442bf
package
com.youlai.system.pojo.vo.menu
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.youlai.common.enums.MenuTypeEnum
;
import
io.swagger.annotations.ApiModel
;
...
...
@@ -33,6 +34,9 @@ public class MenuVO {
private
Integer
visible
;
@ApiModelProperty
(
"权限标识"
)
private
String
perm
;
private
String
redirect
;
@ApiModelProperty
(
"菜单类型"
)
...
...
@@ -41,10 +45,10 @@ public class MenuVO {
@JsonInclude
(
value
=
JsonInclude
.
Include
.
NON_NULL
)
private
List
<
MenuVO
>
children
;
@DateTime
Format
(
pattern
=
"yyyy/MM/dd HH:mm"
)
@Json
Format
(
pattern
=
"yyyy/MM/dd HH:mm"
)
private
LocalDateTime
createTime
;
@
DateTime
Format
(
pattern
=
"yyyy/MM/dd HH:mm"
)
@
Json
Format
(
pattern
=
"yyyy/MM/dd HH:mm"
)
private
LocalDateTime
updateTime
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/menu/ResourceVO.java
浏览文件 @
7fa442bf
package
com.youlai.system.pojo.vo.menu
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.youlai.common.enums.MenuTypeEnum
;
import
com.youlai.common.web.domain.Option
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -8,7 +9,7 @@ import lombok.Data;
import
java.util.List
;
@ApiModel
(
"资源
(菜单+权限)
视图对象"
)
@ApiModel
(
"资源视图对象"
)
@Data
public
class
ResourceVO
{
...
...
@@ -18,12 +19,11 @@ public class ResourceVO {
@ApiModelProperty
(
"选项的标签"
)
private
String
label
;
@ApiModelProperty
(
"资源类型"
)
private
MenuTypeEnum
type
;
@ApiModelProperty
(
"子菜单"
)
@JsonInclude
(
value
=
JsonInclude
.
Include
.
NON_EMPTY
)
private
List
<
ResourceVO
>
children
;
@JsonInclude
(
value
=
JsonInclude
.
Include
.
NON_NULL
)
private
List
<
Option
>
perms
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/role/RolePageVO.java
浏览文件 @
7fa442bf
package
com.youlai.system.pojo.vo.role
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
@ApiModel
(
"角色分页视图对象"
)
@Data
public
class
RolePageVO
{
...
...
@@ -16,4 +19,16 @@ public class RolePageVO {
@ApiModelProperty
(
"角色编码"
)
private
String
code
;
@ApiModelProperty
(
"状态"
)
private
Integer
status
;
@ApiModelProperty
(
"排序"
)
private
Integer
sort
;
@JsonFormat
(
pattern
=
"yyyy/MM/dd HH:mm"
)
private
LocalDateTime
createTime
;
@JsonFormat
(
pattern
=
"yyyy/MM/dd HH:mm"
)
private
LocalDateTime
updateTime
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/pojo/vo/user/UserVO.java
浏览文件 @
7fa442bf
...
...
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
/**
...
...
@@ -48,7 +49,7 @@ public class UserVO {
private
String
roleNames
;
@ApiModelProperty
(
"创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Dat
e
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd
HH:mm
"
)
private
LocalDateTim
e
createTime
;
}
youlai-system/system-boot/src/main/java/com/youlai/system/service/SysRoleMenuService.java
浏览文件 @
7fa442bf
...
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import
com.youlai.system.pojo.entity.SysRoleMenu
;
import
java.util.List
;
import
java.util.Set
;
public
interface
SysRoleMenuService
extends
IService
<
SysRoleMenu
>
{
...
...
@@ -23,5 +24,5 @@ public interface SysRoleMenuService extends IService<SysRoleMenu> {
* @param roles 角色code集合
* @return ["sys:user:add"]
*/
List
<
String
>
listPerms
(
Lis
t
<
String
>
roles
);
Set
<
String
>
listPerms
(
Se
t
<
String
>
roles
);
}
youlai-system/system-boot/src/main/java/com/youlai/system/service/SysRoleService.java
浏览文件 @
7fa442bf
...
...
@@ -62,20 +62,20 @@ public interface SysRoleService extends IService<SysRole> {
/**
* 获取角色的资源ID集合
,资源包括菜单和权限
* 获取角色的资源ID集合
*
* @param roleId
* @return
*/
RoleResourceForm
getRoleResource
s
(
Long
roleId
);
List
<
Long
>
getRoleResourceId
s
(
Long
roleId
);
/**
* 修改角色的资源权限
*
* @param roleId
* @param r
oleResourceForm
* @param r
esourceIds
* @return
*/
boolean
updateRoleResource
(
Long
roleId
,
RoleResourceForm
roleResourceForm
);
boolean
updateRoleResource
Ids
(
Long
roleId
,
List
<
Long
>
resourceIds
);
}
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java
浏览文件 @
7fa442bf
...
...
@@ -6,20 +6,20 @@ import cn.hutool.core.util.StrUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.youlai.
system.converter.MenuConverter
;
import
com.youlai.
common.constant.GlobalConstants
;
import
com.youlai.common.constant.SystemConstants
;
import
com.youlai.common.enums.MenuTypeEnum
;
import
com.youlai.common.web.domain.Option
;
import
com.youlai.system.converter.MenuConverter
;
import
com.youlai.system.mapper.SysMenuMapper
;
import
com.youlai.system.pojo.entity.SysMenu
;
import
com.youlai.system.pojo.
entity.SysPermission
;
import
com.youlai.system.pojo.
vo.menu.MenuVO
;
import
com.youlai.system.pojo.vo.menu.ResourceVO
;
import
com.youlai.system.pojo.vo.menu.RouteVO
;
import
com.youlai.system.pojo.vo.menu.MenuVO
;
import
com.youlai.system.service.SysMenuService
;
import
com.youlai.system.service.SysPermissionService
;
import
com.youlai.common.constant.GlobalConstants
;
import
com.youlai.common.web.domain.Option
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.compress.utils.Lists
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
...
...
@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
public
class
SysMenuServiceImpl
extends
ServiceImpl
<
SysMenuMapper
,
SysMenu
>
implements
SysMenuService
{
private
final
SysPermissionService
permissionService
;
private
final
MenuConverter
menuConverter
;
private
final
MenuConverter
menuConverter
;
/**
* 菜单表格树形列表
...
...
@@ -51,7 +51,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
.
orderByAsc
(
SysMenu:
:
getSort
)
);
Set
<
Long
>
menuIds
=
menuList
.
stream
().
map
(
menu
->
menu
.
getId
()).
collect
(
Collectors
.
toSet
());
Set
<
Long
>
menuIds
=
menuList
.
stream
().
map
(
menu
->
menu
.
getId
())
.
collect
(
Collectors
.
toSet
());
List
<
MenuVO
>
menus
=
menuList
.
stream
()
...
...
@@ -173,9 +174,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
List
<
SysMenu
>
menuList
=
this
.
list
(
new
LambdaQueryWrapper
<
SysMenu
>()
.
orderByAsc
(
SysMenu:
:
getSort
));
List
<
SysPermission
>
permList
=
permissionService
.
list
();
List
<
ResourceVO
>
resources
=
recurResources
(
SystemConstants
.
ROOT_MENU_ID
,
menuList
,
permList
);
List
<
ResourceVO
>
resources
=
recurResources
(
SystemConstants
.
ROOT_MENU_ID
,
menuList
);
return
resources
;
}
...
...
@@ -207,7 +206,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
* @return
*/
private
List
<
MenuVO
>
recurMenuList
(
Long
parentId
,
List
<
SysMenu
>
menuList
)
{
List
<
MenuVO
>
tableMenus
=
Optional
.
ofNullable
(
menuList
).
orElse
(
new
ArrayList
<>
())
List
<
MenuVO
>
tableMenus
=
Optional
.
ofNullable
(
menuList
).
orElse
(
Lists
.
newArrayList
())
.
stream
()
.
filter
(
menu
->
menu
.
getParentId
().
equals
(
parentId
))
.
map
(
entity
->
{
...
...
@@ -244,24 +243,13 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
* @param menuList 菜单列表
* @return
*/
private
static
List
<
ResourceVO
>
recurResources
(
Long
parentId
,
List
<
SysMenu
>
menuList
,
List
<
SysPermission
>
perm
List
)
{
private
List
<
ResourceVO
>
recurResources
(
Long
parentId
,
List
<
SysMenu
>
menu
List
)
{
List
<
ResourceVO
>
menus
=
Optional
.
ofNullable
(
menuList
).
orElse
(
new
ArrayList
<>()).
stream
()
.
filter
(
menu
->
menu
.
getParentId
().
equals
(
parentId
))
.
map
(
menu
->
{
Long
menuId
=
menu
.
getId
();
ResourceVO
resourceVO
=
new
ResourceVO
();
resourceVO
.
setValue
(
menu
.
getId
());
resourceVO
.
setLabel
(
menu
.
getName
());
List
<
ResourceVO
>
children
=
recurResources
(
menu
.
getId
(),
menuList
,
permList
);
ResourceVO
resourceVO
=
menuConverter
.
entity2ResourceVO
(
menu
);
List
<
ResourceVO
>
children
=
recurResources
(
menu
.
getId
(),
menuList
);
resourceVO
.
setChildren
(
children
);
List
<
Option
>
perms
=
permList
.
stream
().
filter
(
perm
->
perm
.
getMenuId
()
.
equals
(
menuId
))
.
map
(
item
->
new
Option
<>(
item
.
getId
(),
item
.
getName
()))
.
collect
(
Collectors
.
toList
());
resourceVO
.
setPerms
(
perms
);
return
resourceVO
;
}).
collect
(
Collectors
.
toList
());
return
menus
;
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysRoleMenuServiceImpl.java
浏览文件 @
7fa442bf
...
...
@@ -7,6 +7,7 @@ import com.youlai.system.service.SysRoleMenuService;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Set
;
/**
* 角色菜单
...
...
@@ -37,8 +38,8 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
* @return ["sys:user:add"]
*/
@Override
public
List
<
String
>
listPerms
(
Lis
t
<
String
>
roles
)
{
Lis
t
<
String
>
perms
=
this
.
baseMapper
.
listPerms
(
roles
);
public
Set
<
String
>
listPerms
(
Se
t
<
String
>
roles
)
{
Se
t
<
String
>
perms
=
this
.
baseMapper
.
listPerms
(
roles
);
return
perms
;
}
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
浏览文件 @
7fa442bf
...
...
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.youlai.common.security.util.SecurityUtils
;
import
com.youlai.system.converter.RoleConverter
;
import
com.youlai.system.mapper.SysRoleMapper
;
import
com.youlai.system.pojo.entity.SysRole
;
...
...
@@ -57,23 +58,12 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
@Override
public
Page
<
RolePageVO
>
listRolePages
(
RolePageQuery
queryParams
)
{
// 查询参数
int
pageNum
=
queryParams
.
getPageNum
();
int
pageSize
=
queryParams
.
getPageSize
();
String
keywords
=
queryParams
.
getKeywords
();
Page
<
SysRole
>
page
=
new
Page
<>(
queryParams
.
getPageNum
(),
queryParams
.
getPageSize
());
// 查询数据
Page
<
SysRole
>
rolePage
=
this
.
page
(
new
Page
<>(
pageNum
,
pageSize
),
new
LambdaQueryWrapper
<
SysRole
>()
.
like
(
StrUtil
.
isNotBlank
(
keywords
),
SysRole:
:
getName
,
keywords
)
.
or
()
.
like
(
StrUtil
.
isNotBlank
(
keywords
),
SysRole:
:
getCode
,
keywords
)
.
ne
(!
UserUtils
.
isRoot
(),
SysRole:
:
getCode
,
GlobalConstants
.
ROOT_ROLE_CODE
)
// 非超级管理员不显示超级管理员角色
.
select
(
SysRole:
:
getId
,
SysRole:
:
getName
,
SysRole:
:
getCode
)
);
page
=
this
.
baseMapper
.
listRolePages
(
page
,
queryParams
);
// 实体转换
Page
<
RolePageVO
>
pageResult
=
roleConverter
.
entity2Page
(
roleP
age
);
Page
<
RolePageVO
>
pageResult
=
roleConverter
.
entity2Page
(
p
age
);
return
pageResult
;
}
...
...
@@ -86,7 +76,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
public
List
<
Option
>
listRoleOptions
()
{
// 查询数据
List
<
SysRole
>
roleList
=
this
.
list
(
new
LambdaQueryWrapper
<
SysRole
>()
.
ne
(!
UserUtils
.
isRoot
(),
SysRole:
:
getCode
,
GlobalConstants
.
ROOT_ROLE_CODE
)
// 非超级管理员用户超级管理员角色不可见
.
ne
(
SecurityUtils
.
isRoot
()
==
false
,
SysRole:
:
getCode
,
GlobalConstants
.
ROOT_ROLE_CODE
)
.
eq
(
SysRole:
:
getStatus
,
GlobalConstants
.
STATUS_YES
)
.
select
(
SysRole:
:
getId
,
SysRole:
:
getName
)
.
orderByAsc
(
SysRole:
:
getSort
)
);
...
...
@@ -171,54 +163,38 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
}
/**
* 获取角色
的资源ID集合,资源包括菜单和权限
* 获取角色
拥有的菜单ID集合
*
* @param roleId
* @return
*/
@Override
public
RoleResourceForm
getRoleResources
(
Long
roleId
)
{
RoleResourceForm
roleResources
=
new
RoleResourceForm
();
// 获取角色拥有的菜单ID集合
public
List
<
Long
>
getRoleResourceIds
(
Long
roleId
)
{
List
<
Long
>
menuIds
=
sysRoleMenuService
.
listMenuIdsByRoleId
(
roleId
);
roleResources
.
setMenuIds
(
menuIds
);
// 获取角色拥有的权限ID集合
List
<
Long
>
permIds
=
sysRolePermissionService
.
listPermIdsByRoleId
(
roleId
);
roleResources
.
setPermIds
(
permIds
);
return
roleResources
;
return
menuIds
;
}
/**
* 修改角色的资源权限
*
* @param roleId
* @param r
oleResourceForm
* @param r
esourceIds
* @return
*/
@Override
@Transactional
@CacheEvict
(
cacheNames
=
"system"
,
key
=
"'routes'"
)
public
boolean
updateRoleResource
(
Long
roleId
,
RoleResourceForm
roleResourceForm
)
{
public
boolean
updateRoleResource
Ids
(
Long
roleId
,
List
<
Long
>
resourceIds
)
{
// 删除角色菜单
sysRoleMenuService
.
remove
(
new
LambdaQueryWrapper
<
SysRoleMenu
>().
eq
(
SysRoleMenu:
:
getRoleId
,
roleId
));
sysRoleMenuService
.
remove
(
new
LambdaQueryWrapper
<
SysRoleMenu
>()
.
eq
(
SysRoleMenu:
:
getRoleId
,
roleId
));
// 新增角色菜单
List
<
Long
>
menuIds
=
roleResourceForm
.
getMenuIds
();
if
(
CollectionUtil
.
isNotEmpty
(
menuIds
))
{
List
<
SysRoleMenu
>
roleMenus
=
menuIds
.
stream
().
map
(
menuId
->
new
SysRoleMenu
(
roleId
,
menuId
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
resourceIds
))
{
List
<
SysRoleMenu
>
roleMenus
=
resourceIds
.
stream
()
.
map
(
menuId
->
new
SysRoleMenu
(
roleId
,
menuId
))
.
collect
(
Collectors
.
toList
());
sysRoleMenuService
.
saveBatch
(
roleMenus
);
}
// 删除角色权限
sysRolePermissionService
.
remove
(
new
LambdaQueryWrapper
<
SysRolePermission
>().
eq
(
SysRolePermission:
:
getRoleId
,
roleId
));
// 新增角色权限
List
<
Long
>
permIds
=
roleResourceForm
.
getPermIds
();
if
(
CollectionUtil
.
isNotEmpty
(
permIds
))
{
List
<
SysRolePermission
>
rolePerms
=
permIds
.
stream
().
map
(
permId
->
new
SysRolePermission
(
roleId
,
permId
)).
collect
(
Collectors
.
toList
());
sysRolePermissionService
.
saveBatch
(
rolePerms
);
}
return
true
;
}
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
浏览文件 @
7fa442bf
...
...
@@ -27,7 +27,6 @@ import com.youlai.system.pojo.vo.user.UserDetailVO;
import
com.youlai.system.pojo.vo.user.LoginUserVO
;
import
com.youlai.system.pojo.vo.user.UserExportVO
;
import
com.youlai.system.pojo.vo.user.UserVO
;
import
com.youlai.system.service.SysPermissionService
;
import
com.youlai.system.service.SysRoleMenuService
;
import
com.youlai.system.service.SysUserRoleService
;
import
com.youlai.system.service.SysUserService
;
...
...
@@ -62,8 +61,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private
final
PasswordEncoder
passwordEncoder
;
private
final
SysUserRoleService
userRoleService
;
private
final
UserImportListener
userImportListener
;
private
final
SysPermissionService
permissionService
;
private
final
SysRoleMenuService
roleMenuService
;
private
final
UserConverter
userConverter
;
...
...
@@ -82,10 +79,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
Page
<
UserPO
>
page
=
new
Page
<>(
pageNum
,
pageSize
);
// 查询数据
Page
<
UserPO
>
userPoP
age
=
this
.
baseMapper
.
listUserPages
(
page
,
queryParams
);
p
age
=
this
.
baseMapper
.
listUserPages
(
page
,
queryParams
);
// 实体转换
Page
<
UserVO
>
userVoPage
=
userConverter
.
po2Vo
(
userPoP
age
);
Page
<
UserVO
>
userVoPage
=
userConverter
.
po2Vo
(
p
age
);
return
userVoPage
;
}
...
...
@@ -212,9 +209,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public
UserAuthDTO
getAuthInfoByUsername
(
String
username
)
{
UserAuthDTO
userAuthInfo
=
this
.
baseMapper
.
getAuthInfoByUsername
(
username
);
Assert
.
isTrue
(
userAuthInfo
!=
null
,
"用户不存在!"
);
Lis
t
<
String
>
roles
=
userAuthInfo
.
getRoles
();
Se
t
<
String
>
roles
=
userAuthInfo
.
getRoles
();
if
(
CollectionUtil
.
isNotEmpty
(
roles
))
{
Lis
t
<
String
>
perms
=
roleMenuService
.
listPerms
(
roles
);
Se
t
<
String
>
perms
=
roleMenuService
.
listPerms
(
roles
);
userAuthInfo
.
setPerms
(
perms
);
}
return
userAuthInfo
;
...
...
@@ -348,7 +345,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
loginUserVO
.
setRoles
(
roles
);
// 用户权限集合
loginUserVO
.
setPerms
(
null
);
Set
<
String
>
perms
=
roleMenuService
.
listPerms
(
roles
);
loginUserVO
.
setPerms
(
perms
);
return
loginUserVO
;
}
...
...
youlai-system/system-boot/src/main/resources/mapper/SysRoleMapper.xml
0 → 100644
浏览文件 @
7fa442bf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.youlai.system.mapper.SysRoleMapper"
>
<!-- 角色分页列表 -->
<select
id=
"listRolePages"
resultType=
"com.youlai.system.pojo.entity.SysRole"
>
SELECT
id,
name,
code,
sort,
status,
create_time,
update_time
FROM
sys_role
<where>
deleted = 0
<if
test=
'queryParams.keywords!=null and queryParams.keywords.trim() neq ""'
>
AND (
name LIKE CONCAT('%',#{queryParams.keywords},'%')
OR code LIKE CONCAT('%',#{queryParams.keywords},'%')
)
</if>
<if
test=
'queryParams.status!=null'
>
AND status = #{queryParams.status}
</if>
<!-- 非超级管理员不显示超级管理员角色 -->
<if
test=
'@com.youlai.common.security.util.SecurityUtils@isRoot()==false'
>
AND code != 'ROOT'
</if>
</where>
ORDER BY sort ASC
</select>
</mapper>
youlai-system/system-boot/src/main/resources/mapper/SysRoleMenuMapper.xml
浏览文件 @
7fa442bf
...
...
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.youlai.system.mapper.SysRoleMenuMapper"
>
<!-- 获取角色拥有的菜单ID集合
(父节点排除)
-->
<!-- 获取角色拥有的菜单ID集合 -->
<select
id=
"listMenuIdsByRoleId"
resultType=
"java.lang.Long"
>
SELECT
rm.menu_id
...
...
@@ -13,7 +13,16 @@
INNER JOIN sys_menu m ON rm.menu_id = m.id
WHERE
rm.role_id = #{roleId}
AND rm.menu_id NOT IN ( SELECT m.parent_id FROM sys_role_menu rm INNER JOIN sys_menu m ON rm.menu_id = m.id WHERE rm.role_id = #{roleId} )
<!-- 父节点id排除,由子节点的勾选状态控制父节点选中 -->
AND rm.menu_id NOT IN
(
SELECT
m.parent_id
FROM
sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.id
WHERE rm.role_id = #{roleId}
)
</select>
<!-- 获取角色权限标识集合 -->
...
...
@@ -25,7 +34,9 @@
INNER JOIN `sys_menu` m ON rm.menu_id = m.id
INNER JOIN `sys_role` r ON rm.role_id = r.id
WHERE
r.`code` IN
m.type = 'B'
AND m.perm IS NOT NULL
AND r.`code` IN
<foreach
collection=
"roles"
item=
"role"
separator=
","
open=
"("
close=
")"
>
#{role}
</foreach>
...
...
youlai-system/system-boot/src/main/resources/mapper/SysUserMapper.xml
浏览文件 @
7fa442bf
...
...
@@ -83,7 +83,7 @@
<result
property=
"password"
column=
"password"
jdbcType=
"VARCHAR"
/>
<result
property=
"status"
column=
"status"
jdbcType=
"BOOLEAN"
/>
<result
property=
"deptId"
column=
"deptId"
jdbcType=
"BIGINT"
></result>
<collection
property=
"roles"
ofType=
"string"
javaType=
"
lis
t"
>
<collection
property=
"roles"
ofType=
"string"
javaType=
"
java.util.Se
t"
>
<result
column=
"roleCode"
></result>
</collection>
</resultMap>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录