コード例 #1
0
        /// <summary>
        /// 获取用户的角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public DataTable GetRoleDT(UserInfo userInfo)
        {
            var dataTable = new DataTable(PiRoleTable.TableName);
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.UserService_GetRoleDT);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var roleManager = new PiRoleManager(dbProvider, userInfo);
                // 获取有效的,未必删除的数据,按排序码排序
                string[] names  = { PiRoleTable.FieldDeleteMark, PiRoleTable.FieldEnabled };
                Object[] values = { 0, 1 };
                dataTable       = roleManager.GetDT(names, values, PiRoleTable.FieldSortCode);
                // 不是超级管理员,不能添加超级管理员
                if (!userInfo.IsAdministrator)
                {
                    foreach (DataRow dataRow in dataTable.Rows.Cast <DataRow>().Where(dataRow => dataRow[PiRoleTable.FieldCode].ToString().Equals(DefaultRole.Administrators.ToString())))
                    {
                        dataRow.Delete();
                    }
                    dataTable.AcceptChanges();
                }
                dataTable.TableName        = PiUserTable.TableName;
                dataTable.DefaultView.Sort = PiUserTable.FieldSortCode;
            });
            return(dataTable);
        }
コード例 #2
0
        /// <summary>
        /// 批量物理删除角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响的行数</returns>
        public int BatchDelete(UserInfo userInfo, string[] ids)
        {
            var returnValue = 0;
            var parameter   = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_BatchDelete);

            ServiceUtil.ProcessRDIWriteDbWithTran(userInfo, parameter, dbProvider =>
            {
                returnValue = new PiRoleManager(dbProvider, userInfo).BatchDelete(ids);
            });
            return(returnValue);
        }
コード例 #3
0
        /// <summary>
        /// 取得实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <returns>实体</returns>
        public PiRoleEntity GetEntity(UserInfo userInfo, string id)
        {
            PiRoleEntity entity    = null;
            var          parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetEntity);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                entity = new PiRoleManager(dbProvider, userInfo).GetEntity(id);
            });
            return(entity);
        }
コード例 #4
0
        /// <summary>
        /// 物理刪除角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <returns>受影响的行数</returns>
        public int Delete(UserInfo userInfo, string id)
        {
            var returnValue = 0;
            var parameter   = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_Delete, "主键:" + id);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                returnValue = new PiRoleManager(dbProvider, userInfo).Delete(id);
            });

            return(returnValue);
        }
コード例 #5
0
        /// <summary>
        /// 根据条件获得角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="names">字段</param>
        /// <param name="values">值</param>
        /// <returns>数据表</returns>
        public DataTable GetDTByValues(UserInfo userInfo, string[] names, string[] values)
        {
            var dataTable = new DataTable(PiRoleTable.TableName);
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetDTByValues);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                dataTable           = new PiRoleManager(dbProvider, userInfo).GetDT(names, values);
                dataTable.TableName = PiRoleTable.TableName;
            });
            return(dataTable);
        }
コード例 #6
0
        /// <summary>
        /// 取得角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public DataTable GetDT(UserInfo userInfo)
        {
            var dataTable = new DataTable(PiRoleTable.TableName);
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetDT);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                dataTable           = new PiRoleManager(dbProvider, userInfo).GetDT(PiRoleTable.FieldDeleteMark, 0, PiRoleTable.FieldSortCode);
                dataTable.TableName = PiRoleTable.TableName;
            });
            return(dataTable);
        }
コード例 #7
0
        /// <summary>
        /// 移动角色数据
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <param name="targetOrganizeId">目标组织机构主键</param>
        /// <returns>影响行数</returns>
        public int MoveTo(UserInfo userInfo, string id, string targetOrganizeId)
        {
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_MoveTo);
            int result    = 0;

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) =>
            {
                var manager = new PiRoleManager(dbProvider, userInfo, PiRoleTable.TableName);
                result      = manager.MoveTo(id, targetOrganizeId);
            });
            return(result);
        }
