public HttpResponseMessage add_roleright(AddRoleRightsStrRequest request) { return(toJson(_rolesService.AddRoleRight(request))); }
/// <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)); } }