/// <summary>
        /// 更新一个
        /// </summary>
        /// <param name="permissionEntity">实体</param>
        /// <param name="statusCode">返回状态码</param>
        /// <returns>影响行数</returns>
        public int Update(BasePermissionItemEntity permissionItemEntity, out string statusCode)
        {
            int returnValue = 0;

            // 检查是否已被其他人修改
            //if (DbLogic.IsModifed(DbHelper, BasePermissionEntity.TableName, permissionEntity.Id, permissionEntity.ModifiedUserId, permissionEntity.ModifiedOn))
            //{
            //    // 数据已经被修改
            //    statusCode = StatusCode.ErrorChanged.ToString();
            //}
            //else
            //{
            // 检查编号是否重复
            if (this.Exists(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldDeletionStateCode, 0), new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, permissionItemEntity.Code), permissionItemEntity.Id))
            {
                // 文件夹名已重复
                statusCode = StatusCode.ErrorCodeExist.ToString();
            }
            else
            {
                // 进行更新操作
                returnValue = this.UpdateEntity(permissionItemEntity);
                if (returnValue == 1)
                {
                    statusCode = StatusCode.OKUpdate.ToString();
                }
                else
                {
                    // 数据可能被删除
                    statusCode = StatusCode.ErrorDeleted.ToString();
                }
            }
            //}
            return(returnValue);
        }
        /// <summary>
        /// 获取一个
        /// </summary>
        /// <param name="code">编号</param>
        /// <param name="permissionEntity">实体</param>
        /// <returns>数据表</returns>
        public DataTable GetByCode(string code, BasePermissionItemEntity permissionItemEntity)
        {
            DataTable dataTable = this.GetDataTable(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, code));

            permissionItemEntity.GetSingle(dataTable);
            return(dataTable);
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="code">编号</param>
        /// <param name="fullName">名称</param>
        /// <param name="statusCode">返回状态码</param>
        /// <returns>主键</returns>
        public string AddByDetail(string code, string fullName, out string statusCode)
        {
            BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();

            permissionItemEntity.Code     = code;
            permissionItemEntity.FullName = fullName;
            return(this.Add(permissionItemEntity, out statusCode));
        }