コード例 #8
0
        /// <summary>
        /// 根据部门查询用户分页列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="permissionScopeCode">权限代码</param>
        /// <param name="searchValue">查询</param>
        /// <param name="enabled">有效</param>
        /// <param name="auditStates">审核状态</param>
        /// <param name="roleIds">用户角色</param>
        /// <param name="showRole">是否显示角色信息</param>
        /// <param name="departmentId">部门主键</param>
        /// <returns></returns>
        public DataTable GetUserPageDTByDepartment(UserInfo userInfo, string permissionScopeCode, string searchValue, bool?enabled, string auditStates, string[] roleIds, bool showRole, bool userAllInformation, out int recordCount, int pageIndex = 0, int pageSize = 100, string sort = null, string departmentId = null)
        {
            if (departmentId == null)
            {
                departmentId = string.Empty;
            }
            var parameter     = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.UserService_Search);
            int myrecordCount = 0;
            var dt            = new DataTable(PiUserTable.TableName);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) =>
            {
                var userManager = new PiUserManager(dbProvider, userInfo);
                dt           = userManager.SearchByPage(permissionScopeCode, searchValue, roleIds, enabled, auditStates, departmentId, showRole, userAllInformation, out myrecordCount, pageIndex, pageSize, sort);
                dt.TableName = PiUserTable.TableName;
                // 是否显示角色信息
                if (showRole)
                {
                    // 这里是获取角色列表
                    PiRoleManager roleManager = new PiRoleManager(dbProvider, userInfo);
                    DataTable dataTableRole   = roleManager.GetDT();
                    if (!dt.Columns.Contains("RoleName"))
                    {
                        dt.Columns.Add("RoleName");
                    }
                    // 友善的显示属于多个角色的功能
                    string roleName = string.Empty;
                    foreach (DataRow dr in dt.Rows)
                    {
                        roleName = string.Empty;
                        // 获取所在角色
                        roleIds = userManager.GetRoleIds(dr[PiUserTable.FieldId].ToString());
                        if (roleIds != null)
                        {
                            for (int i = 0; i < roleIds.Length; i++)
                            {
                                roleName = roleName + BusinessLogic.GetProperty(dataTableRole, roleIds[i], PiRoleTable.FieldRealName) + ", ";
                            }
                        }
                        // 设置角色的名称
                        if (!string.IsNullOrEmpty(roleName))
                        {
                            roleName       = roleName.Substring(0, roleName.Length - 2);
                            dr["RoleName"] = roleName;
                        }
                    }
                    dt.AcceptChanges();
                }
            });
            recordCount = myrecordCount;
            return(dt);
        }
コード例 #9
0
        /// <summary>
        ///  批量逻辑删除角色
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="ids">主键数组</param>
        /// <returns>影响的行数</returns>
        public int SetDeleted(UserInfo userInfo, string[] ids)
        {
            var returnValue = 0;
            var parameter   = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_SetDeleted);

            ServiceUtil.ProcessRDIWriteDbWithTran(userInfo, parameter, dbProvider =>
            {
                //TODO:此处还应该把角色相应的权限,所拥有的用户等也做统一处理。
                returnValue = new PiRoleManager(dbProvider, userInfo).SetDeleted(ids);
            });

            return(returnValue);
        }
コード例 #10
0
        /// <summary>
        /// 取得角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>数据表</returns>
        public List <PiRoleEntity> GetList(UserInfo userInfo)
        {
            List <PiRoleEntity> list = new List <PiRoleEntity>();
            var parameter            = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetDT);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(PiOrganizeTable.FieldDeleteMark, 0)
                };
                list = new PiRoleManager(dbProvider, userInfo).GetList <PiRoleEntity>(parameters, PiRoleTable.FieldSortCode);
            });
            return(list);
        }
コード例 #11
0
        /// <summary>
        /// 撤消指定角色的操作权限
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="roleName">角色名</param>
        /// <param name="permissionItemCode">撤消的操作权限编号</param>
        /// <returns>主键</returns>
        public int RevokeRolePermission(UserInfo userInfo, string roleName, string permissionItemCode)
        {
            var returnValue = 0;
            var parameter   = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, string.Empty);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var roleId           = new PiRoleManager(dbProvider, userInfo).GetId(PiRoleTable.FieldRealName, roleName);
                var permissionItemId = new PiPermissionItemManager(dbProvider, userInfo).GetId(PiPermissionItemTable.FieldCode, permissionItemCode);
                if (!String.IsNullOrEmpty(roleId) && !String.IsNullOrEmpty(permissionItemId))
                {
                    returnValue = new RolePermissionManager(dbProvider, userInfo).Revoke(roleId, permissionItemId);
                }
            });
            return(returnValue);
        }
