refactor(menu): 优化菜单相关接口并重构代码

- 移除 MenuController 中的 menu 方法- 修改 MenuService 接口中的方法名称,简化为 getTree- 在 MenuServiceImpl 中添加事务注解并优化查询逻辑
-增加对"all"名称的特殊处理,以适应不同场景需求
This commit is contained in:
zhuangtianxiang 2025-01-13 16:39:55 +08:00
parent ea5179482d
commit f1f2ce72de
3 changed files with 11 additions and 21 deletions

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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) {