苏飞论坛广告位

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程 - 订阅更新

HttpHelper万能框架(V2.1) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 408|回复: 3

[教程] 【通用权限管理系统】角色管理>分配菜单保存逻辑处理

[复制链接]
  • TA的每日心情
    奋斗
    2018-4-16 11:48
  • 签到天数: 155 天

    [LV.7]常住居民III

    发表于 2018-1-9 17:31:20 | 显示全部楼层 |阅读模式
    【通用权限管理系统】角色管理>分配菜单保存逻辑处理


    导读部分





    教程部分


    本帖子主要讲解权限管理>角色管理>分配菜单>保存/取消按钮的逻辑实现方法
    如下图所示:
    3.png

    保存按钮html
    [C#] 纯文本查看 复制代码
    <button class="btn btn-primary" id="btnSave">保存</button>

    取消按钮html
    [C#] 纯文本查看 复制代码
    <button class="btn btn-cancel" id="btnCancle">取消</button>

    点击取消按钮,js实现如下:
    [C#] 纯文本查看 复制代码
    $("#btnCancle").click(function () {
                window.location.href = '/Sys/ReloList.aspx';
            });

    点击保存按钮,js实现如下:
    [C#] 纯文本查看 复制代码
    var md = sRequire('modal'),
            layout = sRequire('layout');
            $("#btnSave").click(function () {
                var $this = $(this);
                var ckv = [];
                var ckedv = [];
                $('input[name="like"]:checked').each(function () {
                    ckv.push(this.value);
                });
                $('input[name="menuChild"]:checked').each(function () {
                    ckedv.push(this.value);
                });
                var index = layer.load(2);
                $.post('/sys/RoleMenu.aspx?action=assign', { roleId: '<%=roleId %>', ck: ckv.join(","), cked: ckedv.join(",") }, function (data) {
                    layer.close(index);
                    if (data.reCode > 0) {
                        window.location.href = '/Sys/ReloList.aspx';
                    }
                    else {
                        $error.html(data.msg);
                        md.bind({
                            target: '#md2'
                        });
                    }
                }, 'json');
            });

    此处可以看到,在点击保存后,会先获取子菜单的id集合,以及主菜单的id集合,然后将id集合作为参数,传到后台进行保存处理

    保存按钮的cs逻辑代码处理如下:
    [C#] 纯文本查看 复制代码
    else if ( "assign" == action ) {
                    //保存此角色的菜单信息
                    /*
                     * 1. 权限处理,如果没有权限,直接返回
                     * 2. 获取数据
                     * 3. 保存数据
                     */
                    // 获取数据,角色id合法性校验
                    var ck = InputHelper.GetInputString( Request[ "ck" ] );
                    var cked = InputHelper.GetInputString( Request[ "cked" ] );
                    if ( roleId <= 0 ) {
                        Response.Write( "{\"reCode\":0,\"msg\":\"角色id不合法\"}" );
                        Response.End();
                        return;
                    }
    
                    // 删除以前的角色菜单信息
                    sys_menuInRoleBll.Delete( string.Format( "RoleID = {0}", roleId ) );
    
                    //批量给一级菜单
                    if ( !string.IsNullOrWhiteSpace( ck ) ) {
                        //循环添加角色菜单
                        foreach ( var id in ck.Split( ',' ) ) {
                            //菜单id合法性校验
                            int muneId = InputHelper.GetInputInt( id );
                            if ( muneId > 0 ) {
                                //新增菜单给此角色
                                Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
                                    RoleID = roleId,
                                    MenuID = muneId,
                                    levelFlag = 1
                                };
                                sys_menuInRoleBll.Insert( addInfo );
                            }
                        }
                    }
    
                    //遍历已有菜单列表
                    foreach ( var id in cked.Split( ',' ) ) {
                        int muneId = InputHelper.GetInputInt( id );
                        if ( muneId > 0 ) {
                            Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
                                RoleID = roleId,
                                MenuID = muneId
                            };
                            sys_menuInRoleBll.Insert( addInfo );
                        }
                    }
                    Response.Write( "{\"reCode\":1,\"msg\":\"ok\"}" );
                    Response.End();
                }
            }

    在此处的逻辑如下:
    * 1. 权限处理,如果没有权限,直接返回
    * 2. 获取数据
    * 3. 保存数据

    注: 在保存数据时,这里的处理操作如下:

    1. 先删除原有的角色菜单信息
    [C#] 纯文本查看 复制代码
    // 删除以前的角色菜单信息
                    sys_menuInRoleBll.Delete( string.Format( "RoleID = {0}", roleId ) );


    2. 遍历获取的菜单id集合,然后循环进行添加
    a:批量添加一级菜单
    [C#] 纯文本查看 复制代码
    //批量给一级菜单
                    if ( !string.IsNullOrWhiteSpace( ck ) ) {
                        //循环添加角色菜单
                        foreach ( var id in ck.Split( ',' ) ) {
                            //菜单id合法性校验
                            int muneId = InputHelper.GetInputInt( id );
                            if ( muneId > 0 ) {
                                //新增菜单给此角色
                                Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
                                    RoleID = roleId,
                                    MenuID = muneId,
                                    levelFlag = 1
                                };
                                sys_menuInRoleBll.Insert( addInfo );
                            }
                        }
                    }

    b: 遍历添加子菜单信息
    [C#] 纯文本查看 复制代码
    foreach ( var id in cked.Split( ',' ) ) {
                        int muneId = InputHelper.GetInputInt( id );
                        if ( muneId > 0 ) {
                            Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
                                RoleID = roleId,
                                MenuID = muneId
                            };
                            sys_menuInRoleBll.Insert( addInfo );
                        }
                    }

  • TA的每日心情
    奋斗
    2018-4-16 11:48
  • 签到天数: 155 天

    [LV.7]常住居民III

     楼主| 发表于 2018-1-9 21:09:17 | 显示全部楼层
    此处是权限管理中的一个重点,就是不同的角色,进入系统后,有不同的菜单显示,此处就是处理这个的,是权限管理中的一个重点
  • TA的每日心情
    开心
    昨天 10:29
  • 签到天数: 489 天

    [LV.9]以坛为家II

    发表于 2018-1-9 21:21:15 | 显示全部楼层
  • TA的每日心情
    奋斗
    2018-4-16 11:48
  • 签到天数: 155 天

    [LV.7]常住居民III

     楼主| 发表于 2018-1-10 19:35:33 | 显示全部楼层
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1 )

    GMT+8, 2018-4-25 02:03

    © 2017-2018

    快速回复 返回顶部 返回列表