コード例 #12
0
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="entity">实体</param>
        /// <param name="statusCode">返回状态码</param>
        /// <param name="statusMessage">返回状态信息</param>
        /// <returns>影响的行数</returns>
        public int Update(UserInfo userInfo, PiRoleEntity entity, out string statusCode, out string statusMessage)
        {
            int    returnValue   = 0;
            string returnCode    = string.Empty;
            string returnMessage = string.Empty;
            var    parameter     = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_Update);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var manager   = new PiRoleManager(dbProvider, userInfo);
                returnValue   = manager.UpdateEntity(entity, out returnCode);
                returnMessage = manager.GetStateMessage(returnCode);
            });
            statusCode    = returnCode;
            statusMessage = returnMessage;
            return(returnValue);
        }
コード例 #13
0
        public bool IsAdministrator(PiUserEntity entity)
        {
            // 用户是超级管理员
            if (entity.Id.Equals("Administrator"))
            {
                return(true);
            }
            if (entity.Code != null && entity.Code.Equals("Administrator"))
            {
                return(true);
            }
            if (entity.UserName != null && entity.UserName.Equals("Administrator"))
            {
                return(true);
            }

            if (this.UserInfo == null)
            {
                return(false);
            }

            // 用户的默认角色是超级管理员
            var roleManager = new PiRoleManager(this.DBProvider, this.UserInfo);
            // 用户默认角色是否为超级管理员
            PiRoleEntity roleEntity = null;

            if (entity.RoleId != null)
            {
                // 用户在超级管理员群里
                string[] roleIds = this.GetRoleIds(entity.Id);
                foreach (string tmpid in roleIds)
                {
                    if (tmpid.Equals(DefaultRole.Administrators.ToString()))
                    {
                        return(true);
                    }
                    roleEntity = roleManager.GetEntity(tmpid);
                    if (roleEntity.Code != null && roleEntity.Code.Equals(DefaultRole.Administrators.ToString()))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
コード例 #14
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////
        /// 用户权限判断相关(需要实现对外调用)
        //////////////////////////////////////////////////////////////////////////////////////////////////////

        #region public bool IsInRole(UserInfo userInfo, string userId, string roleName) 指定用户是否在指定的角色里
        /// <summary>
        /// 指定用户是否在指定的角色里
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userId">用户主键</param>
        /// <param name="roleName">角色名称</param>
        /// <returns>指定用户是否在指定角色里,true:是,false:否</returns>
        public bool IsInRole(UserInfo userInfo, string userId, string roleName)
        {
            var returnValue = false;
            var parameter   = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionService_IsInRole);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                // 先获得角色主键
                string roleCode = new PiRoleManager(dbProvider, userInfo).GetProperty(PiRoleTable.FieldRealName, roleName, PiRoleTable.FieldCode);
                // 判断用户的默认角色
                if (!string.IsNullOrEmpty(roleCode))
                {
                    returnValue = new PiUserRoleManager(dbProvider, userInfo).UserInRole(userId, roleCode);
                }
            });

            return(returnValue);
        }
コード例 #15
0
        /// <summary>
        /// 按组织机构获取角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="organizeId">组织机构主键</param>
        /// <param name="showUser">显示用户</param>
        /// <returns>角色列表</returns>
        public DataTable GetDTByOrganize(UserInfo userInfo, string organizeId, bool showUser = true)
        {
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetDTByOrganize);
            var dtRole    = new DataTable(PiRoleTable.TableName);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) =>
            {
                // 获得角色列表
                var manager = new PiRoleManager(dbProvider, userInfo);
                dtRole      = manager.GetDTByOrganize(organizeId);
                PiUserManager userManager = new PiUserManager(dbProvider, userInfo);
                if (showUser)
                {
                    DataTable dataTableUser = userManager.GetDT();
                    if (!dtRole.Columns.Contains("Users"))
                    {
                        dtRole.Columns.Add("Users");
                    }
                    // 友善的显示属于多个角色的功能
                    string userName = string.Empty;
                    foreach (DataRow dr in dtRole.Rows)
                    {
                        userName = string.Empty;
                        // 获取所在用户
                        string[] userIds = userManager.GetUserIdsInRole(dr[PiRoleTable.FieldId].ToString());
                        if (userIds != null)
                        {
                            userName = userIds.Aggregate(userName, (current, t) => current + BusinessLogic.GetProperty(dataTableUser, t, PiRoleTable.FieldRealName) + ", ");
                        }
                        if (!string.IsNullOrEmpty(userName))
                        {
                            userName = userName.Substring(0, userName.Length - 2);
                            // 设置用户的名称
                            dr["Users"] = userName;
                        }
                    }
                    dtRole.AcceptChanges();
                }
                dtRole.TableName = PiRoleTable.TableName;
            });
            return(dtRole);
        }
