Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
3595f182
Commit
3595f182
authored
Aug 27, 2019
by
dqjdda
Browse files
修复3级菜单删除不了的BUG
parent
2371fab0
Changes
4
Hide whitespace changes
Inline
Side-by-side
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java
View file @
3595f182
...
...
@@ -16,7 +16,9 @@ import org.springframework.http.ResponseEntity;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author Zheng Jie
...
...
@@ -90,14 +92,10 @@ public class MenuController {
@PreAuthorize
(
"hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')"
)
public
ResponseEntity
delete
(
@PathVariable
Long
id
){
List
<
Menu
>
menuList
=
menuService
.
findByPid
(
id
);
// 特殊情况,对级联删除进行处理
for
(
Menu
menu
:
menuList
)
{
roleService
.
untiedMenu
(
menu
);
menuService
.
delete
(
menu
.
getId
());
}
roleService
.
untiedMenu
(
menuService
.
findOne
(
id
));
menuService
.
delete
(
id
);
Set
<
Menu
>
menuSet
=
new
HashSet
<>();
menuSet
.
add
(
menuService
.
findOne
(
id
));
menuSet
=
menuService
.
getDeleteMenus
(
menuList
,
menuSet
);
menuService
.
delete
(
menuSet
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java
View file @
3595f182
...
...
@@ -9,6 +9,7 @@ import org.springframework.cache.annotation.CacheEvict;
import
org.springframework.cache.annotation.Cacheable
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* @author Zheng Jie
...
...
@@ -49,11 +50,12 @@ public interface MenuService {
void
update
(
Menu
resources
);
/**
* delete
* @param id
* getDeleteMenus
* @param menuList
* @param menuSet
* @return
*/
@CacheEvict
(
allEntries
=
true
)
void
delete
(
Long
id
);
Set
<
Menu
>
getDeleteMenus
(
List
<
Menu
>
menuList
,
Set
<
Menu
>
menuSet
);
/**
* permission tree
...
...
@@ -92,4 +94,11 @@ public interface MenuService {
Object
buildMenus
(
List
<
MenuDTO
>
byRoles
);
Menu
findOne
(
Long
id
);
/**
* delete
* @param menuSet
*/
@CacheEvict
(
allEntries
=
true
)
void
delete
(
Set
<
Menu
>
menuSet
);
}
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java
View file @
3595f182
...
...
@@ -10,6 +10,7 @@ import me.zhengjie.exception.BadRequestException;
import
me.zhengjie.exception.EntityExistException
;
import
me.zhengjie.modules.system.repository.MenuRepository
;
import
me.zhengjie.modules.system.service.MenuService
;
import
me.zhengjie.modules.system.service.RoleService
;
import
me.zhengjie.modules.system.service.dto.MenuDTO
;
import
me.zhengjie.modules.system.service.dto.MenuQueryCriteria
;
import
me.zhengjie.modules.system.service.dto.RoleSmallDTO
;
...
...
@@ -34,6 +35,9 @@ public class MenuServiceImpl implements MenuService {
@Autowired
private
MenuMapper
menuMapper
;
@Autowired
private
RoleService
roleService
;
@Override
public
List
queryAll
(
MenuQueryCriteria
criteria
){
return
menuMapper
.
toDto
(
menuRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
...
...
@@ -114,8 +118,25 @@ public class MenuServiceImpl implements MenuService {
}
@Override
public
void
delete
(
Long
id
)
{
menuRepository
.
deleteById
(
id
);
public
Set
<
Menu
>
getDeleteMenus
(
List
<
Menu
>
menuList
,
Set
<
Menu
>
menuSet
)
{
// 递归找出待删除的菜单
for
(
Menu
menu1
:
menuList
)
{
menuSet
.
add
(
menu1
);
List
<
Menu
>
menus
=
menuRepository
.
findByPid
(
menu1
.
getId
());
if
(
menus
!=
null
&&
menus
.
size
()!=
0
){
getDeleteMenus
(
menus
,
menuSet
);
}
}
return
menuSet
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Set
<
Menu
>
menuSet
)
{
for
(
Menu
menu
:
menuSet
)
{
roleService
.
untiedMenu
(
menu
);
menuRepository
.
deleteById
(
menu
.
getId
());
}
}
@Override
...
...
sql/eladmin.sql
View file @
3595f182
...
...
@@ -241,7 +241,7 @@ INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'ne
INSERT
INTO
`menu`
VALUES
(
24
,
'2019-01-04 16:24:48'
,
b
'0'
,
'三级菜单1'
,
'nested/menu1/menu1-1'
,
22
,
999
,
'menu'
,
'menu1-1'
,
b
'0'
,
b
'0'
,
NULL
);
INSERT
INTO
`menu`
VALUES
(
27
,
'2019-01-07 17:27:32'
,
b
'0'
,
'三级菜单2'
,
'nested/menu1/menu1-2'
,
22
,
999
,
'menu'
,
'menu1-2'
,
b
'0'
,
b
'0'
,
NULL
);
INSERT
INTO
`menu`
VALUES
(
28
,
'2019-01-07 20:34:40'
,
b
'0'
,
'定时任务'
,
'system/timing/index'
,
36
,
21
,
'timing'
,
'timing'
,
b
'0'
,
b
'0'
,
'Timing'
);
INSERT
INTO
`menu`
VALUES
(
30
,
'2019-01-11 15:45:55'
,
b
'0'
,
'代码生成'
,
'generator/index'
,
36
,
22
,
'dev'
,
'generator'
,
b
'0'
,
b
'0'
,
'Generator'
);
INSERT
INTO
`menu`
VALUES
(
30
,
'2019-01-11 15:45:55'
,
b
'0'
,
'代码生成'
,
'generator/index'
,
36
,
22
,
'dev'
,
'generator'
,
b
'0'
,
b
'0'
,
'Generator
Index
'
);
INSERT
INTO
`menu`
VALUES
(
32
,
'2019-01-13 13:49:03'
,
b
'0'
,
'异常日志'
,
'monitor/log/errorLog'
,
6
,
12
,
'error'
,
'errorLog'
,
b
'0'
,
b
'0'
,
'ErrorLog'
);
INSERT
INTO
`menu`
VALUES
(
33
,
'2019-03-08 13:46:44'
,
b
'0'
,
'Markdown'
,
'components/MarkDown'
,
10
,
53
,
'markdown'
,
'markdown'
,
b
'0'
,
b
'0'
,
'Markdown'
);
INSERT
INTO
`menu`
VALUES
(
34
,
'2019-03-08 15:49:40'
,
b
'0'
,
'Yaml编辑器'
,
'components/YamlEdit'
,
10
,
54
,
'dev'
,
'yaml'
,
b
'0'
,
b
'0'
,
'YamlEdit'
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment