Skip to content

Latest commit

 

History

History
155 lines (105 loc) · 2.93 KB

55.md

File metadata and controls

155 lines (105 loc) · 2.93 KB

[TOC]

BOS物流项目55———系统菜单根据登录人动态展示

一、说明

系统菜单是根据用来具有哪些菜单来显示的。现在我们去处理一下


二、修改index.jsp页面中ajax方法的请求地址

修改请求地址,如下:

		// 基本功能菜单加载
		$.ajax({
			url : '${pageContext.request.contextPath}/functionAction_findMenu.action',
			type : 'POST',
			dataType : 'text',
			success : function(data) {
				var zNodes = eval("(" + data + ")");
				$.fn.zTree.init($("#treeMenu"), setting, zNodes);
			},
			error : function(msg) {
				alert('菜单加载异常!');
			}
		});

三、在Action中提供findMenu方法

    /**
     * 根据当前登陆人查询对应的菜单数据,返回json
     * @return
     */
    public String findMenu(){
        List<Function> list = functionService.findMenu();
        java2Json(list,new String[]{"parentFunction","roles","children"});
        return NONE;
    }

四、在FunctionService中提供相应的方法

    /**
     * 根据当前登陆人查询对应的菜单数据,返回json
     *
     * @return
     */
    @Override
    public List<Function> findMenu() {
        List<Function> list = null;
        //获取当前的用户
        User user = BOSUtils.getLoginUser();
        if(user.getUsername().equals("admin")){
            //如果是超级管理员,那么获取所有的菜单
            list = functionDao.findAllMenu();
        }else{
            list = functionDao.findMenuByUserId(user.getId());
        }
        return list;
    }

五、在FunctionDao中提供相应的方法

    /**
     * 查询所有菜单
     *
     * @return
     */
    @Override
    public List<Function> findAllMenu() {
        String hql = "SELECT DISTINCT f FROM Function f WHERE f.generatemenu = '1' ORDER BY f.zindex ASC";
        List<Function> list = (List<Function>)getHibernateTemplate().find(hql);
        return list;
    }

    /**
     * 根据用户id查询菜单
     *
     * @param userId
     * @return
     */
    @Override
    public List<Function> findMenuByUserId(String userId) {
        String hql = "SELECT DISTINCT f FROM Function f LEFT JOIN f.roles r LEFT OUTER JOIN r.users u WHERE u.id=?"
                +" AND f.generatemenu = '1' ORDER BY f.zindex ASC";
        List<Function> list = (List<Function>)getHibernateTemplate().find(hql,userId);
        return list;
    }

六、Function类中提供getpId方法

为了能够生成 树形菜单,需要Function类中提供getpId方法

	public String getpId(){
		if(parentFunction == null){
			return "0";
		}
		return parentFunction.getId();
	}

七、图示

7.1 admin登陆图示

7.2 其他用户登陆图示


八、源码下载

https://github.com/wimingxxx/bos-parent