/// <summary>
        ///
        /// </summary>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        public List <View_DataRolePosition> GetUserDataRoleInfos(View_DataRolePositionQueryParam queryParam)
        {
            var result = activeContext.View_DataRolePosition.Where(p => p.PositionId.HasValue &&
                                                                   queryParam.PositionIds.Contains(p.PositionId.Value)).ToList();

            return(result);
        }
        /// <summary>
        /// 获取用户数据权限信息
        /// </summary>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        public Hashtable GetUserDataInfos(View_DataRolePositionQueryParam queryParam)
        {
            Hashtable result = new Hashtable();
            //取得所有岗位下的所有数据权限数据
            var dataitems = activeContext.View_DataRolePosition.Where(p => p.PositionId.HasValue &&
                                                                      queryParam.PositionIds.Contains(p.PositionId.Value)).ToList();

            //取得数据对象列表
            var dataobjects = dataitems.Select(p => p.DataObjectId).Distinct().ToList();


            //循环处理每一个数据对象
            foreach (var dataobject in dataobjects)
            {
                //取得该数据对象下的dataitem清单
                var tempdataitems = dataitems.Where(p => p.DataObjectId == dataobject).ToList();
                //var tempdataobject = new AuthDataObject();
                //tempdataobject.Id = tempdataitems[0].DataObjectId;
                //tempdataobject.Code = tempdataitems[0].DataObjectCode;
                //tempdataobject.Name = tempdataitems[0].DataObjectName;
                //tempdataobject.ApplicationId = tempdataitems[0].DataObjectApplicationId.Value;
                //tempdataobject.DataBase = tempdataitems[0].DataObjectDataBase;
                //tempdataobject.TableName = tempdataitems[0].DataObjectTableName;
                //tempdataobject.Assembly = tempdataitems[0].DataObjectAssembly;
                //tempdataobject.ClassFullName = tempdataitems[0].DataObjectClassFullName;
                //tempdataobject.Sort = tempdataitems[0].DataObjectSort.Value;

                result.Add(tempdataitems[0].DataObjectClassFullName, tempdataitems);
            }

            //var aa = new List<Guid>();
            //foreach (DictionaryEntry bb in result)
            //{
            //    if (bb.Key.ToString().Contains("OrgOrganization"))
            //    {
            //        var cc = bb.Value as List<ViewDataRolePosition>;
            //        var dd = cc.Select(p=>p.Id).ToList();
            //        aa = aa.Concat(dd).ToList();
            //    }
            //}
            //var ee = aa.Count;

            return(result);
        }
Example #3
0
        /// <summary>
        /// 获取用户数据权限信息
        /// </summary>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        public Hashtable GetUserDataInfos(View_DataRolePositionQueryParam queryParam)
        {
            Hashtable result = vdrpDal.GetUserDataInfos(queryParam);

            return(result);
        }