Example #4
0
        /// <summary>
        /// 添加操作权限项
        /// </summary>
        /// <param name="userInfo">当前用户</param>
        /// <param name="permissionEntity">权限定义实体</param>
        /// <param name="statusCode">状态码</param>
        /// <param name="statusMessage">状态信息</param>
        /// <returns>主键</returns>
        public string Add(BaseUserInfo userInfo, BasePermissionItemEntity permissionItemEntity, out string statusCode, out string statusMessage)
        {
            // 写入调试信息
            #if (DEBUG)
            int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
            LogOnService.UserIsLogOn(userInfo);
            #endif

            statusCode    = string.Empty;
            statusMessage = string.Empty;
            string returnValue = string.Empty;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    // 数据库事务开始
                    // dbHelper.BeginTransaction();
                    string tableName = BasePermissionItemEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "PermissionItem";
                    }
                    BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(dbHelper, userInfo, tableName);
                    returnValue = permissionItemManager.Add(permissionItemEntity, out statusCode);
                    // 获得状态消息
                    statusMessage = permissionItemManager.GetStateMessage(statusCode);
                    // 写入日志信息
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionItemService_Add, MethodBase.GetCurrentMethod());
                    // 数据库事务提交
                    // dbHelper.CommitTransaction();
                }
                catch (Exception ex)
                {
                    // 数据库事务回滚
                    // dbHelper.RollbackTransaction();
                    // 记录异常信息
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

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

            return(returnValue);
        }
        /// <summary>
        /// 批量保存
        /// </summary>
        /// <param name="dataTable">数据表</param>
        /// <returns>影响行数</returns>
        public override int BatchSave(DataTable dataTable)
        {
            int returnValue = 0;
            BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();

            foreach (DataRow dataRow in dataTable.Rows)
            {
                // 删除状态
                if (dataRow.RowState == DataRowState.Deleted)
                {
                    string id = dataRow[BasePermissionItemEntity.FieldId, DataRowVersion.Original].ToString();
                    if (id.Length > 0)
                    {
                        if (dataRow[BasePermissionItemEntity.FieldAllowDelete, DataRowVersion.Original].ToString().Equals("1"))
                        {
                            returnValue += this.DeleteEntity(id);
                        }
                    }
                }
                // 被修改过
                if (dataRow.RowState == DataRowState.Modified)
                {
                    string id = dataRow[BasePermissionItemEntity.FieldId, DataRowVersion.Original].ToString();
                    if (id.Length > 0)
                    {
                        permissionItemEntity.GetFrom(dataRow);
                        // 判断是否允许编辑
                        if (permissionItemEntity.AllowEdit == 1)
                        {
                            returnValue += this.UpdateEntity(permissionItemEntity);
                        }
                        else
                        {
                            // 不允许编辑,但是排序还是允许的
                            returnValue += this.SetProperty(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldId, id), new KeyValuePair <string, object>(BasePermissionItemEntity.FieldSortCode, permissionItemEntity.SortCode));
                        }
                    }
                }
                // 添加状态
                if (dataRow.RowState == DataRowState.Added)
                {
                    permissionItemEntity.GetFrom(dataRow);
                    returnValue += this.AddEntity(permissionItemEntity).Length > 0 ? 1 : 0;
                }
                if (dataRow.RowState == DataRowState.Unchanged)
                {
                    continue;
                }
                if (dataRow.RowState == DataRowState.Detached)
                {
                    continue;
                }
            }
            return(returnValue);
        }
        /// <summary>
        /// 用户的所有可授权范围(有授权权限的权限列表)
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionItemCode">权限域编号</param>
        /// <returns>数据表</returns>
        public DataTable GetPermissionItemDTByPermissionScope(BaseUserInfo userInfo, string userId, string permissionItemCode)
        {
            // 写入调试信息
            #if (DEBUG)
            int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
            LogOnService.UserIsLogOn(userInfo);
            #endif

            DataTable dataTable = new DataTable(BasePermissionItemEntity.TableName);
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(dbHelper, userInfo);
                    string permissionItemId = permissionItemManager.GetId(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, permissionItemCode));
                    // 数据库里没有设置可授权的权限项,系统自动增加一个权限配置项
                    if (String.IsNullOrEmpty(permissionItemId) && permissionItemCode.Equals("Resource.ManagePermission"))
                    {
                        BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();
                        permissionItemEntity.Code        = "Resource.ManagePermission";
                        permissionItemEntity.FullName    = "资源管理范围权限(系统默认)";
                        permissionItemEntity.IsScope     = 1;
                        permissionItemEntity.Enabled     = 1;
                        permissionItemEntity.AllowDelete = 0;
                        permissionItemEntity.AllowDelete = 0;
                        permissionItemManager.AddEntity(permissionItemEntity);
                    }
                    dataTable           = permissionItemManager.GetDataTableByUser(userId, permissionItemCode);
                    dataTable.TableName = BasePermissionItemEntity.TableName;
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionService_GetPermissionItemDTByPermission, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

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

            return(dataTable);
        }
Example #7
0
        /// <summary>
        /// 用户角色关系是否有模块权限
        /// </summary>
        /// <param name="roleId">角色主键</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>有角色权限</returns>
        public bool CheckPermissionByRole(string roleId, string permissionItemCode)
        {
            BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(DbHelper, UserInfo);
            string permissionItemId = permissionItemManager.GetProperty(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, permissionItemCode), BasePermissionItemEntity.FieldId);

            // 判断当前判断的权限是否存在,否则很容易出现前台设置了权限,后台没此项权限
            // 需要自动的能把前台判断过的权限,都记录到后台来
            #if (DEBUG)
            if (String.IsNullOrEmpty(permissionItemId))
            {
                BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();
                permissionItemEntity.Code              = permissionItemCode;
                permissionItemEntity.FullName          = permissionItemCode;
                permissionItemEntity.ParentId          = string.Empty;
                permissionItemEntity.IsScope           = 0;
                permissionItemEntity.AllowDelete       = 1;
                permissionItemEntity.AllowEdit         = 1;
                permissionItemEntity.DeletionStateCode = 0;
                permissionItemEntity.Enabled           = 1;
                // 这里是防止主键重复?
                // permissionEntity.ID = BaseBusinessLogic.NewGuid();
                permissionItemManager.AddEntity(permissionItemEntity);
            }
            else
            {
                // 更新最后一次访问日期,设置为当前服务器日期
                SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);
                sqlBuilder.BeginUpdate(this.CurrentTableName);
                sqlBuilder.SetDBNow(BasePermissionItemEntity.FieldLastCall);
                sqlBuilder.SetWhere(BasePermissionItemEntity.FieldId, permissionItemId);
                sqlBuilder.EndUpdate();
            }
            #endif

            if (string.IsNullOrEmpty(permissionItemId))
            {
                return(false);
            }
            string sqlQuery = " SELECT COUNT(*) "
                              + "   FROM " + this.CurrentTableName
                              + "  WHERE " + "(" + BasePermissionEntity.FieldResourceCategory + " = '" + BaseRoleEntity.TableName + "') "
                              + "        AND (" + BasePermissionEntity.FieldEnabled + " = 1) "
                              + "        AND (" + BasePermissionEntity.FieldResourceId + " = '" + roleId + "' ) "
                              + "        AND (" + BasePermissionEntity.FieldPermissionItemId + " = '" + permissionItemId + "') ";
            int    rowCount     = 0;
            object returnObject = DbHelper.ExecuteScalar(sqlQuery);
            if (returnObject != null)
            {
                rowCount = int.Parse(returnObject.ToString());
            }
            return(rowCount > 0);
        }
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="permissionItemEntity">实体</param>
        public int UpdateEntity(BasePermissionItemEntity permissionItemEntity)
        {
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);

            sqlBuilder.BeginUpdate(this.CurrentTableName);
            this.SetEntity(sqlBuilder, permissionItemEntity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BasePermissionItemEntity.FieldModifiedOn);
            sqlBuilder.SetWhere(BasePermissionItemEntity.FieldId, permissionItemEntity.Id);
            return(sqlBuilder.EndUpdate());
        }