コード例 #16
0
        public bool UserInRole(string userId, string roleCode)
        {
            var returnValue = false;

            if (string.IsNullOrEmpty(roleCode))
            {
                return(false);
            }
            var roleManager = new PiRoleManager(this.DBProvider, this.UserInfo);
            var roleId      = roleManager.GetId(PiRoleTable.FieldDeleteMark, 0, PiRoleTable.FieldCode, roleCode);

            if (string.IsNullOrEmpty(roleId))
            {
                return(false);
            }
            var roleIds = GetAllRoleIds(userId);

            returnValue = BusinessLogic.Exists(roleIds, roleId);
            return(returnValue);
        }
コード例 #17
0
        /// <summary>
        /// 用户是否在某个角色中
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <param name="realName">角色</param>
        /// <returns>存在</returns>
        public bool IsInRole(string userId, string realName)
        {
            var returnValue = false;

            if (string.IsNullOrEmpty(realName))
            {
                return(false);
            }
            var roleManager = new PiRoleManager(this.DBProvider, this.UserInfo);
            var roleId      = roleManager.GetId(PiRoleTable.FieldDeleteMark, 0, PiRoleTable.FieldRealName, realName);

            if (string.IsNullOrEmpty(roleId))
            {
                return(false);
            }
            var roleIds = GetAllRoleIds(userId);

            returnValue = StringHelper.Exists(roleIds, roleId);
            return(returnValue);
        }
コード例 #18
0
        public UserInfo ConvertToUserInfo(UserInfo userInfo, PiUserEntity userEntity, PiUserLogOnEntity userLogOnEntity = null)
        {
            userInfo.Id             = userEntity.Id;
            userInfo.Code           = userEntity.Code;
            userInfo.UserName       = userEntity.UserName;
            userInfo.RealName       = userEntity.RealName;
            userInfo.CompanyId      = userEntity.CompanyId;
            userInfo.CompanyName    = userEntity.CompanyName;
            userInfo.DepartmentId   = userEntity.DepartmentId;
            userInfo.DepartmentName = userEntity.DepartmentName;
            userInfo.WorkgroupId    = userEntity.WorkgroupId;
            userInfo.WorkgroupName  = userEntity.WorkgroupName;

            if (userLogOnEntity != null)
            {
                userInfo.OpenId = userLogOnEntity.OpenId;
            }

            if (userEntity.SecurityLevel == null)
            {
                userEntity.SecurityLevel = 0;
            }
            else
            {
                userInfo.SecurityLevel = (int)userEntity.SecurityLevel;
            }

            if (!string.IsNullOrEmpty(userEntity.RoleId))
            {
                // 获取角色名称
                var          roleManager = new PiRoleManager(DBProvider, UserInfo);
                PiRoleEntity roleEntity  = roleManager.GetEntity(userEntity.RoleId);
                if (!string.IsNullOrEmpty(roleEntity.Id))
                {
                    userInfo.RoleName = roleEntity.RealName;
                    userInfo.RoleId   = roleEntity.Id;
                }
            }
            return(userInfo);
        }
