コード例 #1
0
        /// <summary>
        /// 加载特定用户的模块
        /// TODO:这里会加载用户及用户角色的所有模块,“为用户分配模块”功能会给人一种混乱的感觉,但可以接受
        /// </summary>
        /// <param name="userId">The user unique identifier.</param>
        public IEnumerable <SysModule> LoadForUser(int userId)
        {
            var roleIds   = _revelanceApp.Get(Define.USERROLE, true, userId);
            var moduleIds = UnitWork.Find <SysRelevance>(
                u =>
                (u.FirstId == userId && u.RelKey == Define.USERMODULE) ||
                (u.RelKey == Define.ROLEMODULE && roleIds.Contains(u.FirstId.Value))).Select(u => u.SecondId);

            return(UnitWork.Find <SysModule>(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo));
        }
コード例 #2
0
ファイル: SysRoleApp.cs プロジェクト: Edchen29/SanyMES-master
        /// <summary>
        /// 加载当前登录用户可访问的一个部门及子部门全部角色
        /// </summary>
        public TableData Load(PageReq pageRequest, int?orgId)
        {
            var loginUser = _auth.GetCurrentUser();

            string cascadeId = ".0.";

            if (orgId != null)
            {
                var org = loginUser.Orgs.SingleOrDefault(u => u.Id == orgId);
                cascadeId = org.CascadeId;
            }

            var ids     = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id.Value).ToArray();
            var roleIds = _revelanceApp.Get(Define.ROLEORG, false, ids);

            //SQL2008不支持分页的语法
            //var data = UnitWork.Find<Role>(u => roleIds.Contains(u.Id)).ToList();
            //var roles = data
            //    .OrderBy(u => u.Name)
            //    .Skip((pageRequest.page - 1) * pageRequest.limit)
            //    .Take(pageRequest.limit);

            var roles = UnitWork.Find <SysRole>(u => roleIds.Contains(u.Id.Value))
                        .OrderBy(u => u.Name)
                        .Skip((pageRequest.page - 1) * pageRequest.limit)
                        .Take(pageRequest.limit);

            var records = Repository.GetCount(u => roleIds.Contains(u.Id.Value));

            var roleViews = new List <SysRoleView>();

            foreach (var role in roles.ToList())
            {
                SysRoleView uv   = role;
                var         orgs = LoadByRole(role.Id.Value);
                uv.Organizations   = string.Join(",", orgs.Select(u => u.Name).ToList());
                uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
                roleViews.Add(uv);
            }

            return(new TableData
            {
                count = records,
                data = roleViews,
            });
        }
コード例 #3
0
        /// <summary>
        /// 加载当前登录用户可访问的一个部门及子部门全部用户
        /// </summary>
        public TableData Load(PageReq request, int?orgId)
        {
            var loginUser = _auth.GetCurrentUser();

            string cascadeId = ".0.";

            if (orgId != null)
            {
                var org = loginUser.Orgs.SingleOrDefault(u => u.Id == orgId.Value);
                cascadeId = org.CascadeId;
            }

            var ids     = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id.Value).ToArray();
            var userIds = _revelanceApp.Get(Define.USERORG, false, ids);

            //SQL2008不支持分页的语法
            //var data = UnitWork.Find<User>(u => userIds.Contains(u.Id)).ToList();
            //var users = data
            //       .OrderBy(u => u.Name)
            //       .Skip((request.page - 1) * request.limit)
            //       .Take(request.limit);

            var users = Repository.Find(u => userIds.Contains(u.Id.Value) && u.Account != "System")
                        .OrderBy(u => u.Name)
                        .Skip((request.page - 1) * request.limit)
                        .Take(request.limit);

            var records = Repository.GetCount(u => userIds.Contains(u.Id.Value) && u.Account != "System");

            var userviews = new List <SysUserView>();

            foreach (var user in users.ToList())
            {
                SysUserView uv   = user;
                var         orgs = LoadByUser(user.Id.Value);
                uv.Organizations   = string.Join(",", orgs.Select(u => u.Name).ToList());
                uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
                userviews.Add(uv);
            }

            return(new TableData
            {
                count = records,
                data = userviews,
            });
        }