mirror of https://github.com/elunez/eladmin
修复3级菜单删除不了的BUG
parent
2371fab065
commit
3595f182d1
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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', 'GeneratorIndex');
|
||||
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');
|
||||
|
|
Loading…
Reference in New Issue