权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 大数据分页功能改进、数据权限改进

  通用C#系统架构  阅读(3385)  评论(2编辑  收藏  举报

代码生成器大数据分页

 

下面参考代码是简易的数据权限的实现,大多情况下下面的数据权限的功能可以满足很多企业的需要了

复制代码
        #region public DataTable GetDataTableByPage(BaseUserInfo userInfo, out int recordCount, int pageIndex = 0, int pageSize = 20, string sortExpression = null, string sortDire = null) 分页查询
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="recordCount">记录数</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页显示记录条数</param>
        /// <param name="sortExpression">排序字段</param>
        /// <param name="sortDire">排序方向</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByPage(BaseUserInfo userInfo, out int recordCount, int pageIndex = 0, int pageSize = 20, string sortExpression = null, string sortDire = null)
        {
            // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加強安全验证防止未登录用户调用
            #if (!DEBUG)
                LogOnService.UserIsLogOn(userInfo);
            #endif

            var dt = new DataTable(LanNiaoKeJiEntity.TableName);
            
            using (IDbHelper ucDbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    ucDbHelper.Open(UserCenterDbConnection);
                    BaseLogManager.Instance.Add(userInfo, this.serviceName, "取得列表", MethodBase.GetCurrentMethod());

                    using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.BusinessDbType))
                    {
                        try
                        {
                            dbHelper.Open(BusinessDbConnection);
                            // 取得列表
                            LanNiaoKeJiManager manager = new LanNiaoKeJiManager(dbHelper, userInfo);
                            string order = sortExpression + " " + sortDire;
                            string whereConditional = string.Empty;
                            List<IDbDataParameter> dbParameters = new List<IDbDataParameter>();
                            BaseUserManager userManager = new BaseUserManager();
                            if (userManager.IsInRoleByCode(userInfo, "User"))
                            {
                                // 普通用户,只能看自己的
                                whereConditional = BaseBusinessLogic.FieldUserId + "=" + dbHelper.GetParameter(BaseBusinessLogic.FieldUserId);
                                dbParameters.Add(dbHelper.MakeParameter(BaseBusinessLogic.FieldUserId, userInfo.Id));
                            }
                            else if (userManager.IsInRoleByCode(userInfo, "DepartmentManager"))
                            {
                                // 部门主管,只能看自己部门的
                                whereConditional = BaseBusinessLogic.FieldDepartmentId + "=" + dbHelper.GetParameter(BaseBusinessLogic.FieldDepartmentId);
                                dbParameters.Add(dbHelper.MakeParameter(BaseBusinessLogic.FieldDepartmentId, userInfo.DepartmentId));
                            }
                            else if (userManager.IsInRoleByCode(userInfo, "CompanyManager"))
                            {
                                // 公司主管,只能看自己公司的
                                whereConditional = BaseBusinessLogic.FieldCompanyId + "=" + dbHelper.GetParameter(BaseBusinessLogic.FieldCompanyId);
                                dbParameters.Add(dbHelper.MakeParameter(BaseBusinessLogic.FieldCompanyId, userInfo.CompanyId));
                            }
                            else if (userManager.IsInRoleByCode(userInfo, "Manager"))
                            {
                                // 管理者,可以看所有的,不限制条件
                            }
                            dt.TableName = LanNiaoKeJiEntity.TableName;
                        }
                        catch (Exception ex)
                        {
                            BaseExceptionManager.LogException(ucDbHelper, userInfo, ex);
                            throw;
                        }
                        finally
                        {
                            dbHelper.Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(ucDbHelper, userInfo, ex);
                    throw;
                }
                finally
                {
                    ucDbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
                BaseBusinessLogic.EndDebug(userInfo, MethodBase.GetCurrentMethod(), milliStart);
            #endif

            return dt;
        }
        #endregion
复制代码

 

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2010-05-09 第10章 系统日志管理
2010-05-09 第14章 系统异常情况记录
2010-05-09 第9章 数据字典(选项)管理
2010-05-09 第7章 内部通讯录
2010-05-09 第16章 修改密码
2010-05-09 第15章 关于本软件
2010-05-09 第18章 退出系统


C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友



点击右上角即可分享
微信分享提示