/// <summary> /// 替换规则Sql /// </summary> /// <param name="ruleSql"></param> /// <param name="userId">用户Id</param> /// <returns></returns> private async Task <string> GetRuleSql(string ruleSql, Guid userId) { //获取角色、组、岗位数据 IList <SystemPrivilegeDetailListOutput> privilegeDetailDtos = (await _permissionUsernRepository.GetSystemPrivilegeDetailOutputsByUserId(new IdInput { Id = userId })).ToList(); if (ruleSql.Contains("{所有}")) { ruleSql = ruleSql.Replace("{所有}", "1=1"); } if (ruleSql.Contains("{当前用户}")) { ruleSql = ruleSql.Replace("{当前用户}", userId.ToString()); } if (ruleSql.Contains("{所在组织}")) { //获取当前人员所在组织 ruleSql = ruleSql.Replace("{所在组织}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().InSql()); } if (ruleSql.Contains("{所在组织及下级组织}")) { //查找机构 var orgId = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构) .Select(d => d.PrivilegeMasterValue); //获取当前人员所在组织及下级组织 ruleSql = ruleSql.Replace("{所在组织及下级组织}", (await _organizationRepository.GetOrganizationsByParentId(new SystemOrganizationsByParentIdInput { Id = orgId.FirstOrDefault() })).Select(s => s.OrganizationId).ToList().ExpandAndToString().InSql()); } if (ruleSql.Contains("{所在组织代码}")) { //获取当前人员所在组织 ruleSql = ruleSql.Replace("{所在组织代码}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().InSql()); } if (ruleSql.Contains("{所在岗位}")) { //获取当前人员所在岗位 ruleSql = ruleSql.Replace("{所在岗位}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.岗位).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().InSql()); } if (ruleSql.Contains("{所在工作组}")) { //获取当前人员所在工作组 ruleSql = ruleSql.Replace("{所在工作组}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().InSql()); } return(ruleSql); }
/// <summary> /// 替换规则Sql /// </summary> /// <param name="ruleSql"></param> /// <param name="userId">用户Id</param> /// <returns></returns> private async Task <string> GetRuleSql(string ruleSql, Guid userId) { //获取角色、组、岗位数据 IList <SystemPrivilegeDetailListOutput> privilegeDetailDtos = (await _permissionUsernRepository.GetSystemPrivilegeDetailOutputsByUserId(new IdInput { Id = userId })).ToList(); if (ruleSql.Contains("{所有}")) { ruleSql = ruleSql.Replace("{所有}", "1=1"); } if (ruleSql.Contains("{当前用户}")) { ruleSql = ruleSql.Replace("{当前用户}", userId.ToString()); } if (ruleSql.Contains("{所在组织}")) { //获取当前人员所在组织 ruleSql = ruleSql.Replace("{所在组织}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().SqlRemoveStr()); } if (ruleSql.Contains("{所在组织代码}")) { //获取当前人员所在组织 ruleSql = ruleSql.Replace("{所在组织代码}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().SqlRemoveStr()); } if (ruleSql.Contains("{所在岗位}")) { //获取当前人员所在岗位 ruleSql = ruleSql.Replace("{所在岗位}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.岗位).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().SqlRemoveStr()); } if (ruleSql.Contains("{所在工作组}")) { //获取当前人员所在工作组 ruleSql = ruleSql.Replace("{所在工作组}", privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组).Select(d => d.PrivilegeMasterValue).ToList().ExpandAndToString().SqlRemoveStr()); } return(ruleSql); }
/// <summary> /// 根据用户Id获取角色、组、岗位信息 /// </summary> /// <param name="input">人员Id</param> /// <returns></returns> public async Task <IEnumerable <SystemPrivilegeDetailListOutput> > GetSystemPrivilegeDetailOutputsByUserId( IdInput input) { return(await _permissionUsernRepository.GetSystemPrivilegeDetailOutputsByUserId(input)); }