/** * 将用户分配的权限转换成主菜单的JSON数据,输出到前台 * * @param authorizedFuncs 用户分配的功能权限 * @param funcType 主菜单 * @return */ private String convertFuncsToMenu(List<FuncModel> authorizedFuncs, Integer funcType) { System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"); Collections.sort( authorizedFuncs, new Comparator<FuncModel>() { public int compare(FuncModel obj1, FuncModel obj2) { return obj2.getMenuSort() - obj1.getMenuSort(); } }); String webPath = getRequest().getContextPath(); /** 查找数据库的主菜单的顶级菜单项记录,然后将功能权限作为子菜单加入到顶级菜单中,如果顶级菜单下没有权限,将忽略不显示 */ String hsql = "from FuncModel where parentId = ? and funcType = ? and deleted = ? order by menuSort"; List<FuncModel> subSysFuncs = this.getBaseService().query(hsql, new Object[] {Integer.valueOf(-1), 1, false}); JSONArray jsonArray = new JSONArray(); for (FuncModel func : subSysFuncs) { List<FuncModel> childSysFuns = findChidFuncByParentId(func.getEntityId(), authorizedFuncs); JSONObject menuItem = new JSONObject(); menuItem.put("id", "" + func.getEntityId()); menuItem.put("text", func.getDescr()); menuItem.put("icon", func.getIcon()); JSONObject attributes = new JSONObject(); attributes.put("url", func.getUrl()); menuItem.put("attributes", attributes); JSONArray childMenuItems = new JSONArray(); for (FuncModel childSysFunc : childSysFuns) { JSONObject childItem = new JSONObject(); childItem.put("id", "" + childSysFunc.getEntityId()); childItem.put("text", childSysFunc.getDescr()); childItem.put("icon", childSysFunc.getIcon()); String url = ""; if (!StringUtil.isEmpty(childSysFunc.getUrl())) { url = webPath + "/" + func.getUrl() + "/" + childSysFunc.getUrl(); } attributes = new JSONObject(); attributes.put("url", url); childItem.put("attributes", attributes); childMenuItems.add(childItem); } if (childMenuItems.size() > 0) { menuItem.put("menu", childMenuItems); jsonArray.add(menuItem); // 如果父菜单下没有子菜单,就不显示在前台 } else if (isAuthorized(func)) { jsonArray.add(menuItem); } } return jsonArray.toString(); }
public String login() { if (StringUtil.isEmpty(this.username)) { setMessage("用户名不能为空"); return json(false, super.getMessage()); } if (this.password == null) { setMessage("密码不能为空"); return json(false, super.getMessage()); } try { String hsql = "from UserInfo where loginName = ? and userState <> ? and deleted = ?"; UserInfo user = (UserInfo) this.getBaseService() .find(hsql, new Object[] {username, UserInfo.STATE_SUSPEND, false}); if (user == null) { setMessage("用户名或密码错误"); return json(false, super.getMessage()); } String userpassword = null; userpassword = user.getPassword(); String pwd = StringUtil.encodePassword(userpassword, "md5"); if (!userpassword.equalsIgnoreCase(this.password)) { setMessage("用户名或密码不正确"); return json(false, super.getMessage()); } // user.setUserType(this.userType); String hostName = getRequest().getRemoteHost(); user.setIp(hostName); if (user.getRoles().size() < 1) { Role role = new Role(); role.setName("ROLE_ADMIN"); user.getRoles().add(role); } user.setLoginTime(new Date()); MobileOnlineUser.onlineUserMap.put(user.getEntityId(), user); authorizedFuncs = new ArrayList(); if (user.getUserFlag() == UserInfo.USER_FLAG_SUPER_ADMIN) { // 如果是超级用户,将加所有权限,可以分配所有管理部门 authorizedFuncs = this.getBaseService().loadAll(FuncModel.class); } else { Role r = user.getRole(); if (r != null) { authorizedFuncs.addAll(r.getFuncs()); } } // 移动端的权限 List funcResult = new ArrayList(); Map userInfoMap = new HashMap(); // Map funcMap = new HashMap(); for (FuncModel f : authorizedFuncs) { if (f.getFuncType() == FuncModel.FUNC_TYPE_MOBILE) { funcResult.add(f.getFuncName()); // funcMap.put(f.getFuncName(), f.getFuncName()); } } userInfoMap.put("funcs", funcResult); SystemConfig sc = (SystemConfig) this.getBaseService().load(SystemConfig.class, 1); userInfoMap.put("id", user.getEntityId()); userInfoMap.put("name", user.getName()); userInfoMap.put("loginName", user.getLoginName()); userInfoMap.put("mapCenterLat", user.getMapCenterLat()); if (user.getMapCenterLat() > 0) { sc.setInitLat(user.getMapCenterLat()); } if (user.getMapCenterLng() > 0) { sc.setInitLng(user.getMapCenterLng()); } userInfoMap.put("mapCenterLng", user.getMapCenterLng()); if (user.getMapLevel() > 0) { userInfoMap.put("mapZoom", user.getMapLevel()); sc.setInitZoomLevel(user.getMapLevel()); } else { userInfoMap.put("mapZoom", 15); } if (user.getRoles().size() < 1) { // if (user.getUserType() == 0) { Role role = new Role(); // role.setDescription(getText("administrator")); role.setName("ROLE_ADMIN"); user.getRoles().add(role); // } } Role r = user.getRole(); userInfoMap.put("roleName", r.getName()); // JSONArray roleArray = JSONArray.fromObject(user.getRoles(), // this.jsonConfig); getSession().put(SESSION_KEY_SYSTEM_CONFIG, sc); super.setOnlineUser(user); super.setAuthorizedDep(user); this.LogOperation("移动端登录"); return json(true, userInfoMap); } catch (Exception e) { this.log.error(e.getMessage(), e); return json(false, e.getMessage()); } }