Example #1
0
 public HttpResponseMessage add_roleright(AddRoleRightsStrRequest request)
 {
     return(toJson(_rolesService.AddRoleRight(request)));
 }
Example #2
0
        /// <summary>
        /// 添加、修改角色页面权限
        /// 用于PC,角色管理--权限设置--重新设置页面权限
        /// 停用
        /// </summary>
        /// <returns></returns>
        public JsonResponse AddRoleRight(AddRoleRightsStrRequest request)
        {
            var rolesRights        = new List <RolesRights>();
            var rolesRightsButtons = new List <RolesRightsButtons>();

            try
            {
                //当前选中的菜单集合,过滤按钮集合
                foreach (var item in request.data.Where(s => s.lv != 3))
                {
                    //获取当前操作的菜单
                    var menu = _menu.GetById(item.id);
                    if (menu == null)
                    {
                        continue;
                    }

                    //添加到角色权限表
                    var result = new RolesRights()
                    {
                        Id                  = Guid.NewGuid(),
                        CreatedTime         = DateTime.Now,
                        DeletedTime         = null,
                        DeletedState        = 0,
                        IsDefault           = 0,
                        ProjectRolesID      = request.RoleId,
                        ProjectMenuID       = menu.Id,
                        ProjectMenuParendID = menu.ParentID,
                        FunctionKey         = menu.FunctionKey,
                        FunctionName        = menu.FunctionName,
                        DisplayNo           = menu.DisplayNo,
                        ImgUrl              = menu.FunctionUrl,
                        FunctionType        = menu.FunctionType,
                        Icon                = menu.Icon
                    };
                    rolesRights.Add(result);

                    //同步添加当前菜单下的操作按钮(筛选当前菜单下存在的操作按钮集合)
                    rolesRightsButtons.AddRange(request.data.Where(s => s.lv == 3 && s.parentId == item.id)
                                                .Select(c => new RolesRightsButtons
                    {
                        Id                   = Guid.NewGuid(),
                        CreatedTime          = DateTime.Now,
                        DeletedTime          = null,
                        DeletedState         = 0,
                        ProjectRolesRightsID = result.Id,
                        ProjectButtonsID     = c.id,
                        ButtonName           = c.label,
                        DisplayNo            = c.displayNo
                    }));
                }


                //开启事务
                var tranRolesRight = _rolesRights.Context.Database.BeginTransaction();

                try
                {
                    //优先删除该角色的菜单权限
                    var roleRights = _rolesRights.Table.Where(s => s.ProjectRolesID == request.RoleId && s.FunctionType == 2).ToList();
                    if (roleRights.Count > 0)
                    {
                        _rolesRights.DeleteList(roleRights);
                    }
                    //再删除该角色的操作权限
                    foreach (var roleRightButtons in roleRights.Select(item => _rolesRightsButtons.Table.Where(s => s.ProjectRolesRightsID == item.Id)).Where(roleRightButtons => roleRightButtons.ToList().Count > 0))
                    {
                        _rolesRightsButtons.DeleteList(roleRightButtons.ToList());
                    }

                    //再添加该角色的菜单权限
                    _rolesRights.AddRange(rolesRights);
                    //再添加该角色的操作权限
                    _rolesRightsButtons.AddRange(rolesRightsButtons);


                    _rolesRights.SaveChanges();
                    //事务提交
                    tranRolesRight.Commit();
                }
                catch (Exception)
                {
                    //事务回滚
                    tranRolesRight.Rollback();
                }

                return(new JsonResponse(OperatingState.Success, "数据添加成功"));
            }
            catch (Exception e)
            {
                return(new JsonResponse(OperatingState.Failure, "数据添加失败", e.Message));
            }
        }