コード例 #1
0
        public string SetMenu(int id, bool isMenu)
        {
            Material_Action action = _actionBll.Find(id);

            action.Is_Menu = isMenu;
            return(_actionBll.UpdateEntities(new List <Material_Action>()
            {
                action
            }) ? "OK" : "Error");
        }
コード例 #2
0
        public string DeleteAction(int id, bool isDel)
        {
            Material_Action action = _actionBll.Find(id);

            action.Del_Flag = isDel;
            return(_actionBll.UpdateEntities(new List <Material_Action>()
            {
                action
            }) ? "OK" : "Error");
        }
コード例 #3
0
        public string AddAction(Material_Action materialAction, int[] roles)
        {
            Material_Action action = _actionBll.Find(materialAction.Id);

            if (action == null)
            {
                return(_actionBll.AddEntities(new List <Material_Action>()
                {
                    materialAction
                }) && _roleActionBll.SetRoleByAction(roles.ToList(), materialAction.Id) ? "添加成功" : "添加失败");
            }
            else
            {
                AssmblyHelper.ClassEvaluate(materialAction, action);
                return(_actionBll.UpdateEntities(new List <Material_Action>()
                {
                    action
                }) && _roleActionBll.SetRoleByAction(roles?.ToList(), materialAction.Id) ? "更新成功" : "更新失败");
            }
        }
コード例 #4
0
        public string GetActionTree(List <int> id, string teacherId)
        {
            List <Material_Action> materialActions = _actionBll.GetEntities(m => m.Del_Flag == false);
            List <ActionTree>      trees           = new List <ActionTree>();

            foreach (Material_Action materialAction in materialActions)
            {
                //父节点
                if (materialAction.Menu_Id == 0)
                {
                    if (trees.FirstOrDefault(m => m.Value == materialAction.Id) == null)
                    {
                        trees.Add(new ActionTree
                        {
                            Title    = materialAction.Action_Name,
                            Value    = materialAction.Id,
                            Checked  = false,
                            Disabled = false
                        });
                    }
                }
                else//子节点
                {
                    //查找父节点
                    ActionTree tree = trees.FirstOrDefault(m => m.Value == materialAction.Menu_Id);
                    //没有找到父节点 添加父节点
                    if (tree == null)
                    {
                        Material_Action action = materialActions.Find(m => m.Id == materialAction.Menu_Id);
                        tree = new ActionTree
                        {
                            Title    = action.Action_Name,
                            Value    = action.Id,
                            Checked  = false,
                            Disabled = false
                        };
                        trees.Add(tree);
                    }

                    if (tree.Data == null)
                    {
                        tree.Data = new List <ActionTree>
                        {
                            new ActionTree
                            {
                                Title    = materialAction.Action_Name,
                                Value    = materialAction.Id,
                                Checked  = false,
                                Disabled = false,
                                Data     = new List <ActionTree>()
                            }
                        };
                    }
                    else
                    {
                        tree.Data.Add(new ActionTree
                        {
                            Title    = materialAction.Action_Name,
                            Value    = materialAction.Id,
                            Checked  = false,
                            Disabled = false,
                            Data     = new List <ActionTree>()
                        });
                    }
                }
            }
            //如果id不是null 选中该角色id的权限页面
            if (id != null)
            {
                List <int> actionIds = _roleActionBll.GetEntities(m => id.Contains(m.Role_Id)).Select(m => m.Action_Id).ToList();
                SetRoleActionChecked(actionIds, trees);
            }

            //如果teacherId 设置该用户的权限
            if (teacherId != null)
            {
                List <Material_Teacher_Action> materialTeacherActions = _teacherActionBll.GetEntities(m => m.Teacher_Id == teacherId);
                SetTeacherActionChecked(materialTeacherActions, trees);
            }

            var dataTrees = new
            {
                code = 0,
                data = trees,
                msg  = "获取成功"
            };

            return(JsonConvert.SerializeObject(dataTrees));
        }
コード例 #5
0
ファイル: RoleActionBll.cs プロジェクト: ucow/ZERO.Material
        //1. 首先删除原有权限,然后重新分配权限
        //2. 如果该页面是子页面,在给自己分配权限的同时需要为父菜单项分配权限
        //3. 如果该页面是父菜单项,但是没有分配权限,需要将子页面中的所有权限删除
        //4. 如果该页面是父菜单项,并且分配了权限,在给自己分配权限的同时,需要判断子页面的权限,如果子页面拥有的权限多余父菜单项,这需要将多余的权限删除。
        public bool SetRoleByAction(List <int> roleIds, int actionId)
        {
            IActionBll actionBll = UnityContainerHelper.Server <IActionBll>();
            //删除该页面原有的角色权限
            List <Material_Role_Action> roleActions = GetEntities(m => m.Action_Id == actionId);

            if (!DeleteEntity(roleActions))
            {
                return(false);
            }

            //重新分配角色权限
            List <Material_Role_Action> addRoleActions = new List <Material_Role_Action>();

            if (roleIds != null)
            {
                //获取该页面的父菜单Id
                Material_Action action = actionBll.Find(actionId);
                if (action == null)
                {
                    return(false);
                }

                int menuId = action.Menu_Id;
                foreach (int roleId in roleIds)
                {
                    //为该页面设置权限
                    addRoleActions.Add(new Material_Role_Action
                    {
                        Role_Id   = roleId,
                        Action_Id = actionId
                    });
                    Material_Role_Action roleAction = GetEntity(m => m.Action_Id == menuId && m.Role_Id == roleId);
                    //menuId != 0即拥有父菜单,并且该角色没有父菜单的权限则为该角色分配权限
                    if (menuId != 0 && roleAction == null)
                    {
                        addRoleActions.Add(new Material_Role_Action
                        {
                            Role_Id   = roleId,
                            Action_Id = menuId
                        });
                    }
                }
                //如果是父菜单,判断子页面拥有的角色是否多于父菜单 将多出的角色权限删除
                if (menuId == 0)
                {
                    List <int> ids = actionBll.GetEntities(m => m.Menu_Id == actionId).Select(m => m.Id).ToList();
                    List <Material_Role_Action> deleteRoleActions = new List <Material_Role_Action>();
                    foreach (int id in ids)
                    {
                        List <int> roleIdList = GetEntities(m => m.Action_Id == id).Select(m => m.Role_Id).ToList();
                        foreach (int roleId in roleIdList)
                        {
                            if (!roleIds.Contains(roleId))
                            {
                                deleteRoleActions.Add(GetEntity(m => m.Action_Id == id && m.Role_Id == roleId));
                            }
                        }
                    }

                    DeleteEntity(deleteRoleActions);
                }
            }
            else
            {
                //如果该页面是菜单并且没有为任何角色分配权限,则将该菜单项的子页面的所有角色权限删除
                if (actionBll.Find(actionId).Is_Menu)
                {
                    List <int> ids = actionBll.GetEntities(m => m.Menu_Id == actionId).Select(m => m.Id).ToList();
                    if (!DeleteEntity(GetEntities(m => ids.Contains(m.Action_Id))))
                    {
                        return(false);
                    }
                }
                else//如果该页面不是菜单且没有分配权限则结束操作
                {
                    return(true);
                }
            }

            //添加权限
            if (AddEntities(addRoleActions))
            {
                return(true);
            }

            return(false);
        }