package com.usky.controller.sys; import com.usky.annotion.AutoLog; import com.usky.entity.sys.SysMenuDTO; import com.usky.entity.sys.vo.SysMenuVO; import com.usky.entity.sys.vo.SysUserVO; import com.usky.service.sys.menuService.MenuService; import com.usky.utils.AuthorizationUtils; import com.usky.utils.ListUtil; import com.usky.utils.Result; import com.usky.utils.ShiroUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author laowo * @version v1.0 * @date 2021/8/25 15:23 * @description TODO **/ @RestController @Api(tags = "系统-菜单") @RequestMapping("sys/menu") public class MenuController { private String prefix = "sys/menu"; @ApiOperation(value = "菜单-页面鉴权") @RequiresPermissions("system:menu:view") @GetMapping() public String menu() { return prefix + "/menu"; } @Autowired private MenuService menuService; @GetMapping("indexMenu") @ApiOperation(value = "首页菜单加载") public Result> queryMenu() { SysUserVO sysUserVo = ShiroUtils.getSysUserVo(); List data = menuService.queryMenuList(sysUserVo); return Result.OK(data); } @ApiOperation(value = "菜单管理-列表") @RequiresPermissions("system:menu:list") @PostMapping("/list") @ResponseBody @ApiImplicitParams({ @ApiImplicitParam(name = "menuName", value = "菜单名称", required = false, paramType = "query"), @ApiImplicitParam(name = "visible", value = "菜单状态(0显示 1隐藏)", required = false, paramType = "query"), }) public Result> list(@RequestParam(value = "menuName", required = false) String menuName, @RequestParam(value = "visible", required = false) String visible ) { Integer userId = ShiroUtils.getUserVOId(); List menuList = menuService.list(new SysMenuVO(), menuName, visible, userId); return Result.OK(menuList); } /** * 删除菜单 */ @AutoLog("菜单删除") @ApiOperation(value = "菜单管理-删除") @RequiresPermissions("system:menu:remove") @PostMapping("remove") @ResponseBody public Result remove(@RequestParam("menuId") Integer menuId) { if (menuService.queryMenuById(menuId) > 0) { return Result.error("存在子菜单,不允许删除"); } if (menuService.queryRoleMenuByMenuId(menuId) > 0) { return Result.error("菜单已分配,不允许删除"); } AuthorizationUtils.clearAllCachedAuthorizationInfo(); menuService.deleteMenuById(menuId); return Result.OK(); } /** * 新增保存菜单 */ @AutoLog("新增菜单") @ApiOperation(value = "菜单管理-新增") @RequiresPermissions("system:menu:add") @PostMapping("/add") @ResponseBody public Result addSave(@Validated SysMenuVO menu) { //查询同一父级菜单名称是否重复 List sysMenuDTOS = menuService.queryMenuByName(menu.getMenuName(), menu.getParentId()); if (ListUtil.isNotBlank(sysMenuDTOS)) { return Result.error("菜单名称重复!"); } AuthorizationUtils.clearAllCachedAuthorizationInfo(); menuService.add(menu); return Result.OK(); } /** * 菜单修改 */ @AutoLog("菜单修改") @ApiOperation(value = "菜单管理-修改") @RequiresPermissions("system:menu:edit") @PostMapping("/edit") @ResponseBody public Result editSave(@Validated SysMenuVO menu) { List sysMenuDTOS = menuService.queryMenuByName(menu.getMenuName(), menu.getParentId()); if (ListUtil.isNotBlank(sysMenuDTOS)) { return Result.error("菜单名称重复!"); } AuthorizationUtils.clearAllCachedAuthorizationInfo(); menuService.updateMenu(menu); return Result.OK(); } }