public async Task <int> GetOrgUserCount(long orgId, bool includeSubOrg) { var orgUserCount = 0; if (includeSubOrg) { var subOrdIds = await GetService <IOrganizationAppService>().GetSubOrgIds(orgId); Expression <Func <UserInfo, bool> > expression = null; foreach (var subOrdId in subOrdIds) { if (expression == null) { expression = p => p.OrgId == subOrdId; } else { expression = expression.Or(p => p.OrgId == subOrdId); } } orgUserCount = await _userRepository.GetCountAsync(expression); } else { orgUserCount = await _userRepository.GetCountAsync(p => p.OrgId == orgId); } return(orgUserCount); }
public async Task Delete(long roleid) { var role = await _roleRepository.SingleOrDefaultAsync(p => p.Id == roleid); if (role == null) { throw new BusinessException($"不存在Id为{roleid}的角色信息"); } var userRoleCount = await _userRoleRepository.GetCountAsync(p => p.RoleId == roleid); if (userRoleCount > 0) { throw new BusinessException($"{role.Name}被分配用户,请先删除相关授权的用户信息"); } var userGroupRoleCount = await _userGroupRoleRepository.GetCountAsync(p => p.RoleId == roleid); if (userRoleCount > 0) { throw new BusinessException($"{role.Name}被分配用户组,请先删除相关授权的用户组信息"); } await UnitOfWorkAsync(async (conn, trans) => { await _roleRepository.DeleteAsync(p => p.Id == roleid, conn, trans); await _rolePermissionRepository.DeleteAsync(p => p.RoleId == roleid, conn, trans); }, Connection); }
public async Task Create(CreateMenuInput input) { var menu = input.MapTo <Menu>(); var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.ParentId == input.ParentId); if (menu.Mold == MenuMold.Top) { menu.Code = (thisLevelMenuCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); menu.Level = 1; } else { var parentMenu = await _menuRepository.SingleOrDefaultAsync(p => p.Id == input.ParentId); if (parentMenu == null) { throw new BusinessException($"不存在Id为{input.ParentId}的菜单信息"); } menu.Code = parentMenu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelMenuCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); menu.Level = parentMenu.Level + 1; } var permission = input.MapTo <Permission>(); await UnitOfWorkAsync(async (conn, trans) => { var permissionId = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans); menu.PermissionId = permissionId; await _menuRepository.InsertAsync(menu, conn, trans); }, Connection); }
public async Task <CreateMenuOutput> Create(CreateMenuInput input) { var menu = input.MapTo <Menu>(); long menuParentId = 0; var exsitMenu = await _menuRepository.FirstOrDefaultAsync(p => p.Name == input.Name); if (exsitMenu != null) { throw new BusinessException($"系统中已经存在{input.Name}的菜单,请勿重复添加"); } if (menu.Mold == MenuMold.Top) { var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.Mold == MenuMold.Top); menu.Code = (thisLevelMenuCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); menu.Level = 1; } else { var parentMenu = await _menuRepository.SingleOrDefaultAsync(p => p.PermissionId == input.ParentPermissionId); if (parentMenu == null) { throw new BusinessException($"不存在PermissionId为{input.ParentPermissionId}的菜单信息"); } menuParentId = parentMenu.Id; var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.Mold == MenuMold.SubMenu && p.ParentId == parentMenu.Id); menu.Code = parentMenu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelMenuCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); menu.Level = parentMenu.Level + 1; } var permission = input.MapTo <Permission>(); await UnitOfWorkAsync(async (conn, trans) => { var permissionId = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans); menu.PermissionId = permissionId; menu.ParentId = menuParentId; await _menuRepository.InsertAsync(menu, conn, trans); }, Connection); return(new CreateMenuOutput() { Id = menu.Id, PermissionId = menu.PermissionId, Tips = "新增菜单成功" }); }
public async Task DeleteRoleById(long roleId) { var roleUserCount = await _userRoleRepository.GetCountAsync(p => p.RoleId == roleId); if (roleUserCount > 0) { throw new BusinessException("该角色被分配有用户,请先删除用户后再尝试"); } await UnitOfWorkAsync(async (conn, trans) => { await _roleRepository.DeleteAsync(p => p.Id == roleId, conn, trans); await _rolePermissionRepository.DeleteAsync(p => p.RoleId == roleId, conn, trans); }, Connection); }
public async Task <CreateOperationOutput> Create(CreateOperationInput input) { var exsitOperation = await _operationRepository.FirstOrDefaultAsync(p => p.Name == input.Name); if (exsitOperation != null) { throw new BusinessException($"系统中已经存在{input.Name}的操作,请勿重复添加"); } var menu = await _menuRepository.SingleOrDefaultAsync(p => p.PermissionId == input.PermissionId); if (menu == null) { throw new BusinessException($"不存在PermissionId为{input.PermissionId}的菜单信息"); } var operation = input.MapTo <Operation>(); var permission = input.MapTo <Permission>(); var operationCount = await _operationRepository.GetCountAsync(p => p.MenuId == input.PermissionId); operation.Code = menu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (operationCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); operation.Level = menu.Level + 1; await UnitOfWorkAsync(async (conn, trans) => { var permissionId = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans); operation.PermissionId = permissionId; operation.MenuId = menu.Id; var operationId = await _operationRepository.InsertAndGetIdAsync(operation, conn, trans); if (input.ActionIds != null && input.ActionIds.Any()) { foreach (var actionId in input.ActionIds) { var action = await _actionRepository.SingleOrDefaultAsync(p => p.Id == actionId); if (action == null) { throw new BusinessException($"系统中不存在Id为{actionId}的方法"); } var operationAction = new OperationActionRelation() { ActionId = actionId, OperationId = operationId, ServiceId = action.ServiceId }; await _operationActionRepository.InsertAsync(operationAction, conn, trans); } } }, Connection); return(new CreateOperationOutput() { Id = operation.Id, PermissionId = operation.PermissionId, Tips = "新增操作成功" }); }
public async Task Create(CreateUserGroupInput input) { var userGroup = input.MapTo <UserGroup>(); var thisLevelUserGroupCount = await _userGroupRepository.GetCountAsync(p => p.ParentId == input.ParentId); if (input.ParentId == 0) { userGroup.Level = 1; userGroup.Code = (thisLevelUserGroupCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } else { var parentUserGroup = await _userGroupRepository.SingleOrDefaultAsync(p => p.Id == input.ParentId); if (parentUserGroup == null) { throw new BusinessException($"不存在Id为{input.ParentId}的用户组信息"); } userGroup.Level = parentUserGroup.Level + 1; userGroup.Code = parentUserGroup.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelUserGroupCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } await UnitOfWorkAsync(async (conn, trans) => { var userGroupId = await _userGroupRepository.InsertAndGetIdAsync(userGroup, conn, trans); foreach (var userId in input.UserIds) { var userInfo = await _userRepository.SingleOrDefaultAsync(p => p.Id == userId); if (userInfo == null) { throw new BusinessException($"不存在用户Id为{userId}的用户信息"); } await _userUserGroupRelationRepository.InsertAsync(new UserUserGroupRelation() { UserGroupId = userGroupId, UserId = userId }, conn, trans); } foreach (var roleId in input.RoleIds) { var roleInfo = await _roleRepository.SingleOrDefaultAsync(p => p.Id == roleId); if (roleInfo == null) { throw new BusinessException($"不存在用户Id为{roleId}的角色信息"); } await _userGroupRoleRepository.InsertAsync(new UserGroupRole() { UserGroupId = userGroupId, RoleId = roleId }, conn, trans); } }, Connection); }
private async Task <bool> UpdateOrgIdsEqExistOrgIds(long[] inputOrgIds, long[] userGroupOrganizationIds, long userGroupId) { var userGroupUserCount = await _userUserGroupRelationRepository.GetCountAsync(p => p.UserGroupId == userGroupId); if (userGroupUserCount <= 0) { return(true); } if (inputOrgIds.Length != userGroupOrganizationIds.Length) { return(false); } return(!inputOrgIds.Where((t, i) => t != userGroupOrganizationIds[i]).Any()); }
public async Task DeleteUserGroupById(long userGroupId) { var userGroupchildrenCount = await _userGroupRepository.GetCountAsync(p => p.ParentId == userGroupId); if (userGroupchildrenCount > 0) { throw new BusinessException("要删除的用户组存在子节点,请先删除子用户组"); } var deleteUserGroupRoleCount = await _userGroupRoleRepository.GetCountAsync(p => p.UserGroupId == userGroupId); if (deleteUserGroupRoleCount > 0) { throw new BusinessException("要删除的用户组分配了角色,无法删除,请先取消角色授权"); } await UnitOfWorkAsync(async (conn, trans) => { await _userGroupRepository.DeleteAsync(p => p.Id == userGroupId, conn, trans); await _userGroupRelationRepository.DeleteAsync(p => p.UserGroupId == userGroupId, conn, trans); }, Connection); }
public async Task Delete(long roleid) { var role = await _roleRepository.SingleOrDefaultAsync(p => p.Id == roleid); if (role == null) { throw new BusinessException($"不存在Id为{roleid}的角色信息"); } _session.CheckLoginUserDataPermision(role.DataPermissionType, "您设置的角色的数据权限大于您拥有数据权限,系统不允许该操作"); var userRoleCount = await _userRoleRepository.GetCountAsync(p => p.RoleId == roleid); if (userRoleCount > 0) { throw new BusinessException($"{role.Name}被分配用户,请先删除相关授权的用户信息"); } var userGroupRoleCount = await _userGroupRoleRepository.GetCountAsync(p => p.RoleId == roleid); if (userGroupRoleCount > 0) { throw new BusinessException($"{role.Name}被分配用户组,请先删除相关授权的用户组信息"); } using (var locker = await _lockerProvider.CreateLockAsync("DeleteRole")) { await locker.Lock(async() => { await UnitOfWorkAsync(async(conn, trans) => { await _roleRepository.DeleteAsync(p => p.Id == roleid, conn, trans); await _rolePermissionRepository.DeleteAsync(p => p.RoleId == roleid, conn, trans); await _roleDataPermissionOrgRelationRepository.DeleteAsync(p => p.RoleId == roleid, conn, trans); await _roleOrganizationRepository.DeleteAsync(p => p.RoleId == roleid, conn, trans); await RemoveRoleCheckPemissionCache(roleid); }, Connection); }); } }
public async Task <int> GetPositionUserCount(long positionId) { return(await _userRepository.GetCountAsync(p => p.PositionId == positionId)); }