http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 17127|回复: 2
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
发表于 2018-1-17 17:31:52 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
【通用权限管理系统】角色管理>分配功能权限保存逻辑处理


导读部分





教程部分


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

保存按钮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');
    $("#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);
        });
        $.post('/sys/RoleFunction.aspx?action=assign', { roleId: '<%=roleId %>', ck: ckv.join(","), cked: ckedv.join(",") }, function (data) {
            
            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. 保存数据
                 */

                // 获取数据,角色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_roleFuncBll.Delete(string.Format("RoleID = {0}", roleId));

                // 批量给一级主功能权限信息
                // (此处主要用在下次修改改角色功能权限时,方便进行选中赋值使用)
                if ( !string.IsNullOrWhiteSpace( ck ) ) {
                    // 循环给该角色添加功能权限信息
                    foreach ( var id in ck.Split( ',' ) ) {
                        // 功能id合法性校验
                        int funcId = InputHelper.GetInputInt( id );
                        if (funcId > 0)
                        {
                            //新增菜单给此角色
                            Sys_RoleFunctionInfo addInfo = new Sys_RoleFunctionInfo
                            {
                                RoleID = roleId,
                                FunctionID = funcId
                            };
                            sys_roleFuncBll.Insert(addInfo);
                        }
                    }
                }

                // 循环添加功能权限
                foreach ( var id in cked.Split( ',' ) ) {
                    int funcId = InputHelper.GetInputInt(id);
                    if (funcId > 0)
                    {
                        Sys_RoleFunctionInfo addInfo = new Sys_RoleFunctionInfo
                        {
                            RoleID = roleId,
                            FunctionID = funcId
                        };
                        sys_roleFuncBll.Insert(addInfo);
                    }
                }
                Response.Write( "{\"reCode\":1,\"msg\":\"ok\"}" );
                Response.End();
            }

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

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

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


2. 遍历获取的功能权限id集合,然后循环进行添加
a:批量添加一级权限
[C#] 纯文本查看 复制代码
// 批量给一级主功能权限信息
                // (此处主要用在下次修改改角色功能权限时,方便进行选中赋值使用)
                if ( !string.IsNullOrWhiteSpace( ck ) ) {
                    // 循环给该角色添加功能权限信息
                    foreach ( var id in ck.Split( ',' ) ) {
                        // 功能id合法性校验
                        int funcId = InputHelper.GetInputInt( id );
                        if (funcId > 0)
                        {
                            //新增菜单给此角色
                            Sys_RoleFunctionInfo addInfo = new Sys_RoleFunctionInfo
                            {
                                RoleID = roleId,
                                FunctionID = funcId
                            };
                            sys_roleFuncBll.Insert(addInfo);
                        }
                    }
                }


b: 遍历添加子功能权限信息
[C#] 纯文本查看 复制代码
// 循环添加功能权限[/font][/align][align=left][font=Consolas,][size=12px]                foreach ( var id in cked.Split( ',' ) ) {
                    int funcId = InputHelper.GetInputInt(id);
                    if (funcId > 0)
                    {
                        Sys_RoleFunctionInfo addInfo = new Sys_RoleFunctionInfo
                        {
                            RoleID = roleId,
                            FunctionID = funcId
                        };
                        sys_roleFuncBll.Insert(addInfo);
                    }
                }


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
 楼主| 发表于 2018-1-17 17:41:23 | 只看该作者
大家需要注意,保存了主的信息,其实也可以不进行保存,在页面加载的时候,多做个判断即可
楼主
 楼主| 发表于 2018-1-17 17:40:16 | 只看该作者
本系统中的分配菜单与分配全线一样,都是先删除原有的角色信息,再保存新的角色分配的内容
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-22 13:45

© 2014-2021

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