| package com.javaweb.web.controller.system; | 
|   | 
| import java.util.List; | 
| import org.apache.shiro.authz.annotation.RequiresPermissions; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Controller; | 
| import org.springframework.ui.ModelMap; | 
| import org.springframework.validation.annotation.Validated; | 
| import org.springframework.web.bind.annotation.GetMapping; | 
| import org.springframework.web.bind.annotation.PathVariable; | 
| import org.springframework.web.bind.annotation.PostMapping; | 
| import org.springframework.web.bind.annotation.RequestMapping; | 
| import org.springframework.web.bind.annotation.ResponseBody; | 
| import com.javaweb.common.annotation.Log; | 
| import com.javaweb.common.constant.UserConstants; | 
| import com.javaweb.common.core.controller.BaseController; | 
| import com.javaweb.common.core.domain.AjaxResult; | 
| import com.javaweb.common.core.domain.Ztree; | 
| import com.javaweb.common.enums.BusinessType; | 
| import com.javaweb.framework.util.ShiroUtils; | 
| import com.javaweb.system.domain.SysMenu; | 
| import com.javaweb.system.domain.SysRole; | 
| import com.javaweb.system.service.ISysMenuService; | 
|   | 
| /** | 
|  * 菜单信息 | 
|  *  | 
|  * @author javaweb | 
|  */ | 
| @Controller | 
| @RequestMapping("/system/menu") | 
| public class SysMenuController extends BaseController | 
| { | 
|     private String prefix = "system/menu"; | 
|   | 
|     @Autowired | 
|     private ISysMenuService menuService; | 
|   | 
|     @RequiresPermissions("system:menu:view") | 
|     @GetMapping() | 
|     public String menu() | 
|     { | 
|         return prefix + "/menu"; | 
|     } | 
|   | 
|     @RequiresPermissions("system:menu:list") | 
|     @PostMapping("/list") | 
|     @ResponseBody | 
|     public List<SysMenu> list(SysMenu menu) | 
|     { | 
|         Long userId = ShiroUtils.getUserId(); | 
|         List<SysMenu> menuList = menuService.selectMenuList(menu, userId); | 
|         return menuList; | 
|     } | 
|   | 
|     /** | 
|      * 删除菜单 | 
|      */ | 
|     @Log(title = "菜单管理", businessType = BusinessType.DELETE) | 
|     @RequiresPermissions("system:menu:remove") | 
|     @GetMapping("/remove/{menuId}") | 
|     @ResponseBody | 
|     public AjaxResult remove(@PathVariable("menuId") Long menuId) | 
|     { | 
|         if (menuService.selectCountMenuByParentId(menuId) > 0) | 
|         { | 
|             return AjaxResult.warn("存在子菜单,不允许删除"); | 
|         } | 
|         if (menuService.selectCountRoleMenuByMenuId(menuId) > 0) | 
|         { | 
|             return AjaxResult.warn("菜单已分配,不允许删除"); | 
|         } | 
|         ShiroUtils.clearCachedAuthorizationInfo(); | 
|         return toAjax(menuService.deleteMenuById(menuId)); | 
|     } | 
|   | 
|     /** | 
|      * 新增 | 
|      */ | 
|     @GetMapping("/add/{parentId}") | 
|     public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) | 
|     { | 
|         SysMenu menu = null; | 
|         if (0L != parentId) | 
|         { | 
|             menu = menuService.selectMenuById(parentId); | 
|         } | 
|         else | 
|         { | 
|             menu = new SysMenu(); | 
|             menu.setMenuId(0L); | 
|             menu.setMenuName("主目录"); | 
|         } | 
|         mmap.put("menu", menu); | 
|         return prefix + "/add"; | 
|     } | 
|   | 
|     /** | 
|      * 新增保存菜单 | 
|      */ | 
|     @Log(title = "菜单管理", businessType = BusinessType.INSERT) | 
|     @RequiresPermissions("system:menu:add") | 
|     @PostMapping("/add") | 
|     @ResponseBody | 
|     public AjaxResult addSave(@Validated SysMenu menu) | 
|     { | 
|         if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) | 
|         { | 
|             return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); | 
|         } | 
|         menu.setCreateBy(ShiroUtils.getLoginName()); | 
|         ShiroUtils.clearCachedAuthorizationInfo(); | 
|         return toAjax(menuService.insertMenu(menu)); | 
|     } | 
|   | 
|     /** | 
|      * 修改菜单 | 
|      */ | 
|     @GetMapping("/edit/{menuId}") | 
|     public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap) | 
|     { | 
|         mmap.put("menu", menuService.selectMenuById(menuId)); | 
|         return prefix + "/edit"; | 
|     } | 
|   | 
|     /** | 
|      * 修改保存菜单 | 
|      */ | 
|     @Log(title = "菜单管理", businessType = BusinessType.UPDATE) | 
|     @RequiresPermissions("system:menu:edit") | 
|     @PostMapping("/edit") | 
|     @ResponseBody | 
|     public AjaxResult editSave(@Validated SysMenu menu) | 
|     { | 
|         if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) | 
|         { | 
|             return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); | 
|         } | 
|         menu.setUpdateBy(ShiroUtils.getLoginName()); | 
|         ShiroUtils.clearCachedAuthorizationInfo(); | 
|         return toAjax(menuService.updateMenu(menu)); | 
|     } | 
|   | 
|     /** | 
|      * 选择菜单图标 | 
|      */ | 
|     @GetMapping("/icon") | 
|     public String icon() | 
|     { | 
|         return prefix + "/icon"; | 
|     } | 
|   | 
|     /** | 
|      * 校验菜单名称 | 
|      */ | 
|     @PostMapping("/checkMenuNameUnique") | 
|     @ResponseBody | 
|     public String checkMenuNameUnique(SysMenu menu) | 
|     { | 
|         return menuService.checkMenuNameUnique(menu); | 
|     } | 
|   | 
|     /** | 
|      * 加载角色菜单列表树 | 
|      */ | 
|     @GetMapping("/roleMenuTreeData") | 
|     @ResponseBody | 
|     public List<Ztree> roleMenuTreeData(SysRole role) | 
|     { | 
|         Long userId = ShiroUtils.getUserId(); | 
|         List<Ztree> ztrees = menuService.roleMenuTreeData(role, userId); | 
|         return ztrees; | 
|     } | 
|   | 
|     /** | 
|      * 加载所有菜单列表树 | 
|      */ | 
|     @GetMapping("/menuTreeData") | 
|     @ResponseBody | 
|     public List<Ztree> menuTreeData() | 
|     { | 
|         Long userId = ShiroUtils.getUserId(); | 
|         List<Ztree> ztrees = menuService.menuTreeData(userId); | 
|         return ztrees; | 
|     } | 
|   | 
|     /** | 
|      * 选择菜单树 | 
|      */ | 
|     @GetMapping("/selectMenuTree/{menuId}") | 
|     public String selectMenuTree(@PathVariable("menuId") Long menuId, ModelMap mmap) | 
|     { | 
|         mmap.put("menu", menuService.selectMenuById(menuId)); | 
|         return prefix + "/tree"; | 
|     } | 
| } |