コード例 #19
0
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="dbProvider">数据库连接</param>
        /// <param name="userInfo">用户信息</param>
        /// <param name="userEntity">用户实体</param>
        /// <param name="statusCode">状态码</param>
        /// <param name="statusMessage">状态信息</param>
        /// <returns>主键</returns>
        public string AddUser(IDbProvider dbProvider, UserInfo userInfo, PiUserEntity userEntity, out string statusCode, out string statusMessage)
        {
            string returnValue = string.Empty;
            var    userManager = new PiUserManager(dbProvider, userInfo);

            returnValue   = userManager.Add(userEntity, out statusCode);
            statusMessage = userManager.GetStateMessage(statusCode);

            LogManager.Instance.Add(dbProvider, userInfo, this.serviceName, RDIFrameworkMessage.UserService_AddUser, MethodBase.GetCurrentMethod());

            // 自己不用给自己发提示信息,这个提示信息是为了提高工作效率的,还是需要审核通过的,否则垃圾信息太多了
            if (userEntity.Enabled == 0 && statusCode.Equals(StatusCode.OKAdd.ToString()))
            {
                // 不是系统管理员添加
                if (!userInfo.IsAdministrator)
                {
                    // 给超级管理员群组发信息
                    var      roleManager = new PiRoleManager(dbProvider, userInfo);
                    string[] roleIds     = roleManager.GetIds(PiRoleTable.FieldCode, "Administrators", PiRoleTable.FieldId);
                    string[] userIds     = userManager.GetIds(PiUserTable.FieldCode, "Administrator", PiUserTable.FieldId);
                    // 发送请求审核的信息
                    var messageEntity = new CiMessageEntity
                    {
                        Id           = BusinessLogic.NewGuid(),
                        FunctionCode = MessageFunction.WaitForAudit.ToString(),
                        ReceiverId   = DefaultRole.Administrator.ToString(),
                        MSGContent   = userInfo.RealName + "(" + userInfo.IPAddress + ")" + RDIFrameworkMessage.UserService_Application + userEntity.RealName + RDIFrameworkMessage.UserService_Check,
                        IsNew        = 1,
                        ReadCount    = 0,
                        Enabled      = 1,
                        DeleteMark   = 0
                    };

                    var messageManager = new CiMessageManager(dbProvider, userInfo);
                    messageManager.BatchSend(userIds, null, roleIds, messageEntity, false);
                }
            }
            return(returnValue);
        }
コード例 #20
0
        /// <summary>
        /// 获取业务角色列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <returns>业务角色列表</returns>
        public DataTable GetApplicationRole(UserInfo userInfo)
        {
            var parameter = ParameterUtil.CreateWithMessage(userInfo
                                                            , MethodBase.GetCurrentMethod()
                                                            , this.serviceName
                                                            , RDIFrameworkMessage.RoleService_GetDT);
            var dt = new DataTable(PiRoleTable.TableName);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) =>
            {
                // 获得角色列表
                var manager    = new PiRoleManager(dbProvider, userInfo, PiRoleTable.TableName);
                var parameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(PiRoleTable.FieldCategory, "ApplicationRole"),
                    new KeyValuePair <string, object>(PiRoleTable.FieldDeleteMark, 0)
                };
                dt           = manager.GetDT(parameters, PiRoleTable.FieldSortCode);
                dt.TableName = PiRoleTable.TableName;
            });
            return(dt);
        }
コード例 #21
0
        /// <summary>
        /// 获取角色分页列表
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="recordCount">所有角色数</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">分页大小(默认20条)</param>
        /// <param name="whereConditional">条件表达式</param>
        /// <param name="order">排序字段</param>
        /// <returns>数据表</returns>
        public DataTable GetDTByPage(UserInfo userInfo, out int recordCount, int pageIndex = 1, int pageSize = 20, string whereConditional = "", string order = "")
        {
            var dataTable         = new DataTable(PiRoleTable.TableName);
            var returnRecordCount = 0;
            var parameter         = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetDT);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var manager = new PiRoleManager(dbProvider, userInfo);
                if (string.IsNullOrEmpty(whereConditional))
                {
                    whereConditional = PiRoleTable.FieldDeleteMark + " = 0 ";
                }
                else
                {
                    whereConditional += " AND " + PiRoleTable.FieldDeleteMark + " = 0 ";
                }

                dataTable           = manager.GetDTByPage(out returnRecordCount, pageIndex, pageSize, whereConditional, order);
                dataTable.TableName = PiRoleTable.TableName;
            });
            recordCount = returnRecordCount;
            return(dataTable);
        }