C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 大数据分页功能改进、数据权限改进
2014-05-09 09:17 通用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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章 退出系统