Example #9
0
        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <returns>实体</returns>
        public BasePermissionItemEntity GetEntity(BaseUserInfo userInfo, string id)
        {
            // 写入调试信息
            #if (DEBUG)
            int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
            LogOnService.UserIsLogOn(userInfo);
            #endif

            BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    // 创建实现类
                    string tableName = BasePermissionItemEntity.TableName;
                    if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
                    {
                        tableName = BaseSystemInfo.SystemCode + "PermissionItem";
                    }
                    BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(dbHelper, userInfo, tableName);
                    DataTable returnDataTable = new DataTable(BasePermissionItemEntity.TableName);
                    returnDataTable      = permissionItemManager.GetDataTableById(id);
                    permissionItemEntity = new BasePermissionItemEntity(returnDataTable);
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionItemService_GetEntity, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

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

            return(permissionItemEntity);
        }
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 private void SetEntity(SQLBuilder sqlBuilder, BasePermissionItemEntity permissionItemEntity)
 {
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldParentId, permissionItemEntity.ParentId);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldCode, permissionItemEntity.Code);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldFullName, permissionItemEntity.FullName);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldCategoryCode, permissionItemEntity.CategoryCode);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldIsScope, permissionItemEntity.IsScope);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldIsPublic, permissionItemEntity.IsPublic);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldAllowEdit, permissionItemEntity.AllowEdit);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldAllowDelete, permissionItemEntity.AllowDelete);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldLastCall, permissionItemEntity.LastCall);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldEnabled, permissionItemEntity.Enabled);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldDeletionStateCode, permissionItemEntity.DeletionStateCode);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldSortCode, permissionItemEntity.SortCode);
     sqlBuilder.SetValue(BasePermissionItemEntity.FieldDescription, permissionItemEntity.Description);
     SetEntityExpand(sqlBuilder, permissionItemEntity);
 }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="permissionEntity">实体</param>
        /// <param name="statusCode">返回状态码</param>
        /// <returns>主键</returns>
        public string Add(BasePermissionItemEntity permissionItemEntity, out string statusCode)
        {
            string returnValue = string.Empty;

            // 检查编号是否重复
            if (this.Exists(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldDeletionStateCode, 0), new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, permissionItemEntity.Code)))
            {
                // 编号已重复
                statusCode = StatusCode.ErrorCodeExist.ToString();
            }
            else
            {
                returnValue = this.AddEntity(permissionItemEntity);
                // 运行成功
                statusCode = StatusCode.OKAdd.ToString();
            }
            return(returnValue);
        }
