/** * Copyright © 2015-2020 JeePlus All rights reserved. */ package com.jeeplus.modules.sys.web; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.jeeplus.common.config.Global; import com.jeeplus.common.utils.StringUtils; import com.jeeplus.common.web.BaseController; import com.jeeplus.modules.sys.entity.Menu; import com.jeeplus.modules.sys.service.SystemService; import com.jeeplus.modules.sys.utils.UserUtils; /** * 菜单Controller * @author jeeplus * @version 2013-3-23 */ @Controller @RequestMapping(value = "${adminPath}/sys/menu") public class MenuController extends BaseController { @Autowired private SystemService systemService; @ModelAttribute("menu") public Menu get(@RequestParam(required=false) String id) { if (StringUtils.isNotBlank(id)){ return systemService.getMenu(id); }else{ return new Menu(); } } @RequiresPermissions("sys:menu:list") @RequestMapping(value = {"list", ""}) public String list(Model model) { List list = Lists.newArrayList(); List sourcelist = systemService.findAllMenu(); Menu.sortList(list, sourcelist, Menu.getRootId(), true); model.addAttribute("list", list); return "modules/sys/menuList"; } @RequiresPermissions(value={"sys:menu:view","sys:menu:add","sys:menu:edit"},logical=Logical.OR) @RequestMapping(value = "form") public String form(Menu menu, Model model) { if (menu.getParent()==null||menu.getParent().getId()==null){ menu.setParent(new Menu(Menu.getRootId())); } menu.setParent(systemService.getMenu(menu.getParent().getId())); // 获取排序号,最末节点排序号+30 if (StringUtils.isBlank(menu.getId())){ List list = Lists.newArrayList(); List sourcelist = systemService.findAllMenu(); Menu.sortList(list, sourcelist, menu.getParentId(), false); if (list.size() > 0){ menu.setSort(list.get(list.size()-1).getSort() + 30); } } model.addAttribute("menu", menu); return "modules/sys/menuForm"; } @RequiresPermissions(value={"sys:menu:add","sys:menu:edit"},logical=Logical.OR) @RequestMapping(value = "save") public String save(Menu menu, Model model, RedirectAttributes redirectAttributes) { if(!UserUtils.getUser().isAdmin()){ addMessage(redirectAttributes, "越权操作,只有超级管理员才能添加或修改数据!"); return "redirect:" + adminPath + "/sys/role/?repage"; } if(Global.isDemoMode()){ addMessage(redirectAttributes, "演示模式,不允许操作!"); return "redirect:" + adminPath + "/sys/menu/"; } if (!beanValidator(model, menu)){ return form(menu, model); } systemService.saveMenu(menu); addMessage(redirectAttributes, "保存菜单'" + menu.getName() + "'成功"); return "redirect:" + adminPath + "/sys/menu/"; } @RequiresPermissions("sys:menu:del") @RequestMapping(value = "delete") public String delete(Menu menu, RedirectAttributes redirectAttributes) { if(Global.isDemoMode()){ addMessage(redirectAttributes, "演示模式,不允许操作!"); return "redirect:" + adminPath + "/sys/menu/"; } // if (Menu.isRoot(id)){ // addMessage(redirectAttributes, "删除菜单失败, 不允许删除顶级菜单或编号为空"); // }else{ systemService.deleteMenu(menu); addMessage(redirectAttributes, "删除菜单成功"); // } return "redirect:" + adminPath + "/sys/menu/"; } @RequiresPermissions("sys:menu:del") @RequestMapping(value = "deleteAll") public String deleteAll(String ids, RedirectAttributes redirectAttributes) { if(Global.isDemoMode()){ addMessage(redirectAttributes, "演示模式,不允许操作!"); return "redirect:" + adminPath + "/sys/menu/"; } // if (Menu.isRoot(id)){ // addMessage(redirectAttributes, "删除菜单失败, 不允许删除顶级菜单或编号为空"); // }else{ String idArray[] =ids.split(","); for(String id : idArray){ Menu menu = systemService.getMenu(id); if(menu != null){ systemService.deleteMenu(systemService.getMenu(id)); } } addMessage(redirectAttributes, "删除菜单成功"); // } return "redirect:" + adminPath + "/sys/menu/"; } @RequiresPermissions("user") @RequestMapping(value = "tree") public String tree() { return "modules/sys/menuTree"; } @RequiresPermissions("user") @RequestMapping(value = "treeselect") public String treeselect(String parentId, Model model) { model.addAttribute("parentId", parentId); return "modules/sys/menuTreeselect"; } /** * 批量修改菜单排序 */ @RequiresPermissions("sys:menu:updateSort") @RequestMapping(value = "updateSort") public String updateSort(String[] ids, Integer[] sorts, RedirectAttributes redirectAttributes) { if(Global.isDemoMode()){ addMessage(redirectAttributes, "演示模式,不允许操作!"); return "redirect:" + adminPath + "/sys/menu/"; } for (int i = 0; i < ids.length; i++) { Menu menu = new Menu(ids[i]); menu.setSort(sorts[i]); systemService.updateMenuSort(menu); } addMessage(redirectAttributes, "保存菜单排序成功!"); return "redirect:" + adminPath + "/sys/menu/"; } /** * isShowHide是否显示隐藏菜单 * @param extId * @param isShowHidden * @param response * @return */ @RequiresPermissions("user") @ResponseBody @RequestMapping(value = "treeData") public List> treeData(@RequestParam(required=false) String extId,@RequestParam(required=false) String isShowHide, HttpServletResponse response) { List> mapList = Lists.newArrayList(); List list = systemService.findAllMenu(); for (int i=0; i map = Maps.newHashMap(); map.put("id", e.getId()); map.put("pId", e.getParentId()); map.put("name", e.getName()); mapList.add(map); } } return mapList; } }