Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 7ecd0925
由
LN
编写于
2021-07-19 11:05:23 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加组管理类
1 个父辈
2babe04a
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
527 行增加
和
110 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/security/config/ElPermissionConfig.java
src/main/java/com/neotel/smfcore/security/config/SpringSecurityConfig.java
src/main/java/com/neotel/smfcore/security/rest/GroupController.java
src/main/java/com/neotel/smfcore/security/rest/MenuController.java
src/main/java/com/neotel/smfcore/security/rest/UserController.java
src/main/java/com/neotel/smfcore/security/rest/bean/vo/UserPassVo.java
src/main/java/com/neotel/smfcore/security/service/dao/IGroupDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IMenuDao.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/GroupDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/MenuDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/UserDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/IGroupManager.java
src/main/java/com/neotel/smfcore/security/service/manager/IMenuManager.java
src/main/java/com/neotel/smfcore/security/service/manager/IUserManager.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/GroupManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/MenuManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/UserManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/po/Group.java
src/main/java/com/neotel/smfcore/security/service/po/Menu.java
src/main/java/com/neotel/smfcore/security/service/po/User.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
common
.
init
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IMenuManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
import
com.neotel.smfcore.security.service.manager.impl.GroupManagerImpl
;
import
com.neotel.smfcore.security.service.manager.impl.MenuManagerImpl
;
import
com.neotel.smfcore.security.service.manager.impl.RoleManagerImpl
;
import
com.neotel.smfcore.security.service.manager.impl.UserManagerImpl
;
import
com.neotel.smfcore.security.service.po.Group
;
import
com.neotel.smfcore.security.service.po.Menu
;
import
com.neotel.smfcore.security.service.po.Role
;
import
com.neotel.smfcore.security.service.po.User
;
...
...
@@ -19,11 +25,13 @@ import java.util.*;
public
class
DataInitManager
{
@Autowired
UserManagerImpl
userManager
;
IUserManager
userManager
;
@Autowired
RoleManagerImpl
roleManager
;
IRoleManager
roleManager
;
@Autowired
MenuManagerImpl
menuManager
;
IMenuManager
menuManager
;
@Autowired
IGroupManager
groupManager
;
@PostConstruct
public
void
DataInit
()
{
...
...
@@ -34,28 +42,71 @@ public class DataInitManager {
User
admin
=
userManager
.
findByUserName
(
userName
);
if
(
admin
==
null
)
{
Menu
menu1
=
new
Menu
(
new
ArrayList
<
Menu
>(),
0
,
"menu:list"
,
"料架分组"
,
1
,
"lightGroup"
,
"neolight/lightGroup/index"
,
""
,
0
,
false
,
false
,
false
,
"料架管理"
,
"menu"
);
Menu
menu2
=
new
Menu
(
new
ArrayList
<
Menu
>(),
0
,
"menu:list"
,
"工单"
,
2
,
"workOrder"
,
"neolight/workOrder/index"
,
""
,
0
,
false
,
false
,
false
,
"工单"
,
"menu"
);
Menu
menu3
=
new
Menu
(
new
ArrayList
<
Menu
>(),
0
,
"menu:list"
,
"查找出库"
,
3
,
"menu"
,
"neolight/singleOuput/index"
,
""
,
0
,
false
,
false
,
false
,
"查找出库"
,
"menu"
);
Menu
menu1
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"料架分组"
,
1
,
"lightGroup"
,
"neolight/lightGroup/index"
,
""
,
0
,
"menu"
);
Menu
menu2
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"工单"
,
2
,
"workOrder"
,
"neolight/workOrder/index"
,
""
,
0
,
"menu"
);
Menu
menu3
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"查找出库"
,
3
,
"singleOuput"
,
"neolight/singleOuput/index"
,
""
,
0
,
"menu"
);
Menu
menu4
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"分组管理"
,
4
,
"groupManager"
,
"neolight/groupManager/index"
,
""
,
0
,
"menu"
);
// Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", "", 0, false, false, false, "角色管理", "menu");
List
<
Menu
>
menus
=
new
ArrayList
<
Menu
>();
menus
.
add
(
menu1
);
menus
.
add
(
menu2
);
menus
.
add
(
menu3
);
Set
<
String
>
Menus
=
new
HashSet
<
String
>()
;
for
(
Menu
menu:
menus
)
{
menus
.
add
(
menu4
)
;
Set
<
String
>
menuIdSet
=
new
HashSet
<
String
>()
;
for
(
Menu
menu:
menus
)
{
menu
=
menuManager
.
save
(
menu
);
// log.info("创建默认菜单:" + menu.toString());
// Menus.add(menu.getId());
}
Menu
menuUser
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"user:list"
,
"用户管理"
,
11
,
"peoples"
,
"system/user/index"
,
""
,
3
,
"peoples"
);
menuUser
=
menuManager
.
save
(
menuUser
);
Menu
menuUser1
=
menuManager
.
save
(
new
Menu
(
"user:edit"
,
"用户编辑"
,
12
,
menuUser
.
getId
()))
;
Menu
menuUser2
=
menuManager
.
save
(
new
Menu
(
"user:del"
,
"用户删除"
,
13
,
menuUser
.
getId
()));
Menu
menuUser3
=
menuManager
.
save
(
new
Menu
(
"user:add"
,
"用户新增"
,
13
,
menuUser
.
getId
()));
menus
.
add
(
menuUser
);
menus
.
add
(
menuUser1
);
menus
.
add
(
menuUser2
);
menus
.
add
(
menuUser3
);
Menu
menuRole
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"role:list"
,
"角色管理"
,
21
,
"role"
,
"system/role/index"
,
""
,
3
,
"role"
);
menuUser
=
menuManager
.
save
(
menuRole
);
Menu
menuRole1
=
menuManager
.
save
(
new
Menu
(
"role:edit"
,
"角色编辑"
,
22
,
menuRole
.
getId
()))
;
Menu
menuRole2
=
menuManager
.
save
(
new
Menu
(
"role:del"
,
"角色删除"
,
23
,
menuRole
.
getId
()));
Menu
menuRole3
=
menuManager
.
save
(
new
Menu
(
"role:add"
,
"角色新增"
,
23
,
menuRole
.
getId
()));
menus
.
add
(
menuRole
);
menus
.
add
(
menuRole1
);
menus
.
add
(
menuRole2
);
menus
.
add
(
menuRole3
);
Menu
menuMenu
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"菜单管理"
,
31
,
"menu"
,
"system/menu/index"
,
""
,
3
,
"menu"
);
menuMenu
=
menuManager
.
save
(
menuMenu
);
Menu
menuMenu1
=
menuManager
.
save
(
new
Menu
(
"menu:edit"
,
"菜单编辑"
,
32
,
menuMenu
.
getId
()))
;
Menu
menuMenu2
=
menuManager
.
save
(
new
Menu
(
"menu:del"
,
"菜单删除"
,
33
,
menuMenu
.
getId
()));
Menu
menuMenu3
=
menuManager
.
save
(
new
Menu
(
"menu:add"
,
"菜单新增"
,
33
,
menuMenu
.
getId
()));
menus
.
add
(
menuMenu
);
menus
.
add
(
menuMenu1
);
menus
.
add
(
menuMenu2
);
menus
.
add
(
menuMenu3
);
for
(
Menu
menu:
menus
)
{
log
.
info
(
"创建默认菜单:"
+
menu
.
toString
());
Menus
.
add
(
menu
.
getId
());
menuIdSet
.
add
(
menu
.
getId
());
}
Role
role
=
new
Role
(
Menus
,
"admin"
,
"全部"
,
1
,
"管理员"
);
Group
group
=
new
Group
(
"未分组"
);
group
=
groupManager
.
save
(
group
);
log
.
info
(
"创建默认组:"
+
group
.
toString
());
Set
<
String
>
groupIds
=
new
HashSet
<>();
groupIds
.
add
(
group
.
getId
());
Role
role
=
new
Role
(
menuIdSet
,
"admin"
,
"全部"
,
1
,
"管理员"
);
role
=
roleManager
.
save
(
role
);
log
.
info
(
"创建默认角色:"
+
role
.
toString
());
admin
=
new
User
(
role
.
getId
(),
userName
,
""
,
"$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa"
,
true
,
true
,
new
Date
()
);
admin
=
new
User
(
role
.
getId
(),
userName
,
""
,
"$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa"
,
true
,
true
,
new
Date
(),
groupIds
);
userManager
.
save
(
admin
);
log
.
info
(
"创建默认用户:"
+
admin
.
toString
());
...
...
src/main/java/com/neotel/smfcore/security/config/ElPermissionConfig.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
config
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
(
value
=
"el"
)
public
class
ElPermissionConfig
{
public
Boolean
check
(
String
...
permissions
){
// 获取当前用户的所有权限
List
<
String
>
elPermissions
=
SecurityUtils
.
getCurrentUser
().
getAuthorities
().
stream
().
map
(
GrantedAuthority:
:
getAuthority
).
collect
(
Collectors
.
toList
());
// 判断当前用户的所有权限是否包含接口上定义的权限
return
elPermissions
.
contains
(
"admin"
)
||
Arrays
.
stream
(
permissions
).
anyMatch
(
elPermissions:
:
contains
);
}
}
src/main/java/com/neotel/smfcore/security/config/SpringSecurityConfig.java
查看文件 @
7ecd092
...
...
@@ -121,6 +121,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.
antMatchers
(
"/druid/**"
).
permitAll
()
// 放行OPTIONS请求
.
antMatchers
(
HttpMethod
.
OPTIONS
,
"/**"
).
permitAll
()
.
antMatchers
(
"api/menus/build"
).
permitAll
()
// 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型
// GET
.
antMatchers
(
HttpMethod
.
GET
,
anonymousUrls
.
get
(
RequestMethodEnum
.
GET
.
getType
()).
toArray
(
new
String
[
0
])).
permitAll
()
...
...
src/main/java/com/neotel/smfcore/security/rest/GroupController.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
rest
;
import
io.swagger.annotations.Api
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequiredArgsConstructor
@Api
(
tags
=
"系统:组管理"
)
@RequestMapping
(
"/api/groups"
)
@Slf4j
public
class
GroupController
{
}
src/main/java/com/neotel/smfcore/security/rest/MenuController.java
查看文件 @
7ecd092
...
...
@@ -17,6 +17,8 @@ package com.neotel.smfcore.security.rest;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.neotel.smfcore.common.annotation.QueryCondition
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.PageUtil
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.rest.bean.dto.MenuDto
;
...
...
@@ -30,6 +32,8 @@ import lombok.RequiredArgsConstructor;
import
lombok.extern.log4j.Log4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
...
...
@@ -74,96 +78,103 @@ public class MenuController {
return
new
ResponseEntity
<>(
vos
,
HttpStatus
.
OK
);
}
// @ApiOperation("导出菜单数据")
// @GetMapping(value = "/download")
// @PreAuthorize("@el.check('menu:list')")
// public void download(HttpServletResponse response, QueryCondition criteria) throws Exception {
// menuService.download(menuService.queryAll(criteria, false), response);
// }
//
// @GetMapping(value = "/build")
// @ApiOperation("获取前端所需菜单")
// public ResponseEntity<Object> buildMenus(){
// List<MenuDto> menuDtoList = menuService.findByUser(SecurityUtils.getCurrentUserId());
// List<MenuDto> menuDtos = menuService.buildTree(menuDtoList);
// return new ResponseEntity<>(menuService.buildMenus(menuDtos), HttpStatus.OK);
// }
//
// @ApiOperation("返回全部的菜单")
// @GetMapping(value = "/lazy")
// @PreAuthorize("@el.check('menu:list','roles:list')")
// public ResponseEntity<Object> query(@RequestParam Long pid){
// return new ResponseEntity<>(menuService.getMenus(pid), HttpStatus.OK);
// }
//
// @ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
// @GetMapping(value = "/child")
// @PreAuthorize("@el.check('menu:list','roles:list')")
// public ResponseEntity<Object> child(@RequestParam Long id){
// Set<Menu> menuSet = new HashSet<>();
// List<MenuDto> menuList = menuService.getMenus(id);
// menuSet.add(menuService.findOne(id));
// menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
// Set<Long> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
// return new ResponseEntity<>(ids, HttpStatus.OK);
// }
//
// @GetMapping
// @ApiOperation("查询菜单")
// @PreAuthorize("@el.check('menu:list')")
// public ResponseEntity<Object> query(MenuQueryCriteria criteria) throws Exception {
// List<MenuDto> menuDtoList = menuService.queryAll(criteria, true);
// return new ResponseEntity<>(PageUtil.toPage(menuDtoList, menuDtoList.size()), HttpStatus.OK);
// }
//
// @ApiOperation("查询菜单:根据ID获取同级与上级数据")
// @PostMapping("/superior")
// @PreAuthorize("@el.check('menu:list')")
// public ResponseEntity<Object> getSuperior(@RequestBody List<Long> ids) {
// Set<MenuDto> menuDtos = new LinkedHashSet<>();
// if(CollectionUtil.isNotEmpty(ids)){
// for (Long id : ids) {
// MenuDto menuDto = menuService.findById(id);
// menuDtos.addAll(menuService.getSuperior(menuDto, new ArrayList<>()));
// }
// return new ResponseEntity<>(menuService.buildTree(new ArrayList<>(menuDtos)), HttpStatus.OK);
// }
// return new ResponseEntity<>(menuService.getMenus(null), HttpStatus.OK);
// }
@ApiOperation
(
"导出菜单数据"
)
@GetMapping
(
value
=
"/download"
)
@PreAuthorize
(
"@el.check('menu:list')"
)
public
void
download
(
HttpServletResponse
response
,
QueryCondition
criteria
)
throws
Exception
{
Query
query
=
new
Query
(
Criteria
.
where
(
"type"
).
ne
(
2
));
menuManager
.
download
(
menuManager
.
findByQuery
(
query
),
response
);
}
//
@ApiOperation
(
"返回全部的菜单"
)
@GetMapping
(
value
=
"/lazy"
)
@PreAuthorize
(
"@el.check('menu:list','roles:list')"
)
public
ResponseEntity
<
Object
>
query
(
@RequestParam
String
pid
){
return
new
ResponseEntity
<>(
menuManager
.
getMenusByPid
(
pid
),
HttpStatus
.
OK
);
}
@ApiOperation
(
"根据菜单ID返回所有子节点ID,包含自身ID"
)
@GetMapping
(
value
=
"/child"
)
@PreAuthorize
(
"@el.check('menu:list','roles:list')"
)
public
ResponseEntity
<
Object
>
child
(
@RequestParam
String
id
){
Set
<
Menu
>
menuSet
=
new
HashSet
<>();
List
<
Menu
>
menuList
=
menuManager
.
getMenusByPid
(
id
);
menuSet
.
add
(
menuManager
.
get
(
id
));
menuSet
=
menuManager
.
getChildMenus
(
menuList
,
menuSet
);
Set
<
String
>
ids
=
menuSet
.
stream
().
map
(
Menu:
:
getId
).
collect
(
Collectors
.
toSet
());
return
new
ResponseEntity
<>(
ids
,
HttpStatus
.
OK
);
}
@GetMapping
@ApiOperation
(
"查询菜单"
)
@PreAuthorize
(
"@el.check('menu:list')"
)
public
ResponseEntity
<
Object
>
query
(
QueryCondition
criteria
)
throws
Exception
{
Query
query
=
new
Query
(
Criteria
.
where
(
"type"
).
ne
(
2
));
List
<
MenuDto
>
menuDtoList
=
menuMapper
.
toDto
(
menuManager
.
findByQuery
(
query
));
return
new
ResponseEntity
<>(
PageUtil
.
toPage
(
menuDtoList
,
menuDtoList
.
size
()),
HttpStatus
.
OK
);
}
@ApiOperation
(
"查询菜单:根据ID获取同级与上级数据"
)
@PostMapping
(
"/superior"
)
@PreAuthorize
(
"@el.check('menu:list')"
)
public
ResponseEntity
<
Object
>
getSuperior
(
@RequestBody
List
<
String
>
ids
)
{
Set
<
Menu
>
menus
=
new
LinkedHashSet
<>();
if
(
CollectionUtil
.
isNotEmpty
(
ids
)){
for
(
String
id
:
ids
)
{
Menu
menu
=
menuManager
.
get
(
id
);
menus
.
addAll
(
menuManager
.
getSuperior
(
menu
,
new
ArrayList
<>()));
}
return
new
ResponseEntity
<>(
menuManager
.
buildTree
(
new
ArrayList
<>(
menus
)),
HttpStatus
.
OK
);
}
return
new
ResponseEntity
<>(
menuMapper
.
toDto
(
menuManager
.
getMenusByPid
(
""
))
,
HttpStatus
.
OK
);
}
// @Log("新增菜单")
//
@ApiOperation("新增菜单")
//
@PostMapping
//
@PreAuthorize("@el.check('menu:add')")
//
public ResponseEntity<Object> create(@Validated @RequestBody Menu resources){
//
if (resources.getId() != null) {
@ApiOperation
(
"新增菜单"
)
@PostMapping
@PreAuthorize
(
"@el.check('menu:add')"
)
public
ResponseEntity
<
Object
>
create
(
@Validated
@RequestBody
Menu
resources
){
if
(
resources
.
getId
()
!=
null
)
{
// throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
// }
// menuService.create(resources);
// return new ResponseEntity<>(HttpStatus.CREATED);
// }
//
log
.
error
(
"menu:add 参数错误:ID不能为空"
);
return
new
ResponseEntity
<>(
HttpStatus
.
BAD_REQUEST
);
}
try
{
menuManager
.
save
(
resources
);
}
catch
(
Exception
exception
){
log
.
error
(
"menu:add 新增菜单["
+
resources
.
toString
()+
"]出错:"
+
exception
);
return
new
ResponseEntity
<>(
HttpStatus
.
INTERNAL_SERVER_ERROR
);
}
return
new
ResponseEntity
<>(
HttpStatus
.
CREATED
);
}
// @Log("修改菜单")
// @ApiOperation("修改菜单")
// @PutMapping
// @PreAuthorize("@el.check('menu:edit')")
// public ResponseEntity<Object> update(@Validated(Menu.Update.class) @RequestBody Menu resources){
// menuService.update(resources);
// return new ResponseEntity<>(HttpStatus.NO_CONTENT);
// }
//
@ApiOperation
(
"修改菜单"
)
@PutMapping
@PreAuthorize
(
"@el.check('menu:edit')"
)
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
Menu
resources
){
// public ResponseEntity<Object> update(@Validated(Menu.Update.class) @RequestBody Menu resources){
try
{
menuManager
.
save
(
resources
);
}
catch
(
ValidateException
e
)
{
log
.
error
(
"menu:add 修改菜单["
+
resources
.
toString
()+
"]出错:"
+
e
);
return
new
ResponseEntity
<>(
HttpStatus
.
INTERNAL_SERVER_ERROR
);
}
return
new
ResponseEntity
<>(
HttpStatus
.
NO_CONTENT
);
}
// @Log("删除菜单")
//
@ApiOperation("删除菜单")
//
@DeleteMapping
//
@PreAuthorize("@el.check('menu:del')")
// public ResponseEntity<Object> delete(@RequestBody Set<Lo
ng> ids){
//
Set<Menu> menuSet = new HashSet<>();
// for (Lo
ng id : ids) {
// List<MenuDto> menuList = menuService.getMenus
(id);
// menuSet.add(menuService.findOne
(id));
// menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList)
, menuSet);
//
}
// menuService
.delete(menuSet);
//
return new ResponseEntity<>(HttpStatus.OK);
//
}
}
@ApiOperation
(
"删除菜单"
)
@DeleteMapping
@PreAuthorize
(
"@el.check('menu:del')"
)
public
ResponseEntity
<
Object
>
delete
(
@RequestBody
Set
<
Stri
ng
>
ids
){
Set
<
Menu
>
menuSet
=
new
HashSet
<>();
for
(
Stri
ng
id
:
ids
)
{
List
<
Menu
>
menuList
=
menuManager
.
getMenusByPid
(
id
);
menuSet
.
add
(
menuManager
.
get
(
id
));
menuSet
=
menuManager
.
getChildMenus
(
menuList
,
menuSet
);
}
menuManager
.
delete
(
menuSet
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
}
src/main/java/com/neotel/smfcore/security/rest/UserController.java
查看文件 @
7ecd092
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/security/rest/bean/vo/UserPassVo.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
rest
.
bean
.
vo
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.stereotype.Service
;
@Setter
@Getter
public
class
UserPassVo
{
private
String
oldPass
;
private
String
newPass
;
}
src/main/java/com/neotel/smfcore/security/service/dao/IGroupDao.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
public
interface
IGroupDao
extends
IBaseDao
{
}
src/main/java/com/neotel/smfcore/security/service/dao/IMenuDao.java
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
import
com.neotel.smfcore.security.service.po.Menu
;
import
java.util.List
;
/**
* Created by sunke on 2021/7/8.
*/
public
interface
IMenuDao
extends
IBaseDao
{
List
<
Menu
>
findByPid
(
String
pid
);
}
src/main/java/com/neotel/smfcore/security/service/dao/impl/GroupDaoImpl.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.security.service.dao.IGroupDao
;
import
com.neotel.smfcore.security.service.po.Group
;
import
org.springframework.stereotype.Service
;
@Service
public
class
GroupDaoImpl
extends
AbstractBaseDao
implements
IGroupDao
{
@Override
public
Class
getEntityClass
()
{
return
Group
.
class
;
}
}
src/main/java/com/neotel/smfcore/security/service/dao/impl/MenuDaoImpl.java
查看文件 @
7ecd092
...
...
@@ -7,6 +7,8 @@ import com.neotel.smfcore.security.service.po.Menu;
import
com.neotel.smfcore.security.service.po.User
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* Created by sunke on 2021/7/7.
*/
...
...
@@ -17,4 +19,8 @@ public class MenuDaoImpl extends AbstractBaseDao implements IMenuDao {
return
Menu
.
class
;
}
@Override
public
List
<
Menu
>
findByPid
(
String
pid
)
{
return
super
.
findOneByCondition
(
new
String
[]
{
"pid"
},
new
String
[]
{
pid
});
}
}
src/main/java/com/neotel/smfcore/security/service/dao/impl/UserDaoImpl.java
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.security.service.OnlineUserService
;
import
com.neotel.smfcore.security.service.dao.IUserDao
;
import
com.neotel.smfcore.security.service.po.User
;
import
org.springframework.stereotype.Service
;
...
...
@@ -14,6 +15,8 @@ import java.util.Set;
*/
@Service
public
class
UserDaoImpl
extends
AbstractBaseDao
implements
IUserDao
{
@Override
public
Class
getEntityClass
()
{
return
User
.
class
;
...
...
@@ -29,6 +32,8 @@ public class UserDaoImpl extends AbstractBaseDao implements IUserDao {
return
super
.
findOneByCondition
(
new
String
[]
{
"email"
},
new
String
[]
{
email
});
}
@Override
public
void
updatePass
(
String
username
,
String
pass
,
Date
lastPasswordResetTime
)
{
...
...
src/main/java/com/neotel/smfcore/security/service/manager/IGroupManager.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.security.service.po.Group
;
public
interface
IGroupManager
extends
IBaseManager
<
Group
>
{
}
src/main/java/com/neotel/smfcore/security/service/manager/IMenuManager.java
查看文件 @
7ecd092
...
...
@@ -7,7 +7,10 @@ import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import
com.neotel.smfcore.security.service.po.Menu
;
import
com.neotel.smfcore.security.service.po.Role
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Set
;
public
interface
IMenuManager
extends
IBaseManager
<
Menu
>
{
...
...
@@ -37,4 +40,36 @@ public interface IMenuManager extends IBaseManager<Menu> {
*/
List
<
MenuVo
>
buildMenus
(
List
<
MenuDto
>
menuDtos
);
/**
* 懒加载菜单数据
* @param pid 根据父节点查询菜单,父节点空时查询所有父节点为空的/
* @return /
*/
List
<
Menu
>
getMenusByPid
(
String
pid
);
/**
* 获取当前菜单的上级菜单或者同级菜单
* @param menuDto
* @param menus
* @return
*/
List
<
Menu
>
getSuperior
(
Menu
menuDto
,
List
<
Menu
>
menus
);
/**
* 下载菜单数据
* @param menuDtos
* @param response
* @throws IOException
*/
void
download
(
List
<
Menu
>
menuDtos
,
HttpServletResponse
response
)
throws
IOException
;
Set
<
Menu
>
getChildMenus
(
List
<
Menu
>
menuList
,
Set
<
Menu
>
menuSet
);
/**
* 删除
* @param menuSet /
*/
void
delete
(
Set
<
Menu
>
menuSet
);
}
src/main/java/com/neotel/smfcore/security/service/manager/IUserManager.java
查看文件 @
7ecd092
...
...
@@ -16,6 +16,7 @@
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.security.service.po.User
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -33,6 +34,11 @@ import java.util.Set;
public
interface
IUserManager
extends
IBaseManager
<
User
>
{
/**
* 其他人编辑用户信息
* @param user
*/
void
update
(
User
user
);
/**
* 根据用户名查询
* @param userName /
* @return /
...
...
@@ -50,4 +56,10 @@ public interface IUserManager extends IBaseManager<User> {
* @param resources /
*/
void
updateCenter
(
User
resources
);
/**
* 删除用户
* @param ids
*/
void
deleteUsers
(
Set
<
String
>
ids
)
throws
ValidateException
;
}
src/main/java/com/neotel/smfcore/security/service/manager/impl/GroupManagerImpl.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.security.service.dao.IGroupDao
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.po.Group
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
public
class
GroupManagerImpl
implements
IGroupManager
{
@Autowired
IGroupDao
groupDao
;
@Override
public
Group
get
(
String
id
)
{
return
groupDao
.
findOneById
(
id
);
}
@Override
public
Group
save
(
Group
object
)
throws
ValidateException
{
return
groupDao
.
save
(
object
);
}
@Override
public
void
delete
(
Group
object
)
throws
ValidateException
{
groupDao
.
removeOne
(
object
);
}
@Override
public
List
<
Group
>
findByPage
(
Query
query
,
Pageable
pageable
)
{
return
groupDao
.
findByQuery
(
query
,
pageable
);
}
@Override
public
List
<
Group
>
findByQuery
(
Query
query
)
{
return
groupDao
.
findByQuery
(
query
);
}
}
src/main/java/com/neotel/smfcore/security/service/manager/impl/MenuManagerImpl.java
查看文件 @
7ecd092
...
...
@@ -3,12 +3,12 @@ package com.neotel.smfcore.security.service.manager.impl;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.security.rest.bean.dto.MenuDto
;
import
com.neotel.smfcore.security.rest.bean.vo.MenuMetaVo
;
import
com.neotel.smfcore.security.rest.bean.vo.MenuVo
;
import
com.neotel.smfcore.security.service.dao.IMenuDao
;
import
com.neotel.smfcore.security.service.dao.IRoleDao
;
import
com.neotel.smfcore.security.service.manager.IMenuManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
...
...
@@ -22,6 +22,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -65,7 +67,9 @@ public class MenuManagerImpl implements IMenuManager {
Role
role
=
roleManager
.
get
(
roleId
);
if
(
role
!=
null
){
Criteria
c
=
Criteria
.
where
(
"id"
).
in
(
role
.
getMenus
());
c
.
and
(
"type"
).
ne
(
2
);
Query
query
=
new
Query
(
c
);
query
.
with
(
Sort
.
by
(
Sort
.
Direction
.
ASC
,
"menuSort"
));
List
<
Menu
>
menus
=
findByQuery
(
query
);
return
buildTree
(
menus
);
}
...
...
@@ -76,13 +80,7 @@ public class MenuManagerImpl implements IMenuManager {
public
List
<
Menu
>
findByUserId
(
String
currentUserId
)
{
User
user
=
userManager
.
get
(
currentUserId
);
if
(
user
!=
null
){
Role
role
=
roleManager
.
get
(
user
.
getRoleId
());
if
(
role
!=
null
){
Criteria
c
=
Criteria
.
where
(
"id"
).
in
(
role
.
getMenus
());
Query
query
=
new
Query
(
c
);
List
<
Menu
>
menus
=
findByQuery
(
query
);
return
buildTree
(
menus
);
}
return
findByRoleId
(
user
.
getRoleId
());
}
return
new
ArrayList
<
Menu
>();
}
...
...
@@ -115,7 +113,7 @@ public class MenuManagerImpl implements IMenuManager {
public
List
<
MenuVo
>
buildMenus
(
List
<
MenuDto
>
menuDtos
)
{
List
<
MenuVo
>
list
=
new
LinkedList
<>()
;
menuDtos
.
forEach
(
menuDto
->
{
if
(
menuDto
!=
null
){
if
(
menuDto
!=
null
&&
menuDto
.
getType
()<=
1
){
List
<
MenuDto
>
menuDtoList
=
menuDto
.
getChildren
();
MenuVo
menuVo
=
new
MenuVo
();
menuVo
.
setName
(
ObjectUtil
.
isNotEmpty
(
menuDto
.
getComponentName
())?
menuDto
.
getComponentName
():
menuDto
.
getTitle
());
...
...
@@ -162,5 +160,76 @@ public class MenuManagerImpl implements IMenuManager {
return
list
;
}
@Override
public
List
<
Menu
>
getMenusByPid
(
String
pid
)
{
List
<
Menu
>
menus
;
if
(
pid
!=
null
&&
!
pid
.
equals
(
""
)){
menus
=
menuDao
.
findByPid
(
pid
);
}
else
{
menus
=
menuDao
.
findByPid
(
""
);
}
return
menus
;
}
@Override
public
List
<
Menu
>
getSuperior
(
Menu
menu
,
List
<
Menu
>
menus
)
{
if
(
menu
!=
null
&&
menu
.
getPid
().
equals
(
""
)){
menus
.
addAll
(
menuDao
.
findByPid
(
menu
.
getPid
()));
return
menus
;
}
menus
.
addAll
(
menuDao
.
findByPid
(
menu
.
getPid
()));
return
getSuperior
(
get
(
menu
.
getPid
()),
menus
);
}
@Override
public
void
download
(
List
<
Menu
>
menuDtos
,
HttpServletResponse
response
)
throws
IOException
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
for
(
Menu
menu
:
menuDtos
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"菜单标题"
,
menu
.
getTitle
());
map
.
put
(
"菜单类型"
,
menu
.
getType
()
==
null
?
"目录"
:
menu
.
getType
()
==
1
?
"菜单"
:
"按钮"
);
map
.
put
(
"权限标识"
,
menu
.
getPermission
());
map
.
put
(
"外链菜单"
,
menu
.
getIFrame
()
?
"是"
:
"否"
);
map
.
put
(
"菜单可见"
,
menu
.
getHidden
()
?
"否"
:
"是"
);
map
.
put
(
"是否缓存"
,
menu
.
getCache
()
?
"是"
:
"否"
);
list
.
add
(
map
);
}
FileUtil
.
downloadExcel
(
list
,
response
);
}
@Override
public
Set
<
Menu
>
getChildMenus
(
List
<
Menu
>
menuList
,
Set
<
Menu
>
menuSet
)
{
for
(
Menu
menu
:
menuList
)
{
menuSet
.
add
(
menu
);
List
<
Menu
>
menus
=
menuDao
.
findByPid
(
menu
.
getId
());
if
(
menus
!=
null
&&
menus
.
size
()!=
0
){
getChildMenus
(
menus
,
menuSet
);
}
}
return
menuSet
;
}
@Override
public
void
delete
(
Set
<
Menu
>
menuSet
)
{
for
(
Menu
menu
:
menuSet
)
{
// 清理缓存
// delCaches(menu.getId());
// roleService.untiedMenu(menu.getId());
// menuDao.removeOneById(menu.getId());
// updateSubCnt(menu.getPid());
}
}
// /**
// * 清理缓存
// * @param id 菜单ID
// */
// public void delCaches(Long id){
// List<User> users = userManager.findByMenuId(id);
// redisUtils.del(CacheKey.MENU_ID + id);
// redisUtils.delByKeys(CacheKey.MENU_USER, users.stream().map(User::getId).collect(Collectors.toSet()));
// // 清除 Role 缓存
// List<Role> roles = roleService.findInMenuId(new ArrayList<Long>(){{
// add(id);
// }});
// redisUtils.delByKeys(CacheKey.ROLE_ID, roles.stream().map(Role::getId).collect(Collectors.toSet()));
// }
}
src/main/java/com/neotel/smfcore/security/service/manager/impl/UserManagerImpl.java
查看文件 @
7ecd092
...
...
@@ -12,7 +12,10 @@ import org.springframework.data.mongodb.core.query.Criteria;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Update
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
/**
* Created by kangmor on 2015/12/1.
...
...
@@ -36,10 +39,41 @@ public class UserManagerImpl implements IUserManager {
Update
update
=
Update
.
update
(
"password"
,
"password"
);
userDao
.
updateFirst
(
query
,
update
);
}
@Override
public
void
update
(
User
user
)
{
User
dataUser
=
this
.
get
(
user
.
getId
());
if
(
dataUser
!=
null
){
// 如果用户被禁用,则清除用户登录信息
if
(!
user
.
getEnabled
()){
}
dataUser
.
setUsername
(
user
.
getUsername
());
dataUser
.
setEmail
(
user
.
getEmail
());
dataUser
.
setEnabled
(
user
.
getEnabled
());
dataUser
.
setIsAdmin
(
user
.
getIsAdmin
());;
dataUser
.
setRoleId
(
user
.
getRoleId
());
dataUser
.
setGroups
(
user
.
getGroups
());
userDao
.
save
(
dataUser
);
}
}
@Override
public
void
updateCenter
(
User
resources
)
{
userDao
.
save
(
resources
);
User
dataUser
=
this
.
get
(
resources
.
getId
());
if
(
dataUser
!=
null
){
dataUser
.
setEmail
(
resources
.
getEmail
());
}
userDao
.
save
(
dataUser
);
}
@Override
public
void
deleteUsers
(
Set
<
String
>
ids
)
throws
ValidateException
{
for
(
String
id:
ids
)
{
User
user
=
get
(
id
);
if
(
user
!=
null
){
this
.
delete
(
user
);
}
}
}
@Override
...
...
src/main/java/com/neotel/smfcore/security/service/po/Group.java
0 → 100644
查看文件 @
7ecd092
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
Group
extends
BasePo
implements
Serializable
{
private
String
groupName
;
}
src/main/java/com/neotel/smfcore/security/service/po/Menu.java
查看文件 @
7ecd092
...
...
@@ -20,6 +20,7 @@ import lombok.*;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -102,4 +103,56 @@ public class Menu extends BasePo implements Serializable {
}
public
String
getPermission
(){
return
permission
;}
/**
* 此方法用于构建一级菜单,type=1
* @param children
* @param type
* @param permission
* @param title
* @param menuSort
* @param path
* @param component
* @param pid
* @param subCount
* @param icon
*/
public
Menu
(
final
List
<
Menu
>
children
,
final
Integer
type
,
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
String
component
,
final
String
pid
,
final
Integer
subCount
,
final
String
icon
)
{
this
.
children
=
children
;
this
.
permission
=
permission
;
this
.
type
=
type
;
this
.
title
=
title
;
this
.
menuSort
=
menuSort
;
this
.
path
=
path
;
this
.
component
=
component
;
this
.
pid
=
pid
;
this
.
subCount
=
subCount
;
this
.
iFrame
=
false
;
this
.
cache
=
false
;
this
.
hidden
=
false
;
this
.
componentName
=
title
;
this
.
icon
=
icon
;
}
/**
* 此方法用于构建权限菜单,type=2
* @param permission
* @param title
* @param menuSort
* @param pid
*/
public
Menu
(
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
pid
)
{
this
.
children
=
new
ArrayList
<
Menu
>();
this
.
type
=
2
;
this
.
permission
=
permission
;
this
.
title
=
title
;
this
.
menuSort
=
menuSort
;
this
.
path
=
""
;
this
.
component
=
""
;
this
.
pid
=
pid
;
this
.
subCount
=
0
;
this
.
iFrame
=
false
;
this
.
cache
=
false
;
this
.
hidden
=
false
;
this
.
componentName
=
title
;
this
.
icon
=
""
;
}
}
src/main/java/com/neotel/smfcore/security/service/po/User.java
查看文件 @
7ecd092
...
...
@@ -22,6 +22,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.Set
;
/**
* @author Zheng Jie
...
...
@@ -50,4 +51,6 @@ public class User extends BasePo implements Serializable {
private
Date
pwdResetTime
;
private
Set
<
String
>
groups
;
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论