/**
  * 选择上一级菜单。
  *
  * @return List<Map<String, Object>
  */
 @RequestMapping(value = "menuManage.do", params = "initSelectParentTree")
 @ResponseBody
 public List<Map<String, Object>> initSelectParentTree() {
   String rootCode = this.getUser().getOrgId();
   List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
   PMap pm = new PMap();
   if ((!StringUtil.isEmpty(rootCode)) && (!"244000000".equals(rootCode))) {
     pm.add("sjssjgDm", rootCode);
   } else {
     HashMap<String, Object> mtop = new HashMap<String, Object>();
     mtop.put("name", "菜单树");
     mtop.put("id", "0");
     mtop.put("pId", "");
     mtop.put("sortNo", 1);
     mtop.put("open", true);
     list.add(mtop);
   }
   List<Menu> menuList = this.menuService.findBy(pm, Order.ASC("sortNo"), Order.ASC("name"));
   for (Menu menu : menuList) {
     HashMap<String, Object> m = new HashMap<String, Object>();
     m.put("name", menu.getName());
     m.put("id", menu.getId());
     if ((menu.getParentId() != null) && (!"".equals(menu.getParentId()))) {
       m.put("pId", menu.getParentId());
     } else {
       m.put("pId", "0");
     }
     m.put("sortNo", menu.getSortNo());
     list.add(m);
   }
   return list;
 }
 /**
  * 获取菜单详细信息。
  *
  * @param id String
  * @return Menu
  */
 @RequestMapping(value = "menuManage.do", params = "getMenuDetail", produces = "application/json")
 @ResponseBody
 public Menu getMenuDetile(@RequestParam String id) {
   if (!"0".equals(id)) {
     Menu menu = this.menuService.find(id);
     if (!"0".equals(menu.getParentId()) && menu.getParentId() != null) {
       Menu parent = this.menuService.find(menu.getParentId());
       if (parent != null) {
         menu.setParentName(parent.getName());
         menu.setParentSjssjgDm(parent.getSjssjgDm());
       }
     } else {
       menu.setParentName("菜单树");
     }
     return menu;
   }
   return null;
 }
 /**
  * 菜单管理入口。
  *
  * @param map ModelMap
  * @return String
  */
 @RequestMapping("menuManage.do")
 public String init(ModelMap map) {
   List<Menu> menuList = this.menuService.list(Order.ASC("sortNo"), Order.ASC("name"));
   List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
   HashMap<String, Object> mtop = new HashMap<String, Object>();
   mtop.put("name", "菜单树");
   mtop.put("id", "0");
   mtop.put("pId", "");
   mtop.put("sortNo", 1);
   mtop.put("open", true);
   list.add(mtop);
   String rootCode = this.getUser().getOrgId();
   String userCode = this.getUser().getLoginId();
   for (Menu menu : menuList) {
     if (rootCode.equals(menu.getSjssjgDm())
         || StringUtil.isEmpty(menu.getSjssjgDm())
         || "1".equals(menu.getSjssjgDm())
         || "supadmin".equals(userCode)
         || "244000000".equals(rootCode)) {
       HashMap<String, Object> m = new HashMap<String, Object>();
       m.put("name", menu.getName());
       m.put("id", menu.getId());
       if ((menu.getParentId() != null) && (!"".equals(menu.getParentId()))) {
         m.put("pId", menu.getParentId());
       } else {
         m.put("pId", "0");
       }
       m.put("sortNo", menu.getSortNo());
       list.add(m);
     }
   }
   map.put("treeList", list);
   map.put("rootCode", rootCode);
   map.put("userCode", userCode);
   map.put("menu", new Menu());
   return "admin/menuManage";
 }
  /**
   * 保存菜单设置。
   *
   * @param menu Menu
   * @return String
   */
  @RequestMapping(value = "menuManage.do", params = "save")
  @ResponseBody
  public Map<String, Object> ok(@ModelAttribute Menu menu) {
    Map<String, Object> returnMap = new HashMap<String, Object>();
    if ("1".equals(menu.getVisible())) {
      menu.setVisible(BaseConstants.YESORNO_TYPE_YES);
    } else {
      menu.setVisible(BaseConstants.YESORNO_TYPE_NO);
    }

    menu.setContextRelative(BaseConstants.YESORNO_TYPE_YES);
    try {
      if ((menu.getParentId() == null) || ("0".equals(menu.getParentId()))) {
        menu.setParentId("");
      }
      if ((menu.getId() == null) || ("".equals(menu.getId()))) {
        menu.setSjssjgDm(this.getUser().getOrgId());
      }
      this.menuService.saveOrUpdate(menu);
      returnMap.put("returnCode", "1");
      Map<String, Object> treeNode = new HashMap<String, Object>();
      treeNode.put("name", menu.getName());
      treeNode.put("id", menu.getId());
      if (StringUtils.hasLength(menu.getParentId())) {
        treeNode.put("pId", menu.getParentId());
      } else {
        treeNode.put("pId", "0");
      }
      treeNode.put("sortNo", menu.getSortNo());
      returnMap.put("returnNode", treeNode);
    } catch (Exception e) {
      log.error("菜单更新失败", e);
      returnMap.put("returnCode", "0");
    }
    return returnMap;
  }