Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
f53d924e
提交
f53d924e
authored
2月 27, 2019
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加管理员获得菜单接口
上级
c198f938
隐藏空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
571 行增加
和
14 行删除
+571
-14
AdminController.java
...ava/cn/iocoder/mall/admin/controller/AdminController.java
+6
-2
ResourceController.java
.../cn/iocoder/mall/admin/controller/ResourceController.java
+62
-0
AdminConvert.java
...main/java/cn/iocoder/mall/admin/convert/AdminConvert.java
+18
-0
ResourceConvert.java
...n/java/cn/iocoder/mall/admin/convert/ResourceConvert.java
+17
-0
AdminInfoVO.java
...n/src/main/java/cn/iocoder/mall/admin/vo/AdminInfoVO.java
+35
-0
AdminMenuTreeNodeVO.java
...in/java/cn/iocoder/mall/admin/vo/AdminMenuTreeNodeVO.java
+72
-0
ResourceService.java
.../main/java/cn/iocoder/mall/admin/api/ResourceService.java
+13
-0
ResourceBO.java
...rc/main/java/cn/iocoder/mall/admin/api/bo/ResourceBO.java
+116
-0
ResourceType.java
...java/cn/iocoder/mall/admin/api/constant/ResourceType.java
+18
-0
pom.xml
admin/admin-service-impl/pom.xml
+6
-0
ResourceConvert.java
...n/java/cn/iocoder/mall/admin/convert/ResourceConvert.java
+23
-0
ResourceMapper.java
...c/main/java/cn/iocoder/mall/admin/dao/ResourceMapper.java
+20
-0
RoleResourceMapper.java
...in/java/cn/iocoder/mall/admin/dao/RoleResourceMapper.java
+3
-0
ResourceDO.java
...ain/java/cn/iocoder/mall/admin/dataobject/ResourceDO.java
+7
-3
AdminServiceImpl.java
.../java/cn/iocoder/mall/admin/service/AdminServiceImpl.java
+1
-1
OAuth2ServiceImpl.java
...java/cn/iocoder/mall/admin/service/OAuth2ServiceImpl.java
+15
-8
ResourceServiceImpl.java
...va/cn/iocoder/mall/admin/service/ResourceServiceImpl.java
+35
-0
RoleServiceImpl.java
...n/java/cn/iocoder/mall/admin/service/RoleServiceImpl.java
+5
-0
ResourceMapper.xml
...service-impl/src/main/resources/mapper/ResourceMapper.xml
+38
-0
RoleResourceMapper.xml
...ice-impl/src/main/resources/mapper/RoleResourceMapper.xml
+8
-0
pom.xml
common/common-framework/pom.xml
+5
-0
BaseDO.java
...n/java/cn/iocoder/common/framework/dataobject/BaseDO.java
+48
-0
没有找到文件。
admin/admin-application/src/main/java/cn/iocoder/mall/admin/controller/AdminController.java
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder
;
import
cn.iocoder.mall.admin.convert.AdminConvert
;
import
cn.iocoder.mall.admin.vo.AdminInfoVO
;
import
io.swagger.annotations.Api
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -12,8 +15,8 @@ import org.springframework.web.bind.annotation.RestController;
public
class
AdminController
{
@GetMapping
(
"/info"
)
public
CommonResult
<
Void
>
info
()
{
return
null
;
public
CommonResult
<
AdminInfoVO
>
info
()
{
return
CommonResult
.
success
(
AdminConvert
.
INSTANCE
.
convert
(
AdminSecurityContextHolder
.
getContext
()))
;
}
}
\ No newline at end of file
admin/admin-application/src/main/java/cn/iocoder/mall/admin/controller/ResourceController.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.admin.api.ResourceService
;
import
cn.iocoder.mall.admin.api.bo.ResourceBO
;
import
cn.iocoder.mall.admin.api.constant.ResourceType
;
import
cn.iocoder.mall.admin.convert.ResourceConvert
;
import
cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder
;
import
cn.iocoder.mall.admin.vo.AdminMenuTreeNodeVO
;
import
com.alibaba.dubbo.config.annotation.Reference
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@RestController
@RequestMapping
(
"admin/resource"
)
@Api
(
"资源模块"
)
public
class
ResourceController
{
@Reference
private
ResourceService
resourceService
;
@GetMapping
(
"/admin_menu_tree"
)
@ApiOperation
(
value
=
"获得管理员拥有的菜单权限"
,
notes
=
"以树结构返回"
)
public
CommonResult
<
List
<
AdminMenuTreeNodeVO
>>
adminMenuTree
()
{
List
<
ResourceBO
>
resources
=
resourceService
.
getResourceByTypeAndRoleIds
(
ResourceType
.
MENU
,
AdminSecurityContextHolder
.
getContext
().
getRoleIds
());
// 创建 AdminMenuTreeNodeVO Map
Map
<
Integer
,
AdminMenuTreeNodeVO
>
treeNodeMap
=
resources
.
stream
().
collect
(
Collectors
.
toMap
(
ResourceBO:
:
getId
,
ResourceConvert
.
INSTANCE
::
convert
));
// 处理父子关系
treeNodeMap
.
values
().
stream
().
filter
(
node
->
{
return
node
.
getPid
()
!=
0
;
// TODO magic number
}).
forEach
((
childNode
)
->
{
// 获得父节点
AdminMenuTreeNodeVO
parentNode
=
treeNodeMap
.
get
(
childNode
.
getPid
());
if
(
parentNode
.
getChildren
()
==
null
)
{
// 初始化 children 数组
parentNode
.
setChildren
(
new
ArrayList
<>());
}
// 将自己添加到父节点中
parentNode
.
getChildren
().
add
(
childNode
);
});
// 获得到所有的根节点
List
<
AdminMenuTreeNodeVO
>
rootNodes
=
treeNodeMap
.
values
().
stream
().
filter
(
node
->
{
return
node
.
getPid
()
==
0
;
// TODO magic number
}).
collect
(
Collectors
.
toList
());
return
CommonResult
.
success
(
rootNodes
);
}
@GetMapping
(
"/admin_url_list"
)
@ApiOperation
(
value
=
"获得管理员拥有的 URL 权限列表"
)
public
CommonResult
adminUrlList
()
{
return
null
;
}
}
\ No newline at end of file
admin/admin-application/src/main/java/cn/iocoder/mall/admin/convert/AdminConvert.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
convert
;
import
cn.iocoder.mall.admin.sdk.context.AdminSecurityContext
;
import
cn.iocoder.mall.admin.vo.AdminInfoVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
@Mapper
public
interface
AdminConvert
{
AdminConvert
INSTANCE
=
Mappers
.
getMapper
(
AdminConvert
.
class
);
@Mappings
({})
AdminInfoVO
convert
(
AdminSecurityContext
adminSecurityContext
);
}
\ No newline at end of file
admin/admin-application/src/main/java/cn/iocoder/mall/admin/convert/ResourceConvert.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
convert
;
import
cn.iocoder.mall.admin.api.bo.ResourceBO
;
import
cn.iocoder.mall.admin.vo.AdminMenuTreeNodeVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
@Mapper
public
interface
ResourceConvert
{
ResourceConvert
INSTANCE
=
Mappers
.
getMapper
(
ResourceConvert
.
class
);
@Mappings
({})
AdminMenuTreeNodeVO
convert
(
ResourceBO
resourceBO
);
}
admin/admin-application/src/main/java/cn/iocoder/mall/admin/vo/AdminInfoVO.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.util.Set
;
@ApiModel
(
"管理员信息 VO"
)
public
class
AdminInfoVO
{
@ApiModelProperty
(
value
=
"管理员比那好"
,
required
=
true
,
example
=
"1"
)
private
Integer
adminId
;
@ApiModelProperty
(
value
=
"角色编号的数组"
,
required
=
true
,
example
=
"[1, 2]"
)
private
Set
<
Integer
>
roleIds
;
public
Integer
getAdminId
()
{
return
adminId
;
}
public
AdminInfoVO
setAdminId
(
Integer
adminId
)
{
this
.
adminId
=
adminId
;
return
this
;
}
public
Set
<
Integer
>
getRoleIds
()
{
return
roleIds
;
}
public
AdminInfoVO
setRoleIds
(
Set
<
Integer
>
roleIds
)
{
this
.
roleIds
=
roleIds
;
return
this
;
}
}
\ No newline at end of file
admin/admin-application/src/main/java/cn/iocoder/mall/admin/vo/AdminMenuTreeNodeVO.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
vo
;
import
java.util.List
;
public
class
AdminMenuTreeNodeVO
{
/**
* 菜单编号
*/
private
Integer
id
;
/**
* 彩蛋名
*/
private
String
name
;
/**
* 操作
*/
private
String
handler
;
/**
* 父菜单编号
*/
private
Integer
pid
;
/**
* 子节点数组
*/
private
List
<
AdminMenuTreeNodeVO
>
children
;
public
Integer
getId
()
{
return
id
;
}
public
AdminMenuTreeNodeVO
setId
(
Integer
id
)
{
this
.
id
=
id
;
return
this
;
}
public
String
getName
()
{
return
name
;
}
public
AdminMenuTreeNodeVO
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
public
String
getHandler
()
{
return
handler
;
}
public
AdminMenuTreeNodeVO
setHandler
(
String
handler
)
{
this
.
handler
=
handler
;
return
this
;
}
public
List
<
AdminMenuTreeNodeVO
>
getChildren
()
{
return
children
;
}
public
AdminMenuTreeNodeVO
setChildren
(
List
<
AdminMenuTreeNodeVO
>
children
)
{
this
.
children
=
children
;
return
this
;
}
public
Integer
getPid
()
{
return
pid
;
}
public
AdminMenuTreeNodeVO
setPid
(
Integer
pid
)
{
this
.
pid
=
pid
;
return
this
;
}
}
admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/ResourceService.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
api
;
import
cn.iocoder.mall.admin.api.bo.ResourceBO
;
import
java.util.List
;
import
java.util.Set
;
public
interface
ResourceService
{
List
<
ResourceBO
>
getResourceByTypeAndRoleIds
(
Integer
type
,
Set
<
Integer
>
roleIds
);
}
\ No newline at end of file
admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/bo/ResourceBO.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
api
.
bo
;
import
java.util.Date
;
/**
* 资源 BO
*/
public
class
ResourceBO
{
/**
* 资源编号
*/
private
Integer
id
;
/**
* 资源名字(标识)
*/
private
String
name
;
/**
* 资源类型
*/
private
Integer
type
;
/**
* 排序
*/
private
Integer
sort
;
/**
* 展示名
*/
private
String
displayName
;
/**
* 添加时间
*/
private
Date
createTime
;
/**
* 父级资源编号
*/
private
Integer
pid
;
/**
* 操作
*/
private
String
handler
;
public
Integer
getId
()
{
return
id
;
}
public
ResourceBO
setId
(
Integer
id
)
{
this
.
id
=
id
;
return
this
;
}
public
String
getName
()
{
return
name
;
}
public
ResourceBO
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
public
Integer
getType
()
{
return
type
;
}
public
ResourceBO
setType
(
Integer
type
)
{
this
.
type
=
type
;
return
this
;
}
public
Integer
getSort
()
{
return
sort
;
}
public
ResourceBO
setSort
(
Integer
sort
)
{
this
.
sort
=
sort
;
return
this
;
}
public
String
getDisplayName
()
{
return
displayName
;
}
public
ResourceBO
setDisplayName
(
String
displayName
)
{
this
.
displayName
=
displayName
;
return
this
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
ResourceBO
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
return
this
;
}
public
Integer
getPid
()
{
return
pid
;
}
public
ResourceBO
setPid
(
Integer
pid
)
{
this
.
pid
=
pid
;
return
this
;
}
public
String
getHandler
()
{
return
handler
;
}
public
ResourceBO
setHandler
(
String
handler
)
{
this
.
handler
=
handler
;
return
this
;
}
}
\ No newline at end of file
admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/constant/ResourceType.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
api
.
constant
;
/**
* 资源类型
*/
public
interface
ResourceType
{
/**
* 彩蛋
*/
Integer
MENU
=
1
;
/**
* URL
*/
Integer
URL
=
2
;
}
\ No newline at end of file
admin/admin-service-impl/pom.xml
浏览文件 @
f53d924e
...
...
@@ -49,6 +49,12 @@
<version>
${org.mapstruct.version}
</version>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
<version>
27.0.1-jre
</version>
</dependency>
</dependencies>
<build>
...
...
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/convert/ResourceConvert.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
convert
;
import
cn.iocoder.mall.admin.api.bo.ResourceBO
;
import
cn.iocoder.mall.admin.dataobject.ResourceDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
ResourceConvert
{
ResourceConvert
INSTANCE
=
Mappers
.
getMapper
(
ResourceConvert
.
class
);
@Mappings
({})
ResourceBO
convert
(
ResourceDO
resourceDO
);
@Mappings
({})
List
<
ResourceBO
>
convert
(
List
<
ResourceDO
>
resourceDOs
);
}
\ No newline at end of file
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/dao/ResourceMapper.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
dao
;
import
cn.iocoder.mall.admin.dataobject.ResourceDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Set
;
@Repository
public
interface
ResourceMapper
{
ResourceDO
selectByTypeAndHandler
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"handler"
)
String
handler
);
List
<
ResourceDO
>
selectListByTypeAndRoleIds
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"roleIds"
)
Set
<
Integer
>
roleIds
);
}
\ No newline at end of file
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/dao/RoleResourceMapper.java
浏览文件 @
f53d924e
...
...
@@ -11,4 +11,6 @@ public interface RoleResourceMapper {
List
<
RoleResourceDO
>
selectByResourceHandler
(
@Param
(
"resourceHandler"
)
String
resourceHandler
);
List
<
RoleResourceDO
>
selectRoleByResourceId
(
@Param
(
"resourceId"
)
Integer
resourceId
);
}
\ No newline at end of file
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/dataobject/ResourceDO.java
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
dataobject
;
import
cn.iocoder.common.framework.dataobject.BaseDO
;
import
java.util.Date
;
/**
* 资源实体
*/
public
class
ResourceDO
{
public
class
ResourceDO
extends
BaseDO
{
/**
* 资源类型 - 菜单
*/
@Deprecated
public
static
final
Integer
TYPE_MENU
=
1
;
/**
* 资源类型 - 操作
*
* 例如,按钮。
*/
@Deprecated
public
static
final
Integer
TYPE_OPERATION
=
2
;
/**
...
...
@@ -23,7 +27,7 @@ public class ResourceDO {
*/
private
Integer
id
;
/**
* 资源名字
* 资源名字
(标识)
*/
private
String
name
;
/**
...
...
@@ -50,7 +54,7 @@ public class ResourceDO {
* 操作
*
* 当资源类型为【菜单】时,handler 配置为界面 URL ,或者前端组件名
* 当资源类型为【
操作
】时,handler 配置为后端 URL 。举个例子,如果有一个「创建管理员」的表单,那么前端界面上的按钮可以根据这个 url 判断是否展示,后端接收到该 url 的请求时会判断是否有权限。
* 当资源类型为【
URL
】时,handler 配置为后端 URL 。举个例子,如果有一个「创建管理员」的表单,那么前端界面上的按钮可以根据这个 url 判断是否展示,后端接收到该 url 的请求时会判断是否有权限。
*/
private
String
handler
;
...
...
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/AdminServiceImpl.java
浏览文件 @
f53d924e
...
...
@@ -4,9 +4,9 @@ import cn.iocoder.common.framework.util.ServiceExceptionUtil;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.admin.api.AdminService
;
import
cn.iocoder.mall.admin.api.constant.AdminErrorCodeEnum
;
import
cn.iocoder.mall.admin.dataobject.AdminDO
;
import
cn.iocoder.mall.admin.dao.AdminMapper
;
import
cn.iocoder.mall.admin.dao.AdminRoleMapper
;
import
cn.iocoder.mall.admin.dataobject.AdminDO
;
import
cn.iocoder.mall.admin.dataobject.AdminRoleDO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/OAuth2ServiceImpl.java
浏览文件 @
f53d924e
...
...
@@ -14,7 +14,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.UUID
;
@Service
@com
.
alibaba
.
dubbo
.
config
.
annotation
.
Service
...
...
@@ -39,6 +42,8 @@ public class OAuth2ServiceImpl implements OAuth2Service {
private
OAuth2RefreshTokenMapper
oauth2RefreshTokenMapper
;
@Autowired
private
RoleServiceImpl
roleService
;
@Autowired
private
ResourceServiceImpl
resourceService
;
@Override
public
CommonResult
<
OAuth2AccessTokenBO
>
getAccessToken
(
String
username
,
String
password
)
{
...
...
@@ -76,15 +81,17 @@ public class OAuth2ServiceImpl implements OAuth2Service {
@Override
public
CommonResult
<
Boolean
>
checkPermission
(
Integer
adminId
,
Set
<
Integer
>
roleIds
,
String
url
)
{
// 避免传入的是空集合
if
(
roleIds
==
null
)
{
roleIds
=
Collections
.
emptySet
();
}
// 校验权限
List
<
RoleResourceDO
>
roleResourceDOs
=
roleService
.
getRoleByResourceHandler
(
url
);
if
(
roleResourceDOs
.
isEmpty
())
{
// 任何角色,都可以访问。TODO 后面调整下,如果未配置的资源,直接不校验权限
// 如果未配置该资源,说明无需权限控制。
ResourceDO
resource
=
resourceService
.
getResourceByTypeAndHandler
(
ResourceDO
.
TYPE_OPERATION
,
url
);
if
(
resource
==
null
)
{
return
CommonResult
.
success
(
true
);
}
// 资源存在,结果无角色,说明没有权限。
if
(
roleIds
==
null
||
roleIds
.
isEmpty
())
{
return
ServiceExceptionUtil
.
error
(
AdminErrorCodeEnum
.
OAUTH_INVALID_PERMISSION
.
getCode
());
}
// 校验是否有资源对应的角色,即 RBAC 。
List
<
RoleResourceDO
>
roleResourceDOs
=
roleService
.
getRoleByResourceId
(
resource
.
getId
());
for
(
RoleResourceDO
roleResourceDO
:
roleResourceDOs
)
{
if
(
roleIds
.
contains
(
roleResourceDO
.
getRoleId
()))
{
return
CommonResult
.
success
(
true
);
...
...
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/ResourceServiceImpl.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
mall
.
admin
.
service
;
import
cn.iocoder.mall.admin.api.ResourceService
;
import
cn.iocoder.mall.admin.api.bo.ResourceBO
;
import
cn.iocoder.mall.admin.convert.ResourceConvert
;
import
cn.iocoder.mall.admin.dao.ResourceMapper
;
import
cn.iocoder.mall.admin.dataobject.ResourceDO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
@Service
@com
.
alibaba
.
dubbo
.
config
.
annotation
.
Service
public
class
ResourceServiceImpl
implements
ResourceService
{
@Autowired
private
ResourceMapper
resourceMapper
;
public
ResourceDO
getResourceByTypeAndHandler
(
Integer
type
,
String
handler
)
{
return
resourceMapper
.
selectByTypeAndHandler
(
type
,
handler
);
}
@Override
public
List
<
ResourceBO
>
getResourceByTypeAndRoleIds
(
Integer
type
,
Set
<
Integer
>
roleIds
)
{
if
(
roleIds
==
null
||
roleIds
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
return
ResourceConvert
.
INSTANCE
.
convert
(
resourceMapper
.
selectListByTypeAndRoleIds
(
type
,
roleIds
));
}
}
\ No newline at end of file
admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/RoleServiceImpl.java
浏览文件 @
f53d924e
...
...
@@ -19,4 +19,8 @@ public class RoleServiceImpl implements RoleService {
return
roleResourceMapper
.
selectByResourceHandler
(
resourceHandler
);
}
public
List
<
RoleResourceDO
>
getRoleByResourceId
(
Integer
resourceId
)
{
return
roleResourceMapper
.
selectRoleByResourceId
(
resourceId
);
}
}
\ No newline at end of file
admin/admin-service-impl/src/main/resources/mapper/ResourceMapper.xml
0 → 100644
浏览文件 @
f53d924e
<?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=
"cn.iocoder.mall.admin.dao.ResourceMapper"
>
<!--<insert id="insert" parameterType="UserDO" useGeneratedKeys="true" keyProperty="id">-->
<!--INSERT INTO users (-->
<!--id, mobile, create_time-->
<!--) VALUES (-->
<!--#{id}, #{mobile}, #{createTime}-->
<!--)-->
<!--</insert>-->
<select
id=
"selectByTypeAndHandler"
resultType=
"ResourceDO"
>
SELECT
id, name, type, sort, display_name,
create_time, pid, handler
FROM resource
WHERE type = #{type}
AND handler = #{handler}
AND deleted = 0
</select>
<select
id=
"selectListByTypeAndRoleIds"
resultType=
"ResourceDO"
>
SELECT
r.id, r.name, r.type, r.sort, r.display_name,
r.create_time, r.pid, r.handler
FROM resource r, role_resource rr
WHERE r.type = #{type}
AND deleted = 0
AND rr.role_id IN
<foreach
item=
"roleId"
collection=
"roleIds"
separator=
","
open=
"("
close=
")"
index=
""
>
#{roleId}
</foreach>
AND r.id = rr.resource_id
</select>
</mapper>
\ No newline at end of file
admin/admin-service-impl/src/main/resources/mapper/RoleResourceMapper.xml
浏览文件 @
f53d924e
...
...
@@ -18,4 +18,11 @@
AND r.id = rr.resource_id
</select>
<select
id=
"selectRoleByResourceId"
parameterType=
"Integer"
resultType=
"RoleResourceDO"
>
SELECT
id, role_id, resource_id
FROM role_resource
WHERE resource_id = #{resourceId}
</select>
</mapper>
\ No newline at end of file
common/common-framework/pom.xml
浏览文件 @
f53d924e
...
...
@@ -44,6 +44,11 @@
<artifactId>
jackson-annotations
</artifactId>
<version>
2.9.7
</version>
</dependency>
<!--<dependency>-->
<!--<groupId>com.baomidou</groupId>-->
<!--<artifactId>mybatis-plus-support</artifactId>-->
<!--<version>2.3</version>-->
<!--</dependency>-->
</dependencies>
...
...
common/common-framework/src/main/java/cn/iocoder/common/framework/dataobject/BaseDO.java
0 → 100644
浏览文件 @
f53d924e
package
cn
.
iocoder
.
common
.
framework
.
dataobject
;
import
java.util.Date
;
/**
* 基础实体对象
*/
public
class
BaseDO
{
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 最后更新时间
*/
private
Date
updateTime
;
private
Boolean
deleted
;
public
Date
getCreateTime
()
{
return
createTime
;
}
public
BaseDO
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
return
this
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
BaseDO
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
return
this
;
}
public
Boolean
getDeleted
()
{
return
deleted
;
}
public
BaseDO
setDeleted
(
Boolean
deleted
)
{
this
.
deleted
=
deleted
;
return
this
;
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论