Example #4
0
        /// <summary>
        /// 获取用户全部信息
        /// </summary>
        /// <param name="loginname"></param>
        public UserBackFullInfo GetUserFullInfo(Org_UserQueryParam queryParam)
        {
            UserBackFullInfo result = new UserBackFullInfo();

            //全都为空,查个毛啊,这里是精确查询1条,不是模糊查多条
            if (queryParam.Id == Guid.Empty && string.IsNullOrEmpty(queryParam.LoginName) &&
                string.IsNullOrEmpty(queryParam.Phone) && string.IsNullOrEmpty(queryParam.Email) &&
                string.IsNullOrEmpty(queryParam.IdCard))
            {
                return(null);  //返回空,让调用处报异常去
            }
            result.BaseInfo = this.GetUserBaseInfo(queryParam);

            //获取用户组织机构
            if (result.BaseInfo.IsSuperMgr && result.BaseInfo.LoginName == "sysadmin") //超级管理员
            {
                result.UserOrgInfoList     = (new Org_OrganizationDal()).GetAllUserOrgInfo();
                result.UserFeatureInfoList = vfoDal.GetSystemManagerFeatures().ToList();
                result.UserMenuInfoList    = vmsDal.GetAll().ToList();
                //数据权限暂时不考虑
            }
            else
            {
                if (result.BaseInfo.IsSuperMgr)
                {
                    result.UserOrgInfoList     = this.GetUserOrgInfos(queryParam);
                    result.UserFeatureInfoList = vfoDal.GetSystemManagerFeatures().ToList();
                    //var aa = result.UserFeatureInfoList.Where(p => p.FeatureCode == "DCBI-CRE-Head" || p.FeatureCode == "DCBI-CRE-Send").ToList();
                    result.UserMenuInfoList = vmsDal.GetAll().ToList();
                    //var bb = result.UserMenuInfoList.Where(p => p.MenuCode == "DCBI-CRE-Draft" || p.MenuCode == "DCBI-CRE-Finance").ToList();
                }
                else
                {
                    result.UserOrgInfoList = this.GetUserOrgInfos(queryParam);

                    //用户岗位
                    var PositionIds = result.UserOrgInfoList.Where(k => k.PositionId.HasValue).Select(p => p.PositionId.Value).ToList();

                    #region 获取用户功能权限
                    View_FeaturePositionQueryParam featurepqueryParam = new View_FeaturePositionQueryParam();
                    //取出用户的多个岗位,查询多岗位下的功能项
                    //featurepqueryParam.PositionIds = result.UserOrgInfoList.Where(k => k.PositionId.HasValue).Select(p => p.PositionId.Value).ToList();
                    featurepqueryParam.PositionIds = PositionIds;
                    result.UserFeatureInfoList     = this.GetUserFeatureInfos(featurepqueryParam);
                    #endregion

                    #region 获取用户菜单
                    //获取用户的功能项,查询对应的菜单(IsMenu是菜单的功能项)
                    View_MenuSysQueryParam menusyqueryParam = new View_MenuSysQueryParam();
                    menusyqueryParam.FeatureIds = result.UserFeatureInfoList.Where(k => k.FeatureId.HasValue && k.FeatureIsMenu.HasValue && k.FeatureIsMenu.Value == true).Select(p => p.FeatureId.Value).Distinct().ToList();
                    result.UserMenuInfoList     = this.GetUserMenuInfoList(menusyqueryParam);

                    //加上特别配置的菜单
                    Auth_PositionSpecialMenuConfigQueryParam apsmcqueryParam = new Auth_PositionSpecialMenuConfigQueryParam();
                    apsmcqueryParam.PositionIds = PositionIds;
                    var specialMenuIds = this.GetMenuByPositions(apsmcqueryParam); //根据岗位ids查找岗位特别配置的菜单ids
                    menusyqueryParam.Ids = specialMenuIds;
                    var specialMenuInfos = this.GetMenuByIds(menusyqueryParam);    //根据菜单ids查找菜单信息
                    result.UserMenuInfoList = result.UserMenuInfoList.Concat(specialMenuInfos).DistinctBy(p => p.Id).ToList();
                    #endregion

                    //取得用户数据权限
                    View_DataRolePositionQueryParam udataquery = new View_DataRolePositionQueryParam();
                    //取得用户所有岗位
                    //udataquery.PositionIds = result.UserOrgInfoList.Where(k => k.PositionId.HasValue).Select(p => p.PositionId.Value).Distinct().ToList();
                    udataquery.PositionIds  = PositionIds;
                    result.UserDataInfoList = this.GetUserDataInfos(udataquery);
                }
                #region 获取当前登录用户默认组织机构、公司、区域信息
                var OrgAll = (new Org_OrganizationDal()).GetAllOrg();

                //当前登录组织机构
                var notNullOrg = result.UserOrgInfoList.Where(f => !string.IsNullOrEmpty(f.OrganizationCode)).ToList();
                var firstOrg   = notNullOrg.OrderBy(f => f.OrganizationCode).FirstOrDefault();
                if (firstOrg != null)
                {
                    //result.CurrentOrganizationId = firstOrg.OrganizationId.Value;
                    //result.CurrentOrganizationCode = firstOrg.OrganizationCode;
                    //result.CurrentOrganizationName = firstOrg.OrganizationName;
                }
                List <string> parentCode = new List <string>();
                //获取当前登录用户的所有父级组织机构
                foreach (var get in notNullOrg)
                {
                    var OriCode = get.OrganizationRelationShipCode.Replace("[" + get.OrganizationCode + "]", "");
                    var Ary     = OriCode.Split(']');
                    foreach (var str in Ary)
                    {
                        if (!string.IsNullOrEmpty(str))
                        {
                            parentCode.Add(str.Replace("[", "").Replace("]", ""));
                        }
                    }
                }

                var getCompany = OrgAll.Where(f => f.OrganizationCategoryCode == "Company" && parentCode.Contains(f.Code)).OrderBy(f => f.Code).FirstOrDefault();
                var getArea    = OrgAll.Where(f => f.OrganizationCategoryCode == "Region" && parentCode.Contains(f.Code)).OrderBy(f => f.Code).FirstOrDefault();
                if (getCompany != null)
                {
                    //result.CurrentCompanyId = getCompany.OrganizationId;
                    //result.CurrentCompanyCode = getCompany.Code;
                    //result.CurrentCompanyName = getCompany.Name;
                }
                if (getArea != null)
                {
                    //result.CurrentAreaId = getArea.OrganizationId;
                    //result.CurrentAreaCode = getArea.Code;
                    //result.CurrentAreaName = getArea.Name;
                }
                else
                {
                    //未找到区域公司时查找是否存在总公司
                    getArea = OrgAll.Where(f => f.OrganizationCategoryCode == "MainCompany" && parentCode.Contains(f.Code)).OrderBy(f => f.Code).FirstOrDefault();
                    if (getArea != null)
                    {
                        //result.CurrentAreaId = getArea.OrganizationId;
                        //result.CurrentAreaCode = getArea.Code;
                        //result.CurrentAreaName = getArea.Name;
                    }
                }

                #endregion
            }
            return(result);
        }