Example #12
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// 测试权限用的
        /////////////////////////////////////////////////////////////////////////////////////////////////////////


        #region public string AddPermission(BaseUserInfo userInfo, string permissionCode)
        /// <summary>
        /// 添加操作权限
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="permissionCode">权限编号</param>
        /// <returns>主键</returns>
        public string AddPermission(BaseUserInfo userInfo, string permissionCode)
        {
            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)
            LogOnService.UserIsLogOn(userInfo);
            #endif

            string returnValue = string.Empty;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(dbHelper, userInfo);
                    string statusCode = string.Empty;
                    BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();
                    permissionItemEntity.Code        = permissionCode;
                    permissionItemEntity.Enabled     = 1;
                    permissionItemEntity.AllowDelete = 1;
                    permissionItemEntity.AllowEdit   = 1;
                    permissionItemEntity.IsScope     = 0;
                    returnValue = permissionItemManager.Add(permissionItemEntity, out statusCode);
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.MSG0091, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            return(returnValue);
        }
        /// <summary>
        /// 获取一个操作权限的主键
        /// 若不存在就自动增加一个
        /// </summary>
        /// <param name="permissionItemCode">操作权限编号</param>
        /// <param name="permissionItemName">操作权限名称</param>
        /// <returns>主键</returns>
        public string GetIdByAdd(string permissionItemCode, string permissionItemName = null)
        {
            // 判断当前判断的权限是否存在,否则很容易出现前台设置了权限,后台没此项权限
            // 需要自动的能把前台判断过的权限,都记录到后台来

            List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldCode, permissionItemCode));
            parameters.Add(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldEnabled, 1));
            parameters.Add(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldDeletionStateCode, 0));

            BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity();

            permissionItemEntity = new BasePermissionItemEntity(this.GetDataTable(parameters, BasePermissionItemEntity.FieldId));

            string permissionItemId = string.Empty;

            if (permissionItemEntity != null)
            {
                permissionItemId = permissionItemEntity.Id.ToString();
            }

            // 若是在调试阶段、有没在的权限被判断了,那就自动加入这个权限,不用人工加入权限了,工作效率会提高很多,
            // 哪些权限是否有被调用什么的,还可以进行一些诊断
            #if (DEBUG)
            if (String.IsNullOrEmpty(permissionItemId))
            {
                // 这里需要进行一次加锁,方式并发冲突发生
                lock (PermissionItemLock)
                {
                    permissionItemEntity.Code = permissionItemCode;
                    if (string.IsNullOrEmpty(permissionItemName))
                    {
                        permissionItemEntity.FullName = permissionItemCode;
                    }
                    else
                    {
                        permissionItemEntity.FullName = permissionItemName;
                    }
                    permissionItemEntity.ParentId    = null;
                    permissionItemEntity.IsScope     = 0;
                    permissionItemEntity.AllowDelete = 1;
                    permissionItemEntity.AllowEdit   = 1;
                    permissionItemEntity.Enabled     = 1;
                    // 这里是防止主键重复?
                    // permissionEntity.ID = BaseBusinessLogic.NewGuid();
                    permissionItemId = this.AddEntity(permissionItemEntity);
                }
            }
            else
            {
                // 更新最后一次访问日期,设置为当前服务器日期
                SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);
                sqlBuilder.BeginUpdate(this.CurrentTableName);
                sqlBuilder.SetDBNow(BasePermissionItemEntity.FieldLastCall);
                sqlBuilder.SetWhere(BasePermissionItemEntity.FieldId, permissionItemId);
                sqlBuilder.EndUpdate();
            }
                #endif

            return(permissionItemId);
        }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 /// <param name="identity">自增量方式</param>
 /// <param name="returnId">返回主鍵</param>
 /// <returns>主键</returns>
 public string Add(BasePermissionItemEntity permissionItemEntity, bool identity, bool returnId)
 {
     this.Identity = identity;
     this.ReturnId = returnId;
     return(this.AddEntity(permissionItemEntity));
 }
Example #15
0
        //
        // ResourcePermission 权限判断
        //

        #region public bool CheckPermissionByUser(string userId, string permissionItemCode, string permissionItemName = null) 是否有相应的权限
        /// <summary>
        /// 是否有相应的权限
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <param name="permissionItemName">权限名称</param>
        /// <returns>是否有权限</returns>
        public bool CheckPermissionByUser(string userId, string permissionItemCode, string permissionItemName = null)
        {
            // 若不存在就需要自动能增加一个操作权限项
            string tableName = BasePermissionItemEntity.TableName;

            if (!string.IsNullOrEmpty(BaseSystemInfo.SystemCode))
            {
                tableName = BaseSystemInfo.SystemCode + "PermissionItem";
            }
            BasePermissionItemManager permissionItemManager = new BasePermissionItemManager(DbHelper, UserInfo, tableName);
            string permissionItemId = permissionItemManager.GetIdByAdd(permissionItemCode, permissionItemName);
            BasePermissionItemEntity permissionItemEntity = permissionItemManager.GetEntity(permissionItemId);

            // 先判断用户类别
            if (UserInfo.IsAdministrator)
            {
                return(true);
            }

            // 没有找到相应的权限
            if (String.IsNullOrEmpty(permissionItemId))
            {
                return(false);
            }

            // 这里需要判断,是系统权限?
            bool            returnValue = false;
            BaseUserManager userManager = new BaseUserManager(this.DbHelper, this.UserInfo);

            if (!string.IsNullOrEmpty(permissionItemEntity.CategoryCode) && permissionItemEntity.CategoryCode.Equals("System"))
            {
                // 用户管理员
                returnValue = userManager.IsInRoleByCode(userId, "UserAdmin");
                if (returnValue)
                {
                    return(returnValue);
                }
            }

            // 这里需要判断,是业务权限?
            if (!string.IsNullOrEmpty(permissionItemEntity.CategoryCode) && permissionItemEntity.CategoryCode.Equals("Application"))
            {
                returnValue = userManager.IsInRoleByCode(userId, "Admin");
                if (returnValue)
                {
                    return(returnValue);
                }
            }

            // 判断用户权限
            if (this.CheckUserPermission(userId, permissionItemId))
            {
                return(true);
            }
            // 判断用户角色权限
            if (this.CheckUserRolePermission(userId, permissionItemId))
            {
                return(true);
            }

            // 判断用户组织机构权限,这里有开关是为了提高性能用的,
            // 下面的函数接着还可以提高性能,可以进行一次判断就可以了,其实不用执行4次判断,浪费I/O,浪费性能。
            if (BaseSystemInfo.UseOrganizePermission)
            {
                if (this.CheckUserOrganizePermission(userId, permissionItemId, this.UserInfo.WorkgroupId))
                {
                    return(true);
                }
                else if (this.CheckUserOrganizePermission(userId, permissionItemId, this.UserInfo.DepartmentId))
                {
                    return(true);
                }
                else if (this.CheckUserOrganizePermission(userId, permissionItemId, this.UserInfo.SubCompanyId))
                {
                    return(true);
                }
                else if (this.CheckUserOrganizePermission(userId, permissionItemId, this.UserInfo.CompanyId))
                {
                    return(true);
                }
            }

            return(false);
        }
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 public int Update(BasePermissionItemEntity permissionItemEntity)
 {
     return(this.UpdateEntity(permissionItemEntity));
 }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 /// <returns>主键</returns>
 public string Add(BasePermissionItemEntity permissionItemEntity)
 {
     return(this.AddEntity(permissionItemEntity));
 }
 partial void SetEntityExpand(SQLBuilder sqlBuilder, BasePermissionItemEntity permissionItemEntity);
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="permissionItemEntity">实体</param>
        public string AddEntity(BasePermissionItemEntity permissionItemEntity)
        {
            string sequence = string.Empty;

            if (permissionItemEntity.SortCode == 0)
            {
                BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
                sequence = sequenceManager.GetSequence(this.CurrentTableName);
                permissionItemEntity.SortCode = int.Parse(sequence);
            }
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper, this.Identity, this.ReturnId);

            sqlBuilder.BeginInsert(this.CurrentTableName, BasePermissionItemEntity.FieldId);
            if (!this.Identity)
            {
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldId, permissionItemEntity.Id);
            }
            else
            {
                if (!this.ReturnId && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
                {
                    if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
                    {
                        sqlBuilder.SetFormula(BasePermissionItemEntity.FieldId, "SEQ_" + this.CurrentTableName.ToUpper() + ".NEXTVAL ");
                    }
                    if (DbHelper.CurrentDbType == CurrentDbType.DB2)
                    {
                        sqlBuilder.SetFormula(BasePermissionItemEntity.FieldId, "NEXT VALUE FOR SEQ_" + this.CurrentTableName.ToUpper());
                    }
                }
                else
                {
                    if (this.Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
                    {
                        if (permissionItemEntity.Id == null)
                        {
                            if (string.IsNullOrEmpty(sequence))
                            {
                                BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper, this.Identity);
                                sequence = sequenceManager.GetSequence(this.CurrentTableName);
                            }
                            permissionItemEntity.Id = int.Parse(sequence);
                        }
                        sqlBuilder.SetValue(BasePermissionItemEntity.FieldId, permissionItemEntity.Id);
                    }
                }
            }
            this.SetEntity(sqlBuilder, permissionItemEntity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldCreateUserId, UserInfo.Id);
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldCreateBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BasePermissionItemEntity.FieldCreateOn);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(BasePermissionItemEntity.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BasePermissionItemEntity.FieldModifiedOn);
            if (DbHelper.CurrentDbType == CurrentDbType.SqlServer && this.Identity)
            {
                sequence = sqlBuilder.EndInsert().ToString();
            }
            else
            {
                sqlBuilder.EndInsert();
            }
            return(sequence);
        }
        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="id">主键</param>
        public BasePermissionItemEntity GetEntity(string id)
        {
            BasePermissionItemEntity permissionItemEntity = new BasePermissionItemEntity(this.GetDataTable(new KeyValuePair <string, object>(BasePermissionItemEntity.FieldId, id)));

            return(permissionItemEntity);
        }