refactor(menu): 优化菜单相关接口并重构代码
- 移除 MenuController 中的 menu 方法- 修改 MenuService 接口中的方法名称,简化为 getTree- 在 MenuServiceImpl 中添加事务注解并优化查询逻辑 -增加对"all"名称的特殊处理,以适应不同场景需求
This commit is contained in:
parent
ea5179482d
commit
f1f2ce72de
@ -23,21 +23,6 @@ public class MenuController {
|
||||
|
||||
private final MenuService service;
|
||||
|
||||
|
||||
/**
|
||||
* 获取菜单树
|
||||
*/
|
||||
@GetMapping
|
||||
public List<MenuVo> menu(@AuthenticationPrincipal UserDetailsImpl userDetails) {
|
||||
List<MenuVo> list = service.selectByUserId(userDetails.getId(), Menu.Type.PAGE).stream().map(MenuVo::new).toList();
|
||||
return TreeUtil.makeTree(
|
||||
list,
|
||||
x -> x.getPid() == null,
|
||||
(x, y) -> x.getId().equals(y.getPid()),
|
||||
MenuVo::setChildren
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新建菜单
|
||||
*/
|
||||
@ -67,6 +52,6 @@ public class MenuController {
|
||||
*/
|
||||
@GetMapping("/tree")
|
||||
public List<MenuVo> tree(@AuthenticationPrincipal UserDetailsImpl userDetails, @RequestParam String name) {
|
||||
return service.getTreeByName(userDetails, name);
|
||||
return service.getTree(userDetails, name);
|
||||
}
|
||||
}
|
||||
|
@ -23,5 +23,5 @@ public interface MenuService extends IService<Menu> {
|
||||
|
||||
Boolean delete(Long id);
|
||||
|
||||
List<MenuVo> getTreeByName(UserDetailsImpl userDetails, String name);
|
||||
List<MenuVo> getTree(UserDetailsImpl userDetails, String name);
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import com.zsc.edu.gateway.modules.system.utils.TreeUtil;
|
||||
import com.zsc.edu.gateway.modules.system.vo.MenuVo;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -39,11 +40,12 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Menu create(MenuDto dto) {
|
||||
if (baseMapper.selectList(new LambdaQueryWrapper<Menu>().eq(Menu::getName, dto.getName())) != null) {
|
||||
if (baseMapper.exists(new LambdaQueryWrapper<Menu>().eq(Menu::getName, dto.getName()))) {
|
||||
throw new ConstraintException("该菜单名已存在!请检查输入表单是否出错!");
|
||||
}
|
||||
if (baseMapper.selectList(new LambdaQueryWrapper<Menu>().eq(Menu::getPermissions, dto.getPermissions())) != null) {
|
||||
if (baseMapper.exists(new LambdaQueryWrapper<Menu>().eq(Menu::getPermissions, dto.getPermissions()))) {
|
||||
throw new ConstraintException("该权限已存在!请检查输入表单是否出错!");
|
||||
}
|
||||
Menu menu = mapper.toEntity(dto);
|
||||
@ -52,6 +54,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Menu update(MenuDto dto, Long id) {
|
||||
Menu menu = baseMapper.selectById(id);
|
||||
if (menu == null) {
|
||||
@ -70,7 +73,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MenuVo> getTreeByName(UserDetailsImpl userDetails, String name) {
|
||||
public List<MenuVo> getTree(UserDetailsImpl userDetails, String name) {
|
||||
List<MenuVo> menuVos = selectByUserId(userDetails.getId(), Menu.Type.PAGE).stream().map(MenuVo::new).toList();
|
||||
|
||||
List<MenuVo> menuTrees = TreeUtil.makeTree(
|
||||
@ -79,7 +82,9 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
||||
(parent, child) -> parent.getId().equals(child.getPid()),
|
||||
MenuVo::setChildren
|
||||
);
|
||||
|
||||
if (Objects.equals(name, "all")) {
|
||||
return menuTrees;
|
||||
}
|
||||
if (Objects.nonNull(name)) {
|
||||
Menu menu = baseMapper.selectOne(new LambdaQueryWrapper<Menu>().eq(Menu::getName, name));
|
||||
if (menu == null) {
|
||||
|
Loading…
Reference in New Issue
Block a user