From 33b2a56dc828bf8fdc36ed23d89d09e5f75782cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9D=8E?= <1040978436@qq.com> Date: Thu, 8 Jan 2026 18:44:24 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=8F=9C=E5=8D=95=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tacit/common/utils/ResCode.java | 1 + .../admin/controller/MenuController.java | 60 +++++++++++ .../com/tacit/admin/service/MenuService.java | 10 ++ .../admin/service/impl/MenuServiceImpl.java | 100 +++++++++++++++++- 4 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 tacit-admin/src/main/java/com/tacit/admin/controller/MenuController.java diff --git a/common/common-core/src/main/java/com/tacit/common/utils/ResCode.java b/common/common-core/src/main/java/com/tacit/common/utils/ResCode.java index 0cbd16b..06ff050 100644 --- a/common/common-core/src/main/java/com/tacit/common/utils/ResCode.java +++ b/common/common-core/src/main/java/com/tacit/common/utils/ResCode.java @@ -23,6 +23,7 @@ public enum ResCode { NO_PERMISSION(401, "用户没有该权限"), // 查询的数据或者前端传入的数据不存在 DATA_NOT_EXIST(9999, "不存在"), + DATA_EXIST(9990, "已存在"), SYSTEM_ERROR(9999, "系统内部错误"), diff --git a/tacit-admin/src/main/java/com/tacit/admin/controller/MenuController.java b/tacit-admin/src/main/java/com/tacit/admin/controller/MenuController.java new file mode 100644 index 0000000..4c36cea --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/controller/MenuController.java @@ -0,0 +1,60 @@ +package com.tacit.admin.controller; + +import com.tacit.admin.entity.Menu; +import com.tacit.admin.entity.User; +import com.tacit.admin.service.MenuService; +import com.tacit.admin.service.UserService; +import com.tacit.common.entity.ResponseResult; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/menu") +@Tag(name = "菜单管理", description = "用户管理相关接口") +public class MenuController { + + @Resource + private MenuService menuService; + + @Operation(summary = "获取所有菜单", description = "获取系统中所有菜单列表") + @GetMapping("/list") + public ResponseResult> getAllMenus(@RequestBody Menu menu) { + List menus = menuService.getAllMenus(menu); + return ResponseResult.success(menus); + } + @Operation(summary = "获取所有菜单", description = "获取系统中所有菜单树形列表") + @GetMapping("/listTree") + public ResponseResult> getListTree() { + List menus = menuService.getListTree(); + return ResponseResult.success(menus); + } + + @Operation(summary = "根据角色id获取所有菜单", description = "根据角色id获取所有菜单列表") + @GetMapping("/listByRoleId/{roleId}") + public ResponseResult> getAllMenus(@PathVariable Long roleId) { + List menus = menuService.getMenuListByRoleId(roleId); + return ResponseResult.success(menus); + } + @Operation(summary = "创建菜单", description = "创建新菜单") + @PostMapping("/create") + public ResponseResult createMenu(@RequestBody Menu menu) { + boolean result = menuService.createMenu(menu); + return ResponseResult.success(result); + } + @Operation(summary = "更新菜单", description = "更新菜单") + @PutMapping("/update") + public ResponseResult updateMenu(@RequestBody Menu menu) { + boolean result = menuService.updateMenu(menu); + return ResponseResult.success(result); + } + @Operation(summary = "删除菜单", description = "删除菜单") + @DeleteMapping("/delete/{menuId}") + public ResponseResult deleteMenu(@PathVariable Long menuId) { + boolean result = menuService.deleteMenu(menuId); + return ResponseResult.success(result); + } +} diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java b/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java index a25fe22..b0a7900 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java +++ b/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java @@ -8,6 +8,16 @@ import java.util.List; public interface MenuService extends IService { //根据角色id获取菜单列表 List getMenuListByRoleId(Long roleId); + //获取所有菜单 + List getAllMenus(Menu menu); + //获取所有菜单树形列表 + List getListTree(); + + boolean createMenu(Menu menu); + + boolean updateMenu(Menu menu); + + boolean deleteMenu(Long menuId); } diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java b/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java index 8ebe509..f23fdc6 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java +++ b/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java @@ -12,9 +12,12 @@ import com.tacit.admin.mapper.RoleMenuMapper; import com.tacit.admin.mapper.UserRoleMapper; import com.tacit.admin.service.MenuService; import com.tacit.admin.service.RoleService; +import com.tacit.common.exception.BusinessException; import com.tacit.common.redis.utils.RedisUtils; +import com.tacit.common.utils.ResCode; import com.tacit.common.utils.TreeUtils; import jakarta.annotation.Resource; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -38,11 +41,106 @@ public class MenuServiceImpl extends ServiceImpl implements Me if (roleMenuList != null && roleMenuList.size() > 0) { // 获取菜单id List menuIdList = roleMenuList.stream().map(RoleMenu::getMenuId).collect(Collectors.toList()); - List menuList = menuMapper.selectBatchIds(menuIdList); + // 根据菜单ids获取没删除的菜单列表 + QueryWrapper menuQueryWrapper = new QueryWrapper<>(); + menuQueryWrapper.eq("del_flag", 0); + menuQueryWrapper.in("menu_id", menuIdList); + List menuList = menuMapper.selectList(menuQueryWrapper); // 需要将MenuList转换成树形结构 menuList = TreeUtils.buildTree(menuList); return menuList; } return null; } + + @Override + public List getListTree() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", 0); + List menuList = menuMapper.selectList(queryWrapper); + // 需要将MenuList转换成树形结构 + menuList = TreeUtils.buildTree(menuList); + return menuList; + } + + @Override + public List getAllMenus(Menu menu) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", 0); + if (menu != null) { + queryWrapper.like(menu.getMenuName() != null, "menu_name", menu.getMenuName()); + } + List menuList = menuMapper.selectList(queryWrapper); + return menuList; + } + + @Override + public boolean createMenu(Menu menu) { + // 每个参数都要进行非空校验 + this.checkData(menu); + + menu.setDelFlag(0); + return this.save(menu); + + } + + @Override + public boolean updateMenu(Menu menu) { + // 菜单名称非空校验 + String menuName = menu.getMenuName(); + if (StringUtils.isEmpty(menuName)){ + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "菜单名称不能为空"); + } + // 菜单id非空校验 + Long menuId = menu.getMenuId(); + if (menuId == null){ + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "菜单id不能为空"); + } + + // 根据id查询菜单是否存在 + Menu menuById = getById(menuId); + if (menuById == null) { + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "菜单不存在"); + } + // 菜单名称唯一性校验 如果是自己就不用校验 + if (!menuName.equals(menuById.getMenuName())) { + Menu menuByName = getOne(new QueryWrapper().eq("menu_name", menuName).eq("del_flag", 0)); + if (menuByName != null) { + throw new BusinessException(ResCode.DATA_EXIST.getResultCode(), "菜单已存在"); + } + } + return this.updateById(menu); + } + + @Override + public boolean deleteMenu(Long menuId) { + // 菜单id非空校验 + if (menuId == null){ + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "菜单id不能为空"); + } + // 根据id查询菜单是否存在 + Menu menu = getById(menuId); + if (menu == null) { + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "菜单不存在"); + } + menu.setDelFlag(1); + return updateById(menu); + } + + private void checkData(Menu menu) { + String menuName = menu.getMenuName(); + if (StringUtils.isEmpty(menuName)){ + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "菜单名称不能为空"); + } + // 根据菜单名称查询菜单是否存在 + Menu menuByName = getOne(new QueryWrapper().eq("menu_name", menuName).eq("del_flag", 0)); + if (menuByName != null) { + throw new BusinessException(ResCode.DATA_EXIST.getResultCode(), "菜单已存在"); + } + Long parentId = menu.getParentId(); + if (parentId == null){ + throw new BusinessException(ResCode.NO_PARAM.getResultCode(), "父级菜单id不能为空"); + } + + } }