Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
6bddebaf
提交
6bddebaf
authored
7月 08, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加管理员拥有的菜单列表
上级
e4d32548
显示空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
265 行增加
和
419 行删除
+265
-419
request.js
admin-web/src/utils/request.js
+1
-1
CollectionUtils.java
...ava/cn/iocoder/common/framework/util/CollectionUtils.java
+3
-6
AdminSecurityInterceptor.java
...rity/admin/core/interceptor/AdminSecurityInterceptor.java
+2
-2
AdminMenuTreeNodeVO.java
...mentweb/controller/permission/vo/AdminMenuTreeNodeVO.java
+31
-0
ResourceConvert.java
...all/managementweb/convert/permission/ResourceConvert.java
+3
-0
ResourceManager.java
...all/managementweb/manager/permission/ResourceManager.java
+61
-1
ResourceRpc.java
...ocoder/mall/systemservice/rpc/permission/ResourceRpc.java
+11
-0
RoleRpc.java
...cn/iocoder/mall/systemservice/rpc/permission/RoleRpc.java
+10
-1
AdminRoleMapper.java
...mservice/dal/mysql/mapper/permission/AdminRoleMapper.java
+14
-15
ResourceMapper.java
...emservice/dal/mysql/mapper/permission/ResourceMapper.java
+10
-0
ResourceManager.java
...all/systemservice/manager/permission/ResourceManager.java
+22
-0
RoleManager.java
...er/mall/systemservice/manager/permission/RoleManager.java
+11
-0
ResourceRpcImpl.java
...er/mall/systemservice/rpc/permission/ResourceRpcImpl.java
+6
-0
RoleRpcImpl.java
...ocoder/mall/systemservice/rpc/permission/RoleRpcImpl.java
+6
-0
ResourceService.java
...all/systemservice/service/permission/ResourceService.java
+35
-0
RoleService.java
...er/mall/systemservice/service/permission/RoleService.java
+35
-0
AdminRoleMapper.xml
...service-app/src/main/resources/mapper/AdminRoleMapper.xml
+1
-1
AuthorizationGetResourceTreeByAccountIdDTO.java
...orization/AuthorizationGetResourceTreeByAccountIdDTO.java
+0
-22
AuthorizationServiceImpl.java
...m/biz/service/authorization/AuthorizationServiceImpl.java
+1
-12
ResourceServiceImpl.java
...system/biz/service/authorization/ResourceServiceImpl.java
+1
-24
RoleService.java
...er/mall/system/biz/service/authorization/RoleService.java
+0
-39
RoleServiceImpl.java
...all/system/biz/service/authorization/RoleServiceImpl.java
+0
-50
AdminsAdminController.java
...l/system/rest/controller/admin/AdminsAdminController.java
+1
-64
AdminsResourceController.java
...st/controller/authorization/AdminsResourceController.java
+0
-30
AdminsRoleController.java
...m/rest/controller/authorization/AdminsRoleController.java
+0
-75
AdminsRolePageResponse.java
...m/rest/response/authorization/AdminsRolePageResponse.java
+0
-26
UsersOAuth2AuthenticateResponse.java
...m/rest/response/user/UsersOAuth2AuthenticateResponse.java
+0
-50
没有找到文件。
admin-web/src/utils/request.js
浏览文件 @
6bddebaf
...
...
@@ -138,7 +138,7 @@ export default function request(url, option) {
// 将登陆的 accessToken 放到 header
const
loginToken
=
getLoginToken
();
if
(
loginToken
&&
loginToken
.
accessToken
&&
url
.
indexOf
(
'/
system-api/admins/oauth2/username-authenticate
'
)
===
-
1
)
{
// TODO 芋艿,临时这么加,可能不是很优雅
&&
url
.
indexOf
(
'/
management-api/passport/login
'
)
===
-
1
)
{
// TODO 芋艿,临时这么加,可能不是很优雅
const
headers
=
{
...
newOptions
.
headers
,
Authorization
:
`Bearer
${
loginToken
.
accessToken
}
`
,
...
...
common/common-framework/src/main/java/cn/iocoder/common/framework/util/CollectionUtil.java
→
common/common-framework/src/main/java/cn/iocoder/common/framework/util/CollectionUtil
s
.java
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
common
.
framework
.
util
;
import
org.springframework.util.CollectionUtils
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
public
class
CollectionUtil
{
public
class
CollectionUtil
s
{
public
static
boolean
isEmpty
(
Collection
collection
)
{
return
collection
==
null
||
collection
.
isEmpty
();
...
...
@@ -43,12 +41,11 @@ public class CollectionUtil {
// 暂时没想好名字,先以 2 结尾噶
public
static
<
T
,
K
,
V
>
Map
<
K
,
Set
<
V
>>
convertMultiMap2
(
List
<
T
>
from
,
Function
<
T
,
K
>
keyFunc
,
Function
<
T
,
V
>
valueFunc
)
{
return
from
.
stream
().
collect
(
Collectors
.
groupingBy
(
keyFunc
,
Collectors
.
mapping
(
valueFunc
,
Collectors
.
toSet
())));
return
from
.
stream
().
collect
(
Collectors
.
groupingBy
(
keyFunc
,
Collectors
.
mapping
(
valueFunc
,
Collectors
.
toSet
())));
}
public
static
boolean
containsAny
(
Collection
<?>
source
,
Collection
<?>
candidates
)
{
return
CollectionUtils
.
containsAny
(
source
,
candidates
);
return
org
.
springframework
.
util
.
CollectionUtils
.
containsAny
(
source
,
candidates
);
}
}
common/mall-spring-boot-starter-security-admin/src/main/java/cn/iocoder/mall/security/admin/core/interceptor/AdminSecurityInterceptor.java
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
mall
.
security
.
admin
.
core
.
interceptor
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.util.CollectionUtil
;
import
cn.iocoder.common.framework.util.CollectionUtil
s
;
import
cn.iocoder.common.framework.util.HttpUtil
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
...
...
@@ -73,7 +73,7 @@ public class AdminSecurityInterceptor extends HandlerInterceptorAdapter {
return
;
}
String
[]
permissions
=
requiresPermissions
.
value
();
if
(
CollectionUtil
.
isEmpty
(
permissions
))
{
if
(
CollectionUtil
s
.
isEmpty
(
permissions
))
{
return
;
}
// 权限验证 TODO 待完成
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/permission/vo/AdminMenuTreeNodeVO.java
0 → 100644
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
permission
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
@ApiModel
(
value
=
"管理员拥有的菜单树"
,
description
=
"一般用于首页菜单"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminMenuTreeNodeVO
{
@ApiModelProperty
(
value
=
"菜单编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"菜单名"
,
required
=
true
,
example
=
"商品管理"
)
private
String
name
;
@ApiModelProperty
(
value
=
"前端路由"
,
required
=
true
,
example
=
"/order/list"
)
private
String
route
;
@ApiModelProperty
(
value
=
"菜单图标"
,
required
=
true
,
example
=
"user"
)
private
String
icon
;
@ApiModelProperty
(
value
=
"父级资源编号"
,
required
=
true
,
example
=
"1"
,
notes
=
"如果无父资源,则值为 0"
)
private
Integer
pid
;
/**
* 子节点数组
*/
private
List
<
AdminMenuTreeNodeVO
>
children
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/permission/ResourceConvert.java
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
permission
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.AdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceVO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO
;
...
...
@@ -21,4 +22,6 @@ public interface ResourceConvert {
List
<
ResourceVO
>
convertList
(
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>
list
);
AdminMenuTreeNodeVO
convertTreeNode
(
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
bean
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/permission/ResourceManager.java
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
mall
.
managementweb
.
manager
.
permission
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.managementweb.controller.permission.dto.ResourceCreateDTO
;
import
cn.iocoder.mall.managementweb.controller.permission.dto.ResourceUpdateDTO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.AdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceVO
;
import
cn.iocoder.mall.managementweb.convert.permission.ResourceConvert
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceIdEnum
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum
;
import
cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.RoleRpc
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 资源 Manager
*/
@Service
@Slf4j
public
class
ResourceManager
{
@Reference
(
version
=
"${dubbo.consumer.ResourceRpc.version}"
,
validation
=
"false"
)
private
ResourceRpc
resourceRpc
;
@Reference
(
version
=
"${dubbo.consumer.RoleRpc.version}"
,
validation
=
"false"
)
private
RoleRpc
roleRpc
;
/**
* 创建资源
...
...
@@ -76,4 +86,54 @@ public class ResourceManager {
return
ResourceConvert
.
INSTANCE
.
convertList
(
listResourceResult
.
getData
());
}
/**
* 获得管理员的菜单树
*
* @param adminId 管理员编号
* @return 菜单树
*/
public
List
<
AdminMenuTreeNodeVO
>
treeAdminMenu
(
Integer
adminId
)
{
// 获得管理员拥有的角色编号列表
CommonResult
<
Set
<
Integer
>>
listAdminRoleIdsResult
=
roleRpc
.
listAdminRoleIds
(
adminId
);
listAdminRoleIdsResult
.
checkError
();
if
(
CollectionUtils
.
isEmpty
(
listAdminRoleIdsResult
.
getData
()))
{
return
null
;
}
// 获得角色拥有的资源列表
CommonResult
<
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>>
resourceVOResult
=
resourceRpc
.
listRoleResource
(
listAdminRoleIdsResult
.
getData
(),
ResourceTypeEnum
.
MENU
.
getType
());
resourceVOResult
.
checkError
();
// 构建菜单树
return
this
.
buildAdminMenuTree
(
resourceVOResult
.
getData
());
}
private
List
<
AdminMenuTreeNodeVO
>
buildAdminMenuTree
(
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>
resourceVOs
)
{
// 排序,保证菜单的有序性
resourceVOs
.
sort
(
Comparator
.
comparing
(
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
::
getSort
));
// 构建菜单树
// 使用 LinkedHashMap 的原因,是为了排序 。实际也可以用 Stream API ,就是太丑了。
Map
<
Integer
,
AdminMenuTreeNodeVO
>
treeNodeMap
=
new
LinkedHashMap
<>();
resourceVOs
.
forEach
(
resourceVO
->
treeNodeMap
.
put
(
resourceVO
.
getId
(),
ResourceConvert
.
INSTANCE
.
convertTreeNode
(
resourceVO
)));
// 处理父子关系
treeNodeMap
.
values
().
stream
()
.
filter
(
node
->
!
node
.
getPid
().
equals
(
ResourceIdEnum
.
ROOT
.
getId
()))
.
forEach
((
childNode
)
->
{
// 获得父节点
AdminMenuTreeNodeVO
parentNode
=
treeNodeMap
.
get
(
childNode
.
getPid
());
if
(
parentNode
==
null
)
{
log
.
error
(
"[getResourceTree][resource({}) 找不到父资源({})]"
,
childNode
.
getId
(),
childNode
.
getPid
());
return
;
}
if
(
parentNode
.
getChildren
()
==
null
)
{
// 初始化 children 数组
parentNode
.
setChildren
(
new
ArrayList
<>());
}
// 将自己添加到父节点中
parentNode
.
getChildren
().
add
(
childNode
);
});
// 获得到所有的根节点
return
treeNodeMap
.
values
().
stream
()
.
filter
(
node
->
node
.
getPid
().
equals
(
ResourceIdEnum
.
ROOT
.
getId
()))
.
collect
(
Collectors
.
toList
());
}
}
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/permission/ResourceRpc.java
浏览文件 @
6bddebaf
...
...
@@ -5,6 +5,8 @@ import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO
;
import
javax.validation.constraints.NotNull
;
import
java.util.Collection
;
import
java.util.List
;
/**
...
...
@@ -50,4 +52,13 @@ public interface ResourceRpc {
*/
CommonResult
<
List
<
ResourceVO
>>
listResource
(
List
<
Integer
>
resourceIds
);
/**
* 获得指定角色的资源列表
*
* @param roleIds 角色编号列表
* @param type 资源类型
* @return 资源列表
*/
CommonResult
<
List
<
ResourceVO
>>
listRoleResource
(
@NotNull
(
message
=
"角色编号列表不能为空"
)
Collection
<
Integer
>
roleIds
,
Integer
type
);
}
system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/permission/RoleRpc.java
浏览文件 @
6bddebaf
...
...
@@ -8,6 +8,7 @@ import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleCreateDTO;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.RoleVO
;
import
java.util.List
;
import
java.util.Set
;
/**
* 角色 Rpc 接口
...
...
@@ -52,7 +53,6 @@ public interface RoleRpc {
*/
CommonResult
<
List
<
RoleVO
>>
listRole
(
List
<
Integer
>
roleIds
);
/**
* 获得角色分页
*
...
...
@@ -60,4 +60,13 @@ public interface RoleRpc {
* @return 角色分页结果
*/
CommonResult
<
PageResult
<
RoleVO
>>
pageRole
(
RolePageDTO
pageDTO
);
/**
* 获得管理员拥有的角色编号列表
*
* @param adminId 管理员编号
* @return 角色编号列表
*/
CommonResult
<
Set
<
Integer
>>
listAdminRoleIds
(
Integer
adminId
);
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/dal/mysql/mapper/permission/A
ccount
RoleMapper.java
→
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/dal/mysql/mapper/permission/A
dmin
RoleMapper.java
浏览文件 @
6bddebaf
...
...
@@ -6,27 +6,26 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Collection
;
import
java.util.List
;
@Repository
public
interface
A
ccount
RoleMapper
extends
BaseMapper
<
AdminRoleDO
>
{
public
interface
A
dmin
RoleMapper
extends
BaseMapper
<
AdminRoleDO
>
{
default
List
<
AdminRoleDO
>
selectByA
ccountId
(
Integer
account
Id
)
{
return
selectList
(
new
QueryWrapper
<
AdminRoleDO
>().
eq
(
"a
ccount_id"
,
account
Id
));
default
List
<
AdminRoleDO
>
selectByA
dminId
(
Integer
admin
Id
)
{
return
selectList
(
new
QueryWrapper
<
AdminRoleDO
>().
eq
(
"a
dmin_id"
,
admin
Id
));
}
default
List
<
AdminRoleDO
>
selectListByAccountIds
(
Collection
<
Integer
>
accountIds
)
{
return
selectList
(
new
QueryWrapper
<
AdminRoleDO
>().
in
(
"account_id"
,
accountIds
));
}
default
int
deleteByAccountId
(
Integer
accountId
)
{
return
delete
(
new
QueryWrapper
<
AdminRoleDO
>().
eq
(
"account_id"
,
accountId
));
}
default
int
deleteByRoleId
(
Integer
roleId
)
{
return
delete
(
new
QueryWrapper
<
AdminRoleDO
>().
eq
(
"role_id"
,
roleId
));
}
//
default List<AdminRoleDO> selectListByAccountIds(Collection<Integer> accountIds) {
//
return selectList(new QueryWrapper<AdminRoleDO>().in("account_id", accountIds));
//
}
//
//
default int deleteByAccountId(Integer accountId) {
//
return delete(new QueryWrapper<AdminRoleDO>().eq("account_id", accountId));
//
}
//
//
default int deleteByRoleId(Integer roleId) {
//
return delete(new QueryWrapper<AdminRoleDO>().eq("role_id", roleId));
//
}
/**
* 批量插入。因为 MyBaits Plus 的批量插入是基于 Service 实现,所以只好写 XML
...
...
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/dal/mysql/mapper/permission/ResourceMapper.java
浏览文件 @
6bddebaf
...
...
@@ -16,6 +16,16 @@ public interface ResourceMapper extends BaseMapper<ResourceDO> {
return
selectOne
(
new
QueryWrapper
<
ResourceDO
>().
eq
(
"permission"
,
permission
));
}
/**
* 查询指定类型的资源列表
*
* @param type 资源类型,允许空
* @return 资源列表
*/
default
List
<
ResourceDO
>
selectListByType
(
Integer
type
)
{
return
selectList
(
new
QueryWrapperX
<
ResourceDO
>().
eqIfPresent
(
"type"
,
type
));
}
default
ResourceDO
selectByPidAndName
(
Integer
pid
,
String
name
)
{
return
selectOne
(
new
QueryWrapperX
<
ResourceDO
>().
eqIfPresent
(
"pid"
,
pid
)
.
eqIfPresent
(
"name"
,
name
));
...
...
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/manager/permission/ResourceManager.java
浏览文件 @
6bddebaf
...
...
@@ -5,10 +5,12 @@ import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO
;
import
cn.iocoder.mall.systemservice.service.permission.ResourceService
;
import
cn.iocoder.mall.systemservice.service.permission.RoleService
;
import
cn.iocoder.mall.systemservice.service.permission.bo.ResourceBO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Collection
;
import
java.util.List
;
/**
...
...
@@ -19,6 +21,8 @@ public class ResourceManager {
@Autowired
private
ResourceService
resourceService
;
@Autowired
private
RoleService
roleService
;
/**
* 创建资源
...
...
@@ -71,4 +75,22 @@ public class ResourceManager {
return
ResourceConvert
.
INSTANCE
.
convertList02
(
resourceBOs
);
}
/**
* 获得指定角色的资源列表
*
* @param roleIds 角色编号列表
* @param type 资源类型,允许空
* @return 资源列表
*/
public
List
<
ResourceVO
>
listRoleResource
(
Collection
<
Integer
>
roleIds
,
Integer
type
)
{
List
<
ResourceBO
>
resourceBOs
;
// 判断是否为超管。若是超管,默认有所有权限
if
(
roleService
.
hasSuperAdmin
(
roleIds
))
{
resourceBOs
=
resourceService
.
listResourceByType
(
type
);
}
else
{
resourceBOs
=
resourceService
.
listRoleResourceByType
(
roleIds
,
type
);
}
return
ResourceConvert
.
INSTANCE
.
convertList02
(
resourceBOs
);
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/manager/permission/RoleManager.java
浏览文件 @
6bddebaf
...
...
@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Set
;
/**
* 角色 Manager
...
...
@@ -84,4 +85,14 @@ public class RoleManager {
return
RoleConvert
.
INSTANCE
.
convertPage
(
pageResultBO
);
}
/**
* 获得管理员拥有的角色编号列表
*
* @param adminId 管理员编号
* @return 角色编号列表
*/
public
Set
<
Integer
>
listAdminRoleIds
(
Integer
adminId
)
{
return
roleService
.
listAdminRoleIds
(
adminId
);
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/rpc/permission/ResourceRpcImpl.java
浏览文件 @
6bddebaf
...
...
@@ -8,6 +8,7 @@ import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.Collection
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
...
...
@@ -48,4 +49,9 @@ public class ResourceRpcImpl implements ResourceRpc {
return
success
(
resourceManager
.
listResource
(
resourceIds
));
}
@Override
public
CommonResult
<
List
<
ResourceVO
>>
listRoleResource
(
Collection
<
Integer
>
roleIds
,
Integer
type
)
{
return
success
(
resourceManager
.
listRoleResource
(
roleIds
,
type
));
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/rpc/permission/RoleRpcImpl.java
浏览文件 @
6bddebaf
...
...
@@ -11,6 +11,7 @@ import org.apache.dubbo.config.annotation.Service;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
...
...
@@ -55,4 +56,9 @@ public class RoleRpcImpl implements RoleRpc {
return
success
(
roleManager
.
pageRole
(
pageDTO
));
}
@Override
public
CommonResult
<
Set
<
Integer
>>
listAdminRoleIds
(
Integer
adminId
)
{
return
success
(
roleManager
.
listAdminRoleIds
(
adminId
));
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/service/permission/ResourceService.java
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
mall
.
systemservice
.
service
.
permission
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.mall.systemservice.convert.permission.ResourceConvert
;
import
cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.ResourceDO
;
import
cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.RoleResourceDO
;
import
cn.iocoder.mall.systemservice.dal.mysql.mapper.permission.ResourceMapper
;
import
cn.iocoder.mall.systemservice.dal.mysql.mapper.permission.RoleResourceMapper
;
import
cn.iocoder.mall.systemservice.enums.SystemErrorCodeEnum
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceIdEnum
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum
;
...
...
@@ -15,6 +18,8 @@ import org.springframework.stereotype.Service;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.Valid
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
static
cn
.
iocoder
.
mall
.
systemservice
.
enums
.
SystemErrorCodeEnum
.*;
...
...
@@ -28,6 +33,8 @@ public class ResourceService {
@Autowired
private
ResourceMapper
resourceMapper
;
@Autowired
private
RoleResourceMapper
roleResourceMapper
;
/**
* 创建资源
...
...
@@ -112,6 +119,34 @@ public class ResourceService {
return
ResourceConvert
.
INSTANCE
.
convertList
(
resourceDOs
);
}
/**
* 获得指定类型的资源列表
*
* @param type 资源类型,允许空
* @return 资源列表
*/
public
List
<
ResourceBO
>
listResourceByType
(
Integer
type
)
{
List
<
ResourceDO
>
resourceDOs
=
resourceMapper
.
selectListByType
(
type
);
return
ResourceConvert
.
INSTANCE
.
convertList
(
resourceDOs
);
}
/**
* 获得角色拥有的资源列表
*
* @param roleIds 角色编号
* @param type 资源类型,允许空
* @return 资源列表
*/
public
List
<
ResourceBO
>
listRoleResourceByType
(
Collection
<
Integer
>
roleIds
,
Integer
type
)
{
List
<
RoleResourceDO
>
roleResourceDOs
=
roleResourceMapper
.
selectListByRoleIds
(
roleIds
);
if
(
CollectionUtils
.
isEmpty
(
roleResourceDOs
))
{
return
Collections
.
emptyList
();
}
List
<
ResourceDO
>
resourceDOs
=
resourceMapper
.
selectListByIdsAndType
(
CollectionUtils
.
convertSet
(
roleResourceDOs
,
RoleResourceDO:
:
getResourceId
),
type
);
return
ResourceConvert
.
INSTANCE
.
convertList
(
resourceDOs
);
}
/**
* 校验父资源是否合法
*
...
...
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/service/permission/RoleService.java
浏览文件 @
6bddebaf
package
cn
.
iocoder
.
mall
.
systemservice
.
service
.
permission
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.convert.permission.RoleConvert
;
import
cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.AdminRoleDO
;
import
cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.RoleDO
;
import
cn.iocoder.mall.systemservice.dal.mysql.mapper.permission.AdminRoleMapper
;
import
cn.iocoder.mall.systemservice.dal.mysql.mapper.permission.RoleMapper
;
import
cn.iocoder.mall.systemservice.enums.permission.RoleCodeEnum
;
import
cn.iocoder.mall.systemservice.enums.permission.RoleTypeEnum
;
import
cn.iocoder.mall.systemservice.service.permission.bo.RoleBO
;
import
cn.iocoder.mall.systemservice.service.permission.bo.RoleCreateBO
;
...
...
@@ -17,7 +21,9 @@ import org.springframework.util.StringUtils;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.Valid
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
mall
.
systemservice
.
enums
.
SystemErrorCodeEnum
.*;
...
...
@@ -30,6 +36,8 @@ public class RoleService {
@Autowired
private
RoleMapper
roleMapper
;
@Autowired
private
AdminRoleMapper
adminRoleMapper
;
/**
* 创建角色
...
...
@@ -151,4 +159,31 @@ public class RoleService {
}
}
/**
* 获得管理员拥有的角色编号列表
*
* @param adminId 管理员编号
* @return 角色编号列表
*/
public
Set
<
Integer
>
listAdminRoleIds
(
Integer
adminId
)
{
List
<
AdminRoleDO
>
adminRoleDOs
=
adminRoleMapper
.
selectByAdminId
(
adminId
);
return
CollectionUtils
.
convertSet
(
adminRoleDOs
,
AdminRoleDO:
:
getRoleId
);
}
/**
* 判断角色是否有超级管理员
*
* @param roleIds 角色编号列表
* @return 是否有超级管理员
*/
public
boolean
hasSuperAdmin
(
Collection
<
Integer
>
roleIds
)
{
List
<
RoleDO
>
roleDOs
=
roleMapper
.
selectBatchIds
(
roleIds
);
for
(
RoleDO
roleDO
:
roleDOs
)
{
if
(
RoleCodeEnum
.
SUPER_ADMIN
.
getCode
().
equals
(
roleDO
.
getCode
()))
{
return
true
;
}
}
return
false
;
}
}
system-service-project/system-service-app/src/main/resources/mapper/AdminRoleMapper.xml
浏览文件 @
6bddebaf
<?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.systemservice.dal.mysql.mapper.permission.A
ccount
RoleMapper"
>
<mapper
namespace=
"cn.iocoder.mall.systemservice.dal.mysql.mapper.permission.A
dmin
RoleMapper"
>
<insert
id=
"insertList"
>
INSERT INTO account_role (
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/authorization/AuthorizationGetResourceTreeByAccountIdDTO.java
deleted
100644 → 0
浏览文件 @
e4d32548
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
authorization
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* 授权模块 - 获得账号所拥有的资源树 DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
AuthorizationGetResourceTreeByAccountIdDTO
{
@NotNull
(
message
=
"账号编号不能为空"
)
private
Integer
accountId
;
/**
* 资源类型
*/
private
Integer
type
;
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/authorization/AuthorizationServiceImpl.java
浏览文件 @
6bddebaf
...
...
@@ -122,18 +122,7 @@ public class AuthorizationServiceImpl implements AuthorizationService {
return
Collections
.
emptyList
();
}
Set
<
Integer
>
roleIds
=
CollectionUtil
.
convertSet
(
accountRoleDOs
,
AccountRoleDO:
:
getRoleId
);
// 判断是否为超管。若是超管,默认有所有权限
if
(
roleService
.
hasSuperAdmin
(
roleIds
))
{
return
resourceService
.
getResourceTree
(
new
ResourceGetTreeDTO
().
setType
(
getResourcesByAccountIdDTO
.
getType
()));
}
// 查询角色拥有的资源关联数据
List
<
RoleResourceDO
>
roleResourceDOs
=
roleResourceMapper
.
selectListByRoleIds
(
roleIds
);
if
(
CollectionUtil
.
isEmpty
(
roleResourceDOs
))
{
return
Collections
.
emptyList
();
}
Set
<
Integer
>
resourceIds
=
CollectionUtil
.
convertSet
(
roleResourceDOs
,
RoleResourceDO:
:
getResourceId
);
// 查询对应资源树
return
resourceService
.
getResourceTree
(
new
ResourceGetTreeDTO
().
setIds
(
resourceIds
).
setType
(
getResourcesByAccountIdDTO
.
getType
()));
}
@Override
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/authorization/ResourceServiceImpl.java
浏览文件 @
6bddebaf
...
...
@@ -53,30 +53,7 @@ public class ResourceServiceImpl implements ResourceService {
// 获得对应的资源列表
List
<
ResourceDO
>
resourceDOs
=
resourceMapper
.
selectListByIdsAndType
(
getTreeDTO
.
getIds
(),
getTreeDTO
.
getType
());
// 拼装成树
// 使用 LinkedHashMap 的原因,是为了排序 。实际也可以用 Stream API ,就是太丑了。
Map
<
Integer
,
ResourceTreeNodeBO
>
treeNodeMap
=
new
LinkedHashMap
<>();
resourceDOs
.
stream
().
sorted
(
Comparator
.
comparing
(
ResourceDO:
:
getSort
))
.
forEach
(
resourceDO
->
treeNodeMap
.
put
(
resourceDO
.
getId
(),
ResourceConvert
.
INSTANCE
.
convertTreeNode
(
resourceDO
)));
// 处理父子关系
treeNodeMap
.
values
().
stream
()
.
filter
(
node
->
!
node
.
getNode
().
getPid
().
equals
(
ResourceIdEnum
.
ROOT
.
getId
()))
.
forEach
((
childNode
)
->
{
// 获得父节点
ResourceTreeNodeBO
parentNode
=
treeNodeMap
.
get
(
childNode
.
getNode
().
getPid
());
if
(
parentNode
==
null
)
{
log
.
error
(
"[getResourceTree][resource({}) 找不到父资源({})]"
,
childNode
.
getNode
().
getId
(),
childNode
.
getNode
().
getPid
());
return
;
}
if
(
parentNode
.
getChildren
()
==
null
)
{
// 初始化 children 数组
parentNode
.
setChildren
(
new
ArrayList
<>());
}
// 将自己添加到父节点中
parentNode
.
getChildren
().
add
(
childNode
);
});
// 获得到所有的根节点
return
treeNodeMap
.
values
().
stream
()
.
filter
(
node
->
node
.
getNode
().
getPid
().
equals
(
ResourceIdEnum
.
ROOT
.
getId
()))
.
collect
(
Collectors
.
toList
());
}
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/authorization/RoleService.java
deleted
100644 → 0
浏览文件 @
e4d32548
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
authorization
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.authorization.RoleBO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleAddDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleDeleteDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RolePageDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleUpdateDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleGetListDTO
;
import
java.util.Collection
;
import
java.util.List
;
/**
* 角色模块 - Service 接口
*/
public
interface
RoleService
{
RoleBO
getRole
(
Integer
id
);
List
<
RoleBO
>
getRoleList
(
RoleGetListDTO
getListDTO
);
PageResult
<
RoleBO
>
getRolePage
(
RolePageDTO
pageDTO
);
/**
* 判断指定角色是否包含超级管理员角色
*
* @param ids 角色编号数组
* @return 是否有超级管理员角色
*/
boolean
hasSuperAdmin
(
Collection
<
Integer
>
ids
);
Integer
addRole
(
RoleAddDTO
roleAddDTO
);
void
updateRole
(
RoleUpdateDTO
roleUpdateDTO
);
void
deleteRole
(
RoleDeleteDTO
roleDeleteDTO
);
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/authorization/RoleServiceImpl.java
deleted
100644 → 0
浏览文件 @
e4d32548
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
authorization
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.StringUtils
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.mybatis.enums.DeletedStatusEnum
;
import
cn.iocoder.mall.system.biz.bo.authorization.RoleBO
;
import
cn.iocoder.mall.system.biz.convert.authorization.RoleConvert
;
import
cn.iocoder.mall.system.biz.dao.authorization.RoleMapper
;
import
cn.iocoder.mall.system.biz.dataobject.authorization.RoleDO
;
import
cn.iocoder.mall.system.biz.dto.authorization.*
;
import
cn.iocoder.mall.system.biz.enums.SystemErrorCodeEnum
;
import
cn.iocoder.mall.system.biz.enums.authorization.RoleCodeEnum
;
import
cn.iocoder.mall.system.biz.enums.authorization.RoleTypeEnum
;
import
cn.iocoder.mall.system.biz.event.authorization.ResourceDeleteEvent
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.List
;
@Service
public
class
RoleServiceImpl
implements
RoleService
{
@Autowired
private
ApplicationEventPublisher
eventPublisher
;
@Autowired
private
RoleMapper
roleMapper
;
@Override
public
PageResult
<
RoleBO
>
getRolePage
(
RolePageDTO
pageDTO
)
{
return
RoleConvert
.
INSTANCE
.
convertPage
(
roleMapper
.
selectPage
(
pageDTO
));
}
@Override
public
boolean
hasSuperAdmin
(
Collection
<
Integer
>
ids
)
{
List
<
RoleDO
>
roleDOs
=
roleMapper
.
selectBatchIds
(
ids
);
for
(
RoleDO
roleDO
:
roleDOs
)
{
if
(
RoleCodeEnum
.
SUPER_ADMIN
.
getCode
().
equals
(
roleDO
.
getCode
()))
{
return
true
;
}
}
return
false
;
}
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/admin/AdminsAdminController.java
浏览文件 @
6bddebaf
...
...
@@ -22,69 +22,6 @@ import org.springframework.web.bind.annotation.RestController;
@Api
(
tags
=
"管理员 - 管理员 API"
)
public
class
AdminsAdminController
{
@Autowired
private
AdminService
adminService
;
@GetMapping
(
"/page"
)
@RequiresPermissions
(
"system:admin:page"
)
@ApiOperation
(
value
=
"管理员分页"
)
public
CommonResult
<
PageResult
<
AdminsAdminPageResponse
>>
page
(
AdminsAdminPageRequest
request
)
{
// 查询管理员分页
AdminPageDTO
pageDTO
=
AdminsAdminConvert
.
INSTANCE
.
convert
(
request
);
PageResult
<
AdminBO
>
adminPageBO
=
adminService
.
getAdminPage
(
pageDTO
);
PageResult
<
AdminsAdminPageResponse
>
adminPageResponse
=
AdminsAdminConvert
.
INSTANCE
.
convertPage
(
adminPageBO
);
if
(
adminPageResponse
.
getList
().
isEmpty
())
{
return
CommonResult
.
success
(
adminPageResponse
);
}
// 拼接角色数据
// TODO 拼接部门数据
// 拼接结果
// if (!resultPage.getList().isEmpty()) {
// // 查询角色数组
// Map<Integer, Collection<RoleBO>> roleMap = adminService.getAdminRolesMap(CollectionUtil.convertList(resultPage.getList(), AdminBO::getId));
// resultPage.getList().forEach(admin -> admin.setRoles(AdminConvert.INSTANCE.convertAdminVORoleList(roleMap.get(admin.getId()))));
//
// // 查询对应部门
// List<DeptmentBO> deptmentBOS = deptmentService.getAllDeptments();
// Map<Integer, String> deptNameMap = deptmentBOS.stream().collect(Collectors.toMap(d->d.getId(), d->d.getName()));
// //管理员所在部门被删后,变成未分配状态
// deptNameMap.put(0, "未分配");
// resultPage.getList().forEach(admin->{
// admin.setDeptment(new AdminVO.Deptment(admin.getDeptmentId(), deptNameMap.get(admin.getDeptmentId())));
// });
// }
return
CommonResult
.
success
(
adminPageResponse
);
}
// @PostMapping("/add")
// @ApiOperation(value = "创建管理员")
// public CommonResult<AdminBO> add(AdminAddDTO adminAddDTO) {
// return success(adminService.addAdmin(AdminSecurityContextHolder.getContext().getAdminId(), adminAddDTO));
// }
//
// @PostMapping("/update")
// @ApiOperation(value = "更新管理员")
// public CommonResult<Boolean> update(AdminUpdateDTO adminUpdateDTO) {
// return success(adminService.updateAdmin(AdminSecurityContextHolder.getContext().getAdminId(), adminUpdateDTO));
// }
//
// @PostMapping("/update_status")
// @ApiOperation(value = "更新管理员状态")
// public CommonResult<Boolean> updateStatus(AdminUpdateStatusDTO adminUpdateStatusDTO) {
// return success(adminService.updateAdminStatus(AdminSecurityContextHolder.getContext().getAdminId(), adminUpdateStatusDTO));
// }
//
// @PostMapping("/delete")
// @ApiOperation(value = "删除管理员")
// @ApiImplicitParam(name = "id", value = "管理员编号", required = true, example = "1")
// public CommonResult<Boolean> delete(@RequestParam("id") Integer id) {
// return success(adminService.deleteAdmin(AdminSecurityContextHolder.getContext().getAdminId(), id));
// }
//
// @GetMapping("/role_list")
// @ApiOperation(value = "指定管理员拥有的角色列表")
// @ApiImplicitParam(name = "id", value = "管理员编号", required = true, example = "1")
...
...
@@ -99,7 +36,7 @@ public class AdminsAdminController {
// result.forEach(adminRoleVO -> adminRoleVO.setAssigned(adminRoleIdSet.contains(adminRoleVO.getId())));
// return success(result);
// }
//
// @PostMapping("/assign_role")
// @ApiOperation(value = "分配给管理员角色")
// public CommonResult<Boolean> assignRole(AdminAssignRoleDTO adminAssignRoleDTO) {
...
...
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/authorization/AdminsResourceController.java
浏览文件 @
6bddebaf
...
...
@@ -38,34 +38,4 @@ public class AdminsResourceController {
return
CommonResult
.
success
(
AdminsResourceConvert
.
INSTANCE
.
convertList
(
resourceTreeNodeBOs
));
}
@PostMapping
(
"/add"
)
@ApiOperation
(
value
=
"创建资源"
,
notes
=
"例如说,菜单资源,按钮资源"
)
@RequiresPermissions
(
"system:resource:add"
)
public
CommonResult
<
Integer
>
add
(
AdminsResourceAddRequest
request
)
{
ResourceAddDTO
addDTO
=
AdminsResourceConvert
.
INSTANCE
.
convert
(
request
)
.
setAdminId
(
AdminSecurityContextHolder
.
getAdminId
());
return
CommonResult
.
success
(
resourceService
.
addResource
(
addDTO
));
}
@PostMapping
(
"/update"
)
@ApiOperation
(
value
=
"更新资源"
)
@RequiresPermissions
(
"system:resource:update"
)
public
CommonResult
<
Boolean
>
update
(
AdminsResourceUpdateRequest
request
)
{
ResourceUpdateDTO
updateDTO
=
AdminsResourceConvert
.
INSTANCE
.
convert
(
request
)
.
setAdminId
(
AdminSecurityContextHolder
.
getAdminId
());
resourceService
.
updateResource
(
updateDTO
);
return
CommonResult
.
success
(
true
);
}
@PostMapping
(
"/delete"
)
@ApiOperation
(
value
=
"删除资源"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"资源编号"
,
required
=
true
,
example
=
"1"
)
@RequiresPermissions
(
"system:resource:delete"
)
public
CommonResult
<
Boolean
>
delete
(
@RequestParam
(
"id"
)
Integer
id
)
{
ResourceDeleteDTO
deleteDTO
=
new
ResourceDeleteDTO
().
setId
(
id
)
.
setAdminId
(
AdminSecurityContextHolder
.
getAdminId
());
resourceService
.
deleteResource
(
deleteDTO
);
return
CommonResult
.
success
(
true
);
}
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/authorization/AdminsRoleController.java
deleted
100644 → 0
浏览文件 @
e4d32548
package
cn
.
iocoder
.
mall
.
system
.
rest
.
controller
.
authorization
;
import
cn.iocoder.common.framework.enums.MallConstants
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.security.core.annotation.RequiresPermissions
;
import
cn.iocoder.mall.security.core.context.AdminSecurityContextHolder
;
import
cn.iocoder.mall.system.biz.bo.authorization.RoleBO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleAddDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleDeleteDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RolePageDTO
;
import
cn.iocoder.mall.system.biz.dto.authorization.RoleUpdateDTO
;
import
cn.iocoder.mall.system.biz.service.authorization.RoleService
;
import
cn.iocoder.mall.system.rest.convert.authorization.AdminsRoleConvert
;
import
cn.iocoder.mall.system.rest.request.authorization.AdminsRoleAddRequest
;
import
cn.iocoder.mall.system.rest.request.authorization.AdminsRolePageRequest
;
import
cn.iocoder.mall.system.rest.request.authorization.AdminsRoleUpdateRequest
;
import
cn.iocoder.mall.system.rest.response.authorization.AdminsRolePageResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequestMapping
(
MallConstants
.
ROOT_PATH_ADMIN
+
"/role"
)
@Api
(
tags
=
"管理员 - 角色 API"
)
public
class
AdminsRoleController
{
@Autowired
private
RoleService
roleService
;
@GetMapping
(
"/page"
)
@ApiOperation
(
value
=
"角色分页"
)
@RequiresPermissions
(
"system:role:page"
)
public
CommonResult
<
PageResult
<
AdminsRolePageResponse
>>
page
(
AdminsRolePageRequest
request
)
{
RolePageDTO
pageDTO
=
AdminsRoleConvert
.
INSTANCE
.
convert
(
request
);
PageResult
<
RoleBO
>
pageResult
=
roleService
.
getRolePage
(
pageDTO
);
return
CommonResult
.
success
(
AdminsRoleConvert
.
INSTANCE
.
convertPage
(
pageResult
));
}
@PostMapping
(
"/add"
)
@ApiOperation
(
value
=
"创建角色"
)
@RequiresPermissions
(
"system:role:add"
)
public
CommonResult
<
Integer
>
add
(
AdminsRoleAddRequest
request
)
{
RoleAddDTO
addDTO
=
AdminsRoleConvert
.
INSTANCE
.
convert
(
request
)
.
setAdminId
(
AdminSecurityContextHolder
.
getAdminId
());
return
CommonResult
.
success
(
roleService
.
addRole
(
addDTO
));
}
@PostMapping
(
"/update"
)
@ApiOperation
(
value
=
"更新角色"
)
@RequiresPermissions
(
"system:role:update"
)
public
CommonResult
<
Boolean
>
update
(
AdminsRoleUpdateRequest
request
)
{
RoleUpdateDTO
updateDTO
=
AdminsRoleConvert
.
INSTANCE
.
convert
(
request
)
.
setAdminId
(
AdminSecurityContextHolder
.
getAdminId
());
roleService
.
updateRole
(
updateDTO
);
return
CommonResult
.
success
(
true
);
}
@PostMapping
(
"/delete"
)
@ApiOperation
(
value
=
"删除角色"
)
@RequiresPermissions
(
"system:role:delete"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"角色编号"
,
required
=
true
,
example
=
"1"
)
public
CommonResult
<
Boolean
>
delete
(
@RequestParam
(
"id"
)
Integer
id
)
{
RoleDeleteDTO
deleteDTO
=
new
RoleDeleteDTO
().
setId
(
id
)
.
setAdminId
(
AdminSecurityContextHolder
.
getAdminId
());
roleService
.
deleteRole
(
deleteDTO
);
return
CommonResult
.
success
(
true
);
}
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/authorization/AdminsRolePageResponse.java
deleted
100644 → 0
浏览文件 @
e4d32548
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
authorization
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
@ApiModel
(
"管理员 - 角色模块 - 分页列表 Response"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsRolePageResponse
{
@ApiModelProperty
(
value
=
"角色编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"角色名字"
,
required
=
true
,
example
=
"管理员"
)
private
String
name
;
@ApiModelProperty
(
value
=
"角色编码"
,
example
=
"SUPER_ADMIN"
)
private
String
code
;
@ApiModelProperty
(
value
=
"角色类型"
,
required
=
true
,
example
=
"1-系统角色; 2-内置角色"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"创建时间"
,
required
=
true
)
private
Date
createTime
;
}
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/response/user/UsersOAuth2AuthenticateResponse.java
deleted
100644 → 0
浏览文件 @
e4d32548
package
cn
.
iocoder
.
mall
.
system
.
rest
.
response
.
user
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
@ApiModel
(
"用户 - OAuth2 模块 - 认证响应"
)
@Data
@Accessors
(
chain
=
true
)
public
class
UsersOAuth2AuthenticateResponse
{
@Data
public
static
class
Token
{
@ApiModelProperty
(
value
=
"access token"
,
required
=
true
,
example
=
"001e8f49b20e47f7b3a2de774497cd50"
)
private
String
accessToken
;
@ApiModelProperty
(
value
=
"refresh token"
,
required
=
true
,
example
=
"001e8f49b20e47f7b3a2de774497cd50"
)
private
String
refreshToken
;
@ApiModelProperty
(
value
=
"过期时间"
,
required
=
true
)
private
Date
expiresTime
;
}
@Data
public
static
class
User
{
@ApiModelProperty
(
value
=
"管理员编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"昵称"
,
required
=
true
,
example
=
"小王"
)
private
String
nickname
;
}
/**
* TODO 晚点测试下 swagger 的表现
*/
private
User
user
;
/**
* TODO 晚点测试下 swagger 的表现
*/
private
Token
token
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论