コード例 #1
0
ファイル: RoleService.cs プロジェクト: zszqwe/MvcBase
        //获取组中的学习顾问
        private static List <UserLiteDto> GetGroupConsultant(int userId, bool isGettingStudyConsultant)
        {
            //-----------------------
            // 获取所有顾问
            //-----------------------
            var allConsultant = GetConsultant(-1, isGettingStudyConsultant);

            //-----------------------
            // 获取用户所属部门所有用户
            //-----------------------
            var engine        = PermissionDb.CreateEngine();
            var dbDepartments = DepartmentDbAction.GetDepartments(userId);
            var departmentIds = new List <int>(100);

            GetUserDepartmentIds(dbDepartments, departmentIds);
            var query3 = from user in engine.Esmart_Sys_Users
                         join depUser in engine.Esmart_Sys_Department_User on user.UserID equals depUser.UserId
                         where departmentIds.Contains(depUser.DeparentId)
                         select new UserLiteDto
            {
                UserID   = user.UserID,
                Ename    = user.Ename,
                TrueName = user.TrueName,
                WorkNo   = user.WorkNo,
                Sex      = user.Sex
            };

            //-----------------------
            // 取所有顾问和当前部门所有用户的交集并返回
            //-----------------------
            var depUsers = query3.ToArray();

            return(allConsultant.Intersect(depUsers).ToList());
        }
コード例 #2
0
ファイル: RoleService.cs プロジェクト: zszqwe/MvcBase
        public List <UserLiteDto> GetUsersByFunctionKey(string functionKey, int userId)
        {
            var engine = PermissionDb.CreateEngine();

            var funcId = engine.Esmart_Sys_Functions.Where(n => n.FunctionKey == functionKey).Select(n => n.FunctionId).FirstOrDefault();

            if (funcId < 1)
            {
                return(new List <UserLiteDto>(0));
            }

            var query1 = (from user in engine.Esmart_Sys_Users
                          join userRole in engine.Esmart_Sys_User_Roles on user.UserID equals userRole.UserId
                          join roleFunc in engine.Esmart_Sys_Role_Navigation_Function on userRole.RoleId equals roleFunc.RoleId
                          where user.Isleave != 1 && user.IsDelete != 1 && roleFunc.FunctionId == funcId
                          select new UserLiteDto
            {
                UserID = user.UserID,
                Ename = user.Ename,
                TrueName = user.TrueName,
                WorkNo = user.WorkNo
            }).Union(
                from user in engine.Esmart_Sys_Users
                join userFunc in engine.Esmart_Sys_User_Navigation_Function on user.UserID equals userFunc.UserId
                where user.Isleave != 1 && user.IsDelete != 1 && userFunc.FunctionId == funcId
                select new UserLiteDto
            {
                UserID   = user.UserID,
                Ename    = user.Ename,
                TrueName = user.TrueName,
                WorkNo   = user.WorkNo
            });
            List <UserLiteDto> lstUsers = query1.ToList();
            var allUsers = lstUsers.Where((x, i) => lstUsers.FindIndex(f => f.UserID == x.UserID) == i).ToList();

            if (userId > 0)
            {
                //-----------------------
                // 获取用户所属部门所有用户
                //-----------------------
                var dbDepartments = DepartmentDbAction.GetDepartments(userId);
                var departmentIds = new List <int>(100);
                GetUserDepartmentIds(dbDepartments, departmentIds);
                var query2 = from user in engine.Esmart_Sys_Users
                             join depUser in engine.Esmart_Sys_Department_User on user.UserID equals depUser.UserId
                             where departmentIds.Contains(depUser.DeparentId)
                             select new UserLiteDto
                {
                    UserID   = user.UserID,
                    Ename    = user.Ename,
                    TrueName = user.TrueName,
                    WorkNo   = user.WorkNo,
                    Sex      = user.Sex
                };
                var depUsers = query2.ToArray();
                return(allUsers.Intersect(depUsers).ToList());
            }

            return(allUsers);
        }
コード例 #3
0
        /// <summary>
        /// 根据用户Id获取部门列表
        /// 用户Id->RoleId->DepartmentId
        /// </summary>
        public List <DepartmentResponse> GetDepartmentsByUserId(int userId, int withUsers)
        {
            var departments = DepartmentDbAction.GetDepartments(CommonAction.IsSysAdmin(userId) ? null : (int?)userId);
            var result      = new List <DepartmentResponse>(10);

            DepartmentDto(departments, result, withUsers > 0);
            return(result);
        }
コード例 #4
0
        public SoaDataPageResponse <UsersView> GetUsersByDepartList(SoaDataPage <UserSearchModel> filter)
        {
            SoaDataPageResponse <UsersView> response;

            if (filter.Where.DeapartmentId != 0)
            {
                response = DepartmentDbAction.GetUsersByDepartList(filter);
            }
            else
            {
                IQueryable <UsersView> query;

                if (CommonAction.IsSysAdmin(filter.Where.UserId))
                {
                    query = DepartmentUserDbAction.GetAllUsers(true).AsQueryable();
                }
                else
                {
                    var userList = new List <UsersView>(100);

                    var departments = DepartmentDbAction.GetDepartments(filter.Where.UserId);

                    foreach (var department in departments)
                    {
                        var users = DepartmentUserDbAction.GetUsersInDepartment(department.DeparentId, true);
                        userList.AddRange(users);
                    }

                    query = userList.AsQueryable();
                }

                if (!string.IsNullOrWhiteSpace(filter.Where.TrueName))
                {
                    query = query.Where(n => n.TrueName != null && n.TrueName.Contains(filter.Where.TrueName));
                }

                if (!string.IsNullOrWhiteSpace(filter.Where.Ename))
                {
                    query = query.Where(n => n.Ename != null && n.Ename.Contains(filter.Where.Ename));
                }

                if (!string.IsNullOrWhiteSpace(filter.Where.WorkNo))
                {
                    query = query.Where(n => n.WorkNo != null && n.WorkNo.Contains(filter.Where.WorkNo));
                }

                response = new SoaDataPageResponse <UsersView> {
                    Count = query.Count()
                };

                query = !string.IsNullOrWhiteSpace(filter.OrderBy) ? query.SortBy(filter.OrderBy + " " + filter.SortCol) : query.OrderByDescending(n => n.CreateTime);

                response.Body = query.Skip((filter.PageIndex - 1) * filter.PageSize).Take(filter.PageSize).ToList();
            }

            foreach (var user in response.Body)
            {
                user.RoleNames = string.Join(",", UserRolesDbAction.GetUserRoleNames(user.UserID));
            }

            return(response);
        }