基于基础数据库建立完毕,建立对基础数据的操作。

用户的增删改,角色的增删改,action的增删改。

首先介绍用户增删改。

仅仅为测试数据(不要钻牛角尖说没验证,目前主要是实现user表关联role表)

(crud操作后面会专门写一篇此处只关心绑定角色)

思路为:点击分配角色获取角色列表,将当前选中的用户id和角色id发送到action层。

简单叙述下前台需要做些什么:

1.获取当前用户id(id为空验证要加上)

2.获取选中角色id(id为空验证要加上)

3.ajax操作

4.操作完以后需要实时刷新当前表(各种细节不再贴代码)

下面为点击保存时的ajax代码(只写关键性代码其余代码省略)

$.ajax({
                                 type: 'POST',
                                 url: 'userAction!changeRole.action' ,
                                 data:{"id":id,"roleId":row.id},
                                 success : function(data) {
                                     $("#UserList_dg").datagrid('reload');
                                     message.show(data);  
                                     $("#userList_dialog").dialog('close');
                                 }
                            });

下面是action层代码

简答叙述下action需要做些什么

1.获取roleid

2.通过userid获取对应实体

3.将role实体加入到user实体中

4.进行保存user实体

public void changeRole() {
        Json j = new Json();
        try {
            String roleId = getRequest().getParameter("roleId");
            T_role role = new T_role();
            role.setId(roleId);
            T_user u = service.getById(id);
            Set<T_role> r = new HashSet<T_role>();
            r.add(role);
            u.setRole(r);
            service.update(u);
            j.setMsg("修改角色成功");
            j.setSuccess(true);
        } catch (Exception e) {
            // TODO: handle exception
            j.setMsg("修改角色失败");
            j.setSuccess(false);
        }
        writeJson(j);
    }

(此处只做1个角色的保存,如果保存多个角色,需要前台发送多个角色id,可以数组的形式,然后action进行循环将roleid加入到set中)

这样就将用户和角色进行了关联。

下面进行角色和action关联

简单叙述下前台需要做什么

1.获取当前角色id

2.获取所选权限树节点的id(这里没有看到按钮的action因为我没做,加个判断保存节点类型为菜单或者按钮就可以)

3.ajax

4.前台刷新(细节问题不再重复)

前台核心代码

var m = window.frames['aa'].contentWindow;
                    var nodes = m.$("#AllTreeList_tree").tree('getChecked');
                    var treeID = "";
                    if (nodes == null || nodes.length == 0) {
                        treeID = "";
                    } else {
                        for (i = 0; i < nodes.length; i++) {
                            if (treeID == "") {
                                treeID = nodes[i].id;
                            } else {
                                treeID = nodes[i].id + "," + treeID;
                            }
                        }
                    }
                    $.ajax({
                        type : 'POST',
                        url : 'roleAction!changeAction.action',
                        data : {
                            "ids" : treeID,
                            "id" : id
                        },
                        success : function(data) {
                            message.show(data);
                            $("#RoleList_dialog").dialog('close');
                            $("#RoleList_dg").datagrid('reload');

                        }
                    });

下面是action层代码

简单叙述下action需要做什么

1.获取节点id。(因为是多个,所以要循环加入到set中)

2.根据角色Id获取角色实体

3.保存

4.清空action

//配置权限
    public void changeAction()
    {
        String[] arr_aciton_id = null;
        
        Json j =new Json();
        
        if(ids!=null&&!ids.equals(""))
        {
            arr_aciton_id = ids.split(","); 
            try {
                T_role role=service.getById(id);
                Set<Menu> menu = new HashSet<Menu>();
                for(int i=0;i<arr_aciton_id.length;i++)
                {
                    Menu m =new Menu();
                    m.setId(arr_aciton_id[i]);
                    menu.add(m);
                }
                role.setMenu(menu);
                service.update(role);
                j.setMsg("权限配置成功");
                j.setSuccess(true);
            } catch (Exception e) {
                // TODO: handle exception
                j.setMsg("权限配置失败");
                j.setSuccess(false);
            }
        }
        else
        {
            try {
                T_role role=service.getById(id);
                role.setMenu(null);
                service.update(role);
                j.setMsg("权限配置成功");
                j.setSuccess(true);
            } catch (Exception e) {
                // TODO: handle exception
                logger.info(e.toString());
                j.setMsg("权限配置失败");
                j.setSuccess(false);
            }
        }
        
        writeJson(j);
    }

到此为止,用户绑定角色,角色绑定action已经完成。

下面需要做的是不同的账号登录获取不同的权限。、

客户端表现为:显示不同的权限树,关联的按钮在没有显示的时候为隐藏状态。

posted on 2015-04-28 14:48  包子吃三斤  阅读(578)  评论(0编辑  收藏  举报