/// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
 /// <summary>
 ///     根据用户Id获取角色、组、岗位信息
 /// </summary>
 /// <param name="input">人员Id</param>
 /// <returns></returns>
 public async Task <IEnumerable <SystemPrivilegeDetailListOutput> > GetSystemPrivilegeDetailOutputsByUserId(
     IdInput input)
 {
     return(await _permissionUsernRepository.GetSystemPrivilegeDetailOutputsByUserId(input));
 }