/// <summary> /// 设置用户某个权限的组织机构范围 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="permissionOrganizationScope">组织机构范围</param> /// <param name="permissionCode">权限编号</param> /// <returns>影响的行数</returns> public string SetUserOrganizationScope(BaseUserInfo userInfo, string userId, PermissionOrganizationScope permissionOrganizationScope, string permissionCode) { var result = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var userOrganizationScopeManager = new BaseUserScopeManager(userInfo); result = userOrganizationScopeManager.SetUserOrganizationScope(userInfo.SystemCode, userId, permissionOrganizationScope, permissionCode, false); }); return(result); }
/// <summary> /// 获取用户模块权限范围主键数组 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="permissionCode">权限编号</param> /// <returns>主键数组</returns> public string[] GetUserScopeModuleIds(BaseUserInfo userInfo, string userId, string permissionCode) { string[] result = null; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) => { var tableName = userInfo.SystemCode + "PermissionScope"; var manager = new BaseUserScopeManager(dbHelper, userInfo, tableName); result = manager.GetModuleIds(userInfo.SystemCode, userId, permissionCode); }); return(result); }
/// <summary> /// 获取用户的某个权限域的组织范围 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="permissionCode">权限编号</param> /// <returns>主键数组</returns> public PermissionOrganizationScope GetUserOrganizationScope(BaseUserInfo userInfo, string userId, string permissionCode) { var result = PermissionOrganizationScope.OnlyOwnData; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterReadDb(userInfo, parameter, (dbHelper) => { var userScopeManager = new BaseUserScopeManager(dbHelper, userInfo); var containChild = false; result = userScopeManager.GetUserOrganizationScope(userInfo.SystemCode, userId, out containChild, permissionCode); }); return(result); }
/// <summary> /// 清除用户权限范围 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">主键</param> /// <param name="permissionCode">权限编码</param> /// <returns>数据表</returns> public int ClearUserPermissionScope(BaseUserInfo userInfo, string userId, string permissionCode) { var result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var tableName = userInfo.SystemCode + "PermissionScope"; var manager = new BaseUserScopeManager(dbHelper, userInfo, tableName); result = manager.ClearUserPermissionScope(userInfo.SystemCode, userId, permissionCode); }); return(result); }
/// <summary> /// 撤消用户模块的权限范围 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="revokeModuleIds">撤消模块主键数组</param> /// <param name="permissionCode">权限编号</param> /// <returns>影响的行数</returns> public int RevokeUserModuleScopes(BaseUserInfo userInfo, string userId, string[] revokeModuleIds, string permissionCode) { var result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var tableName = userInfo.SystemCode + "PermissionScope"; var manager = new BaseUserScopeManager(dbHelper, userInfo, tableName); // 小心异常,检查一下参数的有效性 if (revokeModuleIds != null) { result = manager.RevokeModules(userInfo.SystemCode, userId, revokeModuleIds, permissionCode); } }); return(result); }
/// <summary> /// 授予用户模块的权限范围 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="grantModuleId">授予模块主键数组</param> /// <param name="permissionCode">权限编号</param> /// <returns>影响的行数</returns> public string GrantUserModuleScope(BaseUserInfo userInfo, string userId, string grantModuleId, string permissionCode) { var result = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var tableName = userInfo.SystemCode + "PermissionScope"; var manager = new BaseUserScopeManager(dbHelper, userInfo, tableName); // 小心异常,检查一下参数的有效性 if (grantModuleId != null) { result = manager.GrantModule(userInfo.SystemCode, userId, grantModuleId, permissionCode); } }); return(result); }
/// <summary> /// 授予用户的授权权限范围 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="grantPermissionIds">授予的权限主键数组</param> /// <param name="permissionCode">权限编号</param> /// <returns>影响的行数</returns> public int GrantUserPermissionScopes(BaseUserInfo userInfo, string userId, string[] grantPermissionIds, string permissionCode) { int result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { string tableName = userInfo.SystemCode + "PermissionScope"; var manager = new BaseUserScopeManager(dbHelper, userInfo, tableName); // 小心异常,检查一下参数的有效性 if (grantPermissionIds != null) { result += manager.GrantPermissiones(userInfo.SystemCode, userId, grantPermissionIds, permissionCode); } }); return(result); }
/// <summary> /// 清除用户权限 /// /// 1.清除用户的角色归属。 /// 2.清除用户的模块权限。 /// 3.清除用户的操作权限。 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <returns>数据表</returns> public int ClearUserPermission(BaseUserInfo userInfo, string userId) { var result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (ServiceUtil.ProcessFun)((dbHelper) => { var systemCode = userInfo.SystemCode; var userManager = new BaseUserManager(dbHelper, userInfo); result += userManager.ClearRole(systemCode, userId); var userPermissionManager = new BasePermissionManager((IDbHelper)dbHelper, (BaseUserInfo)userInfo); result += userPermissionManager.RevokeUserAll(systemCode, userId); var userPermissionScopeManager = new BaseUserScopeManager(dbHelper, userInfo); result += userPermissionScopeManager.RevokeAll(systemCode, userId); })); return(result); }
private string GetSearchConditional(string permissionCode, string where, bool?enabled, string auditStates, string companyId = null, string departmentId = null) { string whereClause = BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldDeletionStateCode + " = 0 "; if (enabled.HasValue) { if (enabled == true) { whereClause += " AND " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldEnabled + " = 1 "; } else { whereClause += " AND " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldEnabled + " = 0 "; } } if (!String.IsNullOrEmpty(where)) { // 传递过来的表达式,还是搜索值? if (where.IndexOf("AND") < 0 && where.IndexOf("=") < 0) { where = StringUtil.GetSearchString(where); whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldUserName + " LIKE '" + where + "'" // + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldSimpleSpelling + " LIKE '" + where + "'" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldCode + " LIKE '" + where + "'" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldRealName + " LIKE '" + where + "'" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldQuickQuery + " LIKE '" + where + "'" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldCompanyName + " LIKE '" + where + "'" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldDepartmentName + " LIKE '" + where + "'" // + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldDescription + " LIKE '" + search + "'" + ")"; } else { whereClause += " AND (" + where + ")"; } } if (!string.IsNullOrEmpty(departmentId)) { /* * BaseOrganizeManager organizeManager = new BaseOrganizeManager(this.DbHelper, this.UserInfo); * string[] ids = organizeManager.GetChildrensId(BaseOrganizeEntity.FieldId, departmentId, BaseOrganizeEntity.FieldParentId); * if (ids != null && ids.Length > 0) * { * whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldCompanyId + " IN (" + StringUtil.ArrayToList(ids) + ")" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldDepartmentId + " IN (" + StringUtil.ArrayToList(ids) + ")" + " OR " + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldWorkgroupId + " IN (" + StringUtil.ArrayToList(ids) + "))"; + } */ whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldDepartmentId + " = " + departmentId + ")"; } if (!string.IsNullOrEmpty(companyId)) { whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldCompanyId + " = " + companyId + ")"; } if (enabled != null) { whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldEnabled + " = " + ((bool)enabled ? 1 : 0) + ")"; } // 是否过滤用户, 获得组织机构列表, 这里需要一个按用户过滤得功能 if (!string.IsNullOrEmpty(permissionCode) && (!UserInfo.IsAdministrator) && (BaseSystemInfo.UsePermissionScope)) { // string permissionCode = "Resource.ManagePermission"; string permissionId = BaseModuleManager.GetIdByCodeByCache(UserInfo.SystemCode, permissionCode); if (!string.IsNullOrEmpty(permissionId)) { // 从小到大的顺序进行显示,防止错误发生 BaseUserScopeManager userPermissionScopeManager = new BaseUserScopeManager(this.DbHelper, this.UserInfo); string[] organizeIds = userPermissionScopeManager.GetOrganizeIds(UserInfo.SystemCode, UserInfo.Id, permissionId); // 没有任何数据权限 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.NotAllowed).ToString())) { whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldId + " = NULL ) "; } // 按详细设定的数据 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.ByDetails).ToString())) { BasePermissionScopeManager permissionScopeManager = new BasePermissionScopeManager(DbHelper, UserInfo); string[] userIds = permissionScopeManager.GetUserIds(UserInfo.SystemCode, UserInfo.Id, permissionCode); whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldId + " IN (" + string.Join(",", userIds) + ")) "; } // 自己的数据,仅本人 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.OnlyOwnData).ToString())) { whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldId + " = " + this.UserInfo.Id + ") "; } // 用户所在工作组数据 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.UserWorkgroup).ToString())) { // whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldWorkgroupId + " = " + this.UserInfo.WorkgroupId + ") "; } // 用户所在部门数据 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.UserDepartment).ToString())) { whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldDepartmentId + " = " + this.UserInfo.DepartmentId + ") "; } // 用户所在分支机构数据 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.UserSubCompany).ToString())) { // whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldSubCompanyId + " = " + this.UserInfo.SubCompanyId + ") "; } // 用户所在公司数据 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.UserCompany).ToString())) { whereClause += " AND (" + BaseStaffEntity.TableName + "." + BaseStaffEntity.FieldCompanyId + " = " + this.UserInfo.CompanyId + ") "; } // 全部数据,这里就不用设置过滤条件了 if (StringUtil.Exists(organizeIds, ((int)PermissionOrganizeScope.AllData).ToString())) { } } } return(whereClause); }
public DataTable Search(string permissionScopeItemCode, string search, string[] roleIds, bool?enabled, string auditStates, string departmentId) { search = StringUtil.GetSearchString(search); string sqlQuery = " SELECT " + BaseUserEntity.TableName + ".* " + "," + BaseRoleEntity.TableName + "." + BaseRoleEntity.FieldRealName + " AS RoleName " + " FROM " + BaseUserEntity.TableName + " LEFT OUTER JOIN " + BaseRoleEntity.TableName + " ON " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldRoleId + " = " + BaseRoleEntity.TableName + "." + BaseRoleEntity.FieldId // 被删除的排出在外比较好一些 + " WHERE " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldDeletionStateCode + " = 0 " + " AND " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldIsVisible + " = 1 "; if (!String.IsNullOrEmpty(search)) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldUserName + " LIKE '" + search + "'" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldCode + " LIKE '" + search + "'" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldRealName + " LIKE '" + search + "'" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldQuickQuery + " LIKE '" + search + "'" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldDepartmentName + " LIKE '" + search + "'" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldDescription + " LIKE '" + search + "')"; } if (!string.IsNullOrEmpty(departmentId)) { BaseOrganizeManager organizeManager = new BaseOrganizeManager(this.DbHelper, this.UserInfo); string[] organizeIds = organizeManager.GetChildrensId(BaseOrganizeEntity.FieldId, departmentId, BaseOrganizeEntity.FieldParentId); if (organizeIds != null && organizeIds.Length > 0) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldCompanyId + " IN (" + StringUtil.ArrayToList(organizeIds) + ")" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldDepartmentId + " IN (" + StringUtil.ArrayToList(organizeIds) + ")" + " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldWorkgroupId + " IN (" + StringUtil.ArrayToList(organizeIds) + "))"; } } if (!String.IsNullOrEmpty(auditStates)) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldAuditStatus + " = '" + auditStates + "')"; } if (enabled != null) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldEnabled + " = " + ((bool)enabled ? 1:0) + ")"; } if ((roleIds != null) && (roleIds.Length > 0)) { string roles = StringUtil.ArrayToList(roleIds, "'"); sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldRoleId + " IN (" + roles + ") "; sqlQuery += " OR " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldId + " IN (" + "SELECT " + BaseUserRoleEntity.FieldUserId + " FROM " + BaseUserRoleEntity.TableName + " WHERE " + BaseUserRoleEntity.FieldRoleId + " IN (" + roles + ")" + "))"; } // 是否过滤用户, 获得组织机构列表, 这里需要一个按用户过滤得功能 if ((!UserInfo.IsAdministrator) && (BaseSystemInfo.UsePermissionScope)) { // string permissionScopeItemCode = "Resource.ManagePermission"; BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(this.DbHelper, this.UserInfo); string permissionScopeItemId = permissionItemManager.GetId(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, permissionScopeItemCode)); if (!string.IsNullOrEmpty(permissionScopeItemId)) { // 从小到大的顺序进行显示,防止错误发生 BaseUserScopeManager userPermissionScopeManager = new BaseUserScopeManager(this.DbHelper, this.UserInfo); string[] organizeIds = userPermissionScopeManager.GetOrganizeIds(this.UserInfo.Id, permissionScopeItemId); // 没有任何数据权限 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.None).ToString())) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldId + " = NULL ) "; } // 按详细设定的数据 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.Detail).ToString())) { BasePermissionScopeManager permissionScopeManager = new BasePermissionScopeManager(DbHelper, UserInfo); string[] userIds = permissionScopeManager.GetUserIds(UserInfo.Id, permissionScopeItemCode); sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldId + " IN (" + BaseBusinessLogic.ObjectsToList(userIds) + ")) "; } // 自己的数据,仅本人 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.User).ToString())) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldId + " = " + this.UserInfo.Id + ") "; } // 用户所在工作组数据 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.UserWorkgroup).ToString())) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldWorkgroupId + " = " + this.UserInfo.WorkgroupId + ") "; } // 用户所在部门数据 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.UserDepartment).ToString())) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldDepartmentId + " = " + this.UserInfo.DepartmentId + ") "; } // 用户所在分支机构数据 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.UserSubCompany).ToString())) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldSubCompanyId + " = " + this.UserInfo.SubCompanyId + ") "; } // 用户所在公司数据 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.UserCompany).ToString())) { sqlQuery += " AND (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldCompanyId + " = " + this.UserInfo.CompanyId + ") "; } // 全部数据,这里就不用设置过滤条件了 if (StringUtil.Exists(organizeIds, ((int)PermissionScope.All).ToString())) { } } } sqlQuery += " ORDER BY " + BaseUserEntity.TableName + "." + BaseUserEntity.FieldSortCode; return(DbHelper.Fill(sqlQuery)); }
private string GetSearchConditional(string systemCode, string permissionCode, string condition, string[] roleIds, bool?enabled, string auditStates, string companyId = null, string departmentId = null, bool onlyOnline = false) { var sb = BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDeleted + " = 0 " + " AND " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldIsVisible + " = 1 "; if (enabled.HasValue) { if (enabled == true) { sb += " AND " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldEnabled + " = 1 "; } else { sb += " AND " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldEnabled + " = 0 "; } } if (onlyOnline) { sb += " AND " + BaseUserEntity.CurrentTableName + ".Id IN (SELECT Id FROM " + BaseUserLogonEntity.CurrentTableName + " WHERE UserOnline = 1) "; } if (!string.IsNullOrEmpty(condition)) { // 传递过来的表达式,还是搜索值? if (condition.IndexOf("AND", StringComparison.OrdinalIgnoreCase) < 0 && condition.IndexOf("=", StringComparison.OrdinalIgnoreCase) < 0) { condition = StringUtil.GetSearchString(condition); sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldUserName + " LIKE '%" + condition + "%'" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldSimpleSpelling + " LIKE '%" + condition + "%'" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldCode + " LIKE '%" + condition + "%'" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldRealName + " LIKE '%" + condition + "%'" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldQuickQuery + " LIKE '%" + condition + "%'" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldCompanyName + " LIKE '%" + condition + "%'" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDepartmentName + " LIKE '%" + condition + "%'" // + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDescription + " LIKE '%" + search + "%'" + ")"; } else { sb += " AND (" + condition + ")"; } } if (!string.IsNullOrEmpty(departmentId)) { /* * BaseOrganizationManager organizationManager = new BaseOrganizationManager(this.DbHelper, this.UserInfo); * string[] ids = organizationManager.GetChildrensId(BaseOrganizationEntity.FieldId, departmentId, BaseOrganizationEntity.FieldParentId); * if (ids != null && ids.Length > 0) * { * condition += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldCompanyId + " IN (" + StringUtil.ArrayToList(ids) + ")" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDepartmentId + " IN (" + StringUtil.ArrayToList(ids) + ")" + " OR " + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldWorkgroupId + " IN (" + StringUtil.ArrayToList(ids) + "))"; + } */ sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDepartmentId + " = '" + departmentId + "')"; } if (!string.IsNullOrEmpty(companyId)) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldCompanyId + " = '" + companyId + "')"; } if (!string.IsNullOrEmpty(auditStates)) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldAuditStatus + " = '" + auditStates + "'"; // 待审核 if (auditStates.Equals(AuditStatus.WaitForAudit.ToString())) { sb += " OR " + BaseUserEntity.CurrentTableName + ".Id IN ( SELECT Id FROM " + BaseUserLogonEntity.CurrentTableName + " WHERE LockEndTime > " + dbHelper.GetDbNow() + ") "; } sb += ")"; } if (enabled != null) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldEnabled + " = " + ((bool)enabled ? 1 : 0) + ")"; } if ((roleIds != null) && (roleIds.Length > 0)) { var roles = StringUtil.ArrayToList(roleIds, "'"); sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldId + " IN (" + "SELECT " + BaseUserRoleEntity.FieldUserId + " FROM " + BaseUserRoleEntity.CurrentTableName + " WHERE " + BaseUserRoleEntity.FieldRoleId + " IN (" + roles + ")" + "))"; } // 是否过滤用户, 获得组织机构列表, 这里需要一个按用户过滤得功能 if (!string.IsNullOrEmpty(permissionCode) && (!IsAdministrator(UserInfo.Id.ToString())) && (BaseSystemInfo.UsePermissionScope)) { // string permissionCode = "Resource.ManagePermission"; var permissionId = new BaseModuleManager().GetIdByCodeByCache(systemCode, permissionCode); if (!string.IsNullOrEmpty(permissionId)) { // 从小到大的顺序进行显示,防止错误发生 var userPermissionScopeManager = new BaseUserScopeManager(DbHelper, UserInfo); var organizationIds = userPermissionScopeManager.GetOrganizationIds(UserInfo.SystemCode, UserInfo.Id.ToString(), permissionId); // 没有任何数据权限 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.NotAllowed).ToString())) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldId + " = NULL ) "; } // 按详细设定的数据 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.ByDetails).ToString())) { var permissionScopeManager = new BasePermissionScopeManager(DbHelper, UserInfo, CurrentTableName); var userIds = permissionScopeManager.GetUserIds(UserInfo.SystemCode, UserInfo.Id.ToString(), permissionCode); sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldId + " IN (" + StringUtil.ArrayToList(userIds) + ")) "; } // 自己的数据,仅本人 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.OnlyOwnData).ToString())) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldId + " = " + UserInfo.Id + ") "; } // 用户所在工作组数据 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.UserWorkgroup).ToString())) { // condition += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldWorkgroupId + " = " + this.UserInfo.WorkgroupId + ") "; } // 用户所在部门数据 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.UserDepartment).ToString())) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldDepartmentId + " = " + UserInfo.DepartmentId + ") "; } // 用户所在分支机构数据 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.UserSubCompany).ToString())) { // condition += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldSubCompanyId + " = '" + this.UserInfo.SubCompanyId + "') "; } // 用户所在公司数据 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.UserCompany).ToString())) { sb += " AND (" + BaseUserEntity.CurrentTableName + "." + BaseUserEntity.FieldCompanyId + " = '" + UserInfo.CompanyId + "') "; } // 全部数据,这里就不用设置过滤条件了 if (StringUtil.Exists(organizationIds, ((int)PermissionOrganizationScope.AllData).ToString())) { } } } return(sb); }