示例#1
0
        public List<V_Permission> GetUserMenuPerms(string menuCode, string userID)
        {
            using (SysUserBLL bll = new SysUserBLL())
            {
                #region 
                List<V_Permission> plist;
                string keyString = "UserMenuPerms" + menuCode + userID;
                if (WCFCache.Current[keyString] == null)
                {
                    IQueryable<V_Permission> IQList = bll.GetUserMenuPerms(menuCode, userID);
                    plist = IQList == null ? null : IQList.ToList();
                    WCFCache.Current.Insert(keyString, plist, DateTime.Now.AddMinutes(15));


                }
                else
                {
                    Tracer.Debug(keyString);
                    //Tracer.Debug("--" + "-------调用了缓存-----------------");
                    plist = (List<V_Permission>)WCFCache.Current[keyString];

                }
                //Tracer.Serializer(plist, "V_Permission");
                #endregion

                return plist == null ? null : plist;

            }
        }
示例#2
0
文件: BaseBLL.cs 项目: jjg0519/OA
        /// <summary>
        /// 根据权限过滤
        /// </summary>
        /// <param name="filterString"></param>
        /// <param name="queryParas"></param>
        /// <param name="userID"></param>
        /// <param name="entityName"></param>
        protected void SetOrganizationFilter(ref string filterString, ref System.Collections.Generic.List <object> queryParas, string employeeID, string entityName)
        {
            //获取用户
            SysUserBLL UserBll = new SysUserBLL();
            T_SYS_USER user    = UserBll.GetUserByEmployeeID(employeeID);

            V_EMPLOYEEPOST vemp = employeeBll.GetEmployeeDetailByID(user.EMPLOYEEID);

            if (vemp == null)
            {
                return;
            }
            T_HR_EMPLOYEE emp = vemp.EMPLOYEEPOSTS[0].T_HR_EMPLOYEE;


            //获取正常的角色用户权限

            IQueryable <V_Permission> plist = UserBll.GetUserMenuPerms(entityName, user.SYSUSERID);

            IQueryable <V_Permission> perms = plist;

            if (perms == null)
            {
                return;
            }

            //获取查询的权限,值越小,权限越大
            int maxPerm  = -1;
            var permlist = perms.Where(p => p.Permission.PERMISSIONVALUE == "3");

            if (permlist.Count() > 0)
            {
                maxPerm = permlist.Min(p => Convert.ToInt32(p.RoleMenuPermission.DATARANGE));
            }
            //perms.Where(p => p.Permission.PERMISSIONVALUE == "3").Min(p => Convert.ToInt32(p.RoleMenuPermission.DATARANGE));
            //var maxPerm = "2";



            //if (!emp.T_HR_EMPLOYEEPOST.IsLoaded)
            //{
            //    emp.T_HR_EMPLOYEEPOST.Load();
            //}

            //获取自定义权限
            int custPerm = GetCustomPerms(entityName, emp);

            if (custPerm < maxPerm)
            {
                maxPerm = custPerm;
            }

            //看整个公司的
            if (Convert.ToInt32(maxPerm) == Convert.ToInt32(AssignObjectType.Company))
            {
                if (!string.IsNullOrEmpty(filterString))
                {
                    filterString += " AND ";
                }

                filterString += " (";
                int i = 0;
                foreach (T_HR_EMPLOYEEPOST ep in emp.T_HR_EMPLOYEEPOST)
                {
                    if (i > 0)
                    {
                        filterString += " OR ";
                    }

                    filterString += "OWNERCOMPANYID==@" + queryParas.Count().ToString();


                    //暂时先去掉
                    //if (!ep.T_HR_POSTReference.IsLoaded)
                    //    ep.T_HR_POSTReference.Load();

                    //if (ep.T_HR_POST != null && ep.T_HR_POST.T_HR_DEPARTMENTReference.IsLoaded == false)
                    //    ep.T_HR_POST.T_HR_DEPARTMENTReference.Load();

                    //if (ep.T_HR_POST != null && ep.T_HR_POST.T_HR_DEPARTMENT != null && ep.T_HR_POST.T_HR_DEPARTMENT.T_HR_COMPANYReference.IsLoaded == false)
                    //    ep.T_HR_POST.T_HR_DEPARTMENT.T_HR_COMPANYReference.Load();

                    queryParas.Add(ep.T_HR_POST.T_HR_DEPARTMENT.T_HR_COMPANY.COMPANYID);

                    i++;
                }
                filterString += ") ";
            }


            //看部门的
            if (Convert.ToInt32(maxPerm) == Convert.ToInt32(AssignObjectType.Department))
            {
                if (!string.IsNullOrEmpty(filterString))
                {
                    filterString += " AND ";
                }

                filterString += " (";
                int i = 0;
                foreach (T_HR_EMPLOYEEPOST ep in emp.T_HR_EMPLOYEEPOST)
                {
                    if (i > 0)
                    {
                        filterString += " OR ";
                    }

                    filterString += "OWNERDEPARTMENTID==@" + queryParas.Count().ToString();

                    if (!ep.T_HR_POSTReference.IsLoaded)
                    {
                        ep.T_HR_POSTReference.Load();
                    }

                    if (ep.T_HR_POST != null && ep.T_HR_POST.T_HR_DEPARTMENTReference.IsLoaded == false)
                    {
                        ep.T_HR_POST.T_HR_DEPARTMENTReference.Load();
                    }

                    queryParas.Add(ep.T_HR_POST.T_HR_DEPARTMENT.DEPARTMENTID);

                    i++;
                }
                filterString += ") ";
            }


            //看岗位的
            if (Convert.ToInt32(maxPerm) == Convert.ToInt32(AssignObjectType.Post))
            {
                if (!string.IsNullOrEmpty(filterString))
                {
                    filterString += " AND ";
                }

                filterString += " (";
                int i = 0;
                foreach (T_HR_EMPLOYEEPOST ep in emp.T_HR_EMPLOYEEPOST)
                {
                    if (i > 0)
                    {
                        filterString += " OR ";
                    }

                    filterString += "OWNERPOSTID==@" + queryParas.Count().ToString();

                    if (!ep.T_HR_POSTReference.IsLoaded)
                    {
                        ep.T_HR_POSTReference.Load();
                    }

                    queryParas.Add(ep.T_HR_POST.POSTID);

                    i++;
                }
                filterString += ") ";
            }

            //看员工
            if (Convert.ToInt32(maxPerm) == Convert.ToInt32(AssignObjectType.Employee))
            {
                if (!string.IsNullOrEmpty(filterString))
                {
                    filterString += " AND ";
                }

                filterString += "OWNERID==@" + queryParas.Count().ToString();
                queryParas.Add(employeeID);
            }
        }