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;
|
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")
|
@GetMapping("/tree")
|
||||||
public List<MenuVo> tree(@AuthenticationPrincipal UserDetailsImpl userDetails, @RequestParam String name) {
|
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);
|
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 com.zsc.edu.gateway.modules.system.vo.MenuVo;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -39,11 +40,12 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Menu create(MenuDto dto) {
|
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("该菜单名已存在!请检查输入表单是否出错!");
|
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("该权限已存在!请检查输入表单是否出错!");
|
throw new ConstraintException("该权限已存在!请检查输入表单是否出错!");
|
||||||
}
|
}
|
||||||
Menu menu = mapper.toEntity(dto);
|
Menu menu = mapper.toEntity(dto);
|
||||||
@ -52,6 +54,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Menu update(MenuDto dto, Long id) {
|
public Menu update(MenuDto dto, Long id) {
|
||||||
Menu menu = baseMapper.selectById(id);
|
Menu menu = baseMapper.selectById(id);
|
||||||
if (menu == null) {
|
if (menu == null) {
|
||||||
@ -70,7 +73,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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> menuVos = selectByUserId(userDetails.getId(), Menu.Type.PAGE).stream().map(MenuVo::new).toList();
|
||||||
|
|
||||||
List<MenuVo> menuTrees = TreeUtil.makeTree(
|
List<MenuVo> menuTrees = TreeUtil.makeTree(
|
||||||
@ -79,7 +82,9 @@ public class MenuServiceImpl extends ServiceImpl<MenuRepository, Menu> implement
|
|||||||
(parent, child) -> parent.getId().equals(child.getPid()),
|
(parent, child) -> parent.getId().equals(child.getPid()),
|
||||||
MenuVo::setChildren
|
MenuVo::setChildren
|
||||||
);
|
);
|
||||||
|
if (Objects.equals(name, "all")) {
|
||||||
|
return menuTrees;
|
||||||
|
}
|
||||||
if (Objects.nonNull(name)) {
|
if (Objects.nonNull(name)) {
|
||||||
Menu menu = baseMapper.selectOne(new LambdaQueryWrapper<Menu>().eq(Menu::getName, name));
|
Menu menu = baseMapper.selectOne(new LambdaQueryWrapper<Menu>().eq(Menu::getName, name));
|
||||||
if (menu == null) {
|
if (menu == null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user