示例#1
0
        /// <summary>
        /// 授予资源的权限
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="resourceCategory">资源分类</param>
        /// <param name="resourceId">资源主键</param>
        /// <param name="grantPermissionIds">权限主键</param>
        /// <returns>影响的行数</returns>
        public int GrantResourcePermission(BaseUserInfo userInfo, string resourceCategory, string resourceId, string[] grantPermissionIds)
        {
            var result = 0;

            var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                var manager = new BaseRoleScopeManager(dbHelper, userInfo);
                // 小心异常,检查一下参数的有效性
                if (grantPermissionIds != null)
                {
                    var permissionManager = new BasePermissionManager(dbHelper, userInfo);
                    for (var i = 0; i < grantPermissionIds.Length; i++)
                    {
                        var resourcePermissionEntity = new BasePermissionEntity
                        {
                            ResourceCategory = resourceCategory,
                            ResourceId       = resourceId,
                            PermissionId     = grantPermissionIds[i],
                            Enabled          = 1,
                            Deleted          = 0
                        };
                        permissionManager.Add(resourcePermissionEntity);
                        result++;
                    }
                }
            });
            return(result);
        }
示例#2
0
 /// <summary>
 /// 添加, 这里可以人工干预,提高程序的性能
 /// </summary>
 /// <param name="entity">实体</param>
 /// <param name="identity">自增量方式,表主键是否采用自增的策略</param>
 /// <param name="returnId">返回主键,不返回程序允许速度会快,主要是为了主细表批量插入数据优化用的</param>
 /// <returns>主键</returns>
 public string Add(BasePermissionEntity entity, bool identity = true, bool returnId = true)
 {
     Identity  = identity;
     ReturnId  = returnId;
     entity.Id = AddEntity(entity).ToInt();
     return(entity.Id.ToString());
 }
示例#3
0
        public int Add(string moduleId, string permissionItemId)
        {
            int returnValue = 0;

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

            parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, BaseModuleEntity.TableName));
            parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, moduleId));
            parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionItemId, permissionItemId));
            parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldDeletionStateCode, 0));

            // 检查记录是否重复
            if (!this.Exists(parameters))
            {
                BasePermissionEntity permissionEntity = new BasePermissionEntity();
                permissionEntity.ResourceId        = moduleId;
                permissionEntity.ResourceCategory  = BaseModuleEntity.TableName;
                permissionEntity.Enabled           = 1;
                permissionEntity.DeletionStateCode = 0;
                permissionEntity.PermissionId      = int.Parse(permissionItemId);
                BasePermissionManager permissionManager = new BasePermissionManager(this.DbHelper, this.UserInfo, this.CurrentTableName);
                permissionManager.AddEntity(permissionEntity);
                returnValue++;
            }
            return(returnValue);
        }
示例#4
0
        //
        // 授予权限的实现部分
        //

        #region private string Grant(BasePermissionManager permissionManager, string id, string userId, string permissionItemId) 为了提高授权的运行速度
        /// <summary>
        /// 为了提高授权的运行速度
        /// </summary>
        /// <param name="permissionManager">资源权限读写器</param>
        /// <param name="Id">主键</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionItemId">权限主键</param>
        /// <returns>主键</returns>
        private string Grant(BasePermissionManager permissionManager, string id, string userId, string permissionItemId)
        {
            string returnValue = string.Empty;
            BasePermissionEntity resourcePermissionEntity = new BasePermissionEntity();

            resourcePermissionEntity.ResourceCategory = BaseUserEntity.TableName;
            resourcePermissionEntity.ResourceId       = userId;
            resourcePermissionEntity.PermissionId     = int.Parse(permissionItemId);
            resourcePermissionEntity.Enabled          = 1;
            return(permissionManager.Add(resourcePermissionEntity));
        }
示例#5
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="permissionEntity">实体</param>
        /// <returns>主键</returns>
        public string AddPermission(BasePermissionEntity permissionEntity)
        {
            var result = string.Empty;

            // 检查记录是否重复
            if (!PermissionExists(permissionEntity.PermissionId, permissionEntity.ResourceCategory, permissionEntity.ResourceId))
            {
                result = AddEntity(permissionEntity);
            }
            return(result);
        }
示例#6
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="permissionEntity">实体</param>
        /// <returns>主键</returns>
        public string AddPermission(BasePermissionEntity permissionEntity)
        {
            string result = string.Empty;

            // 检查记录是否重复
            if (!this.PermissionExists(permissionEntity.PermissionId.ToString(), permissionEntity.ResourceCategory, permissionEntity.ResourceId))
            {
                result = this.AddObject(permissionEntity);
            }
            return(result);
        }
示例#7
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="resourcePermissionEntity">实体</param>
        /// <param name="statusCode">返回状态码</param>
        /// <returns>主键</returns>
        public string AddPermission(BasePermissionEntity resourcePermissionEntity)
        {
            string returnValue = string.Empty;

            // 检查记录是否重复
            if (!this.PermissionExists(resourcePermissionEntity.PermissionId.ToString(), resourcePermissionEntity.ResourceCategory, resourcePermissionEntity.ResourceId))
            {
                returnValue = this.AddEntity(resourcePermissionEntity);
            }
            return(returnValue);
        }
        /// <summary>
        /// 授予资源的权限
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="resourceCategory">资源分类</param>
        /// <param name="resourceId">资源主键</param>
        /// <param name="grantPermissionItemIds">权限主键</param>
        /// <returns>影响的行数</returns>
        public int GrantResourcePermission(BaseUserInfo userInfo, string resourceCategory, string resourceId, string[] grantPermissionItemIds)
        {
            // 写入调试信息
            #if (DEBUG)
            int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
            #endif

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

            int returnValue = 0;
            using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
            {
                try
                {
                    dbHelper.Open(UserCenterDbConnection);
                    BaseRoleScopeManager roleScopeManager = new BaseRoleScopeManager(dbHelper, userInfo);
                    // 小心异常,检查一下参数的有效性
                    if (grantPermissionItemIds != null)
                    {
                        BasePermissionManager permissionManager = new BasePermissionManager(dbHelper, userInfo);
                        for (int i = 0; i < grantPermissionItemIds.Length; i++)
                        {
                            BasePermissionEntity resourcePermissionEntity = new BasePermissionEntity();
                            resourcePermissionEntity.ResourceCategory  = resourceCategory;
                            resourcePermissionEntity.ResourceId        = resourceId;
                            resourcePermissionEntity.PermissionId      = int.Parse(grantPermissionItemIds[i]);
                            resourcePermissionEntity.Enabled           = 1;
                            resourcePermissionEntity.DeletionStateCode = 0;
                            permissionManager.Add(resourcePermissionEntity);
                            returnValue++;
                        }
                    }
                    BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionService_GrantResourcePermission, MethodBase.GetCurrentMethod());
                }
                catch (Exception ex)
                {
                    BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                    throw ex;
                }
                finally
                {
                    dbHelper.Close();
                }
            }

            // 写入调试信息
            #if (DEBUG)
            BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
            #endif
            return(returnValue);
        }
示例#9
0
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="permissionEntity">实体</param>
 private void SetEntity(SQLBuilder sqlBuilder, BasePermissionEntity permissionEntity)
 {
     sqlBuilder.SetValue(BasePermissionEntity.FieldResourceId, permissionEntity.ResourceId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldResourceCategory, permissionEntity.ResourceCategory);
     sqlBuilder.SetValue(BasePermissionEntity.FieldPermissionItemId, permissionEntity.PermissionId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldPermissionConstraint, permissionEntity.PermissionConstraint);
     sqlBuilder.SetValue(BasePermissionEntity.FieldEnabled, permissionEntity.Enabled);
     sqlBuilder.SetValue(BasePermissionEntity.FieldDeletionStateCode, permissionEntity.DeletionStateCode);
     sqlBuilder.SetValue(BasePermissionEntity.FieldDescription, permissionEntity.Description);
     SetEntityExpand(sqlBuilder, permissionEntity);
 }
        //
        // 授予权限的实现部分
        //

        #region private string Grant(BasePermissionManager permissionManager, string id, string organizeId, string permissionItemId) 为了提高授权的运行速度
        /// <summary>
        /// 为了提高授权的运行速度
        /// </summary>
        /// <param name="permissionManager">资源权限读写器</param>
        /// <param name="Id">主键</param>
        /// <param name="organizeId">组织机构主键</param>
        /// <param name="permissionItemId">权限主键</param>
        /// <returns>主键</returns>
        private string Grant(BasePermissionManager permissionManager, string organizeId, string permissionItemId)
        {
            string returnValue = string.Empty;
            BasePermissionEntity resourcePermission = new BasePermissionEntity();

            resourcePermission.ResourceCategory = BaseOrganizeEntity.TableName;
            resourcePermission.ResourceId       = organizeId;
            resourcePermission.PermissionId     = int.Parse(permissionItemId);
            // 防止不允许为NULL的错误发生
            resourcePermission.Enabled = 1;
            return(permissionManager.Add(resourcePermission));
        }
示例#11
0
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="entity">实体</param>
 private void SetObject(SQLBuilder sqlBuilder, BasePermissionEntity entity)
 {
     sqlBuilder.SetValue(BasePermissionEntity.FieldResourceId, entity.ResourceId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldResourceCategory, entity.ResourceCategory);
     sqlBuilder.SetValue(BasePermissionEntity.FieldPermissionId, entity.PermissionId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldPermissionConstraint, entity.PermissionConstraint);
     sqlBuilder.SetValue(BasePermissionEntity.FieldCompanyId, entity.CompanyId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldCompanyName, entity.CompanyName);
     sqlBuilder.SetValue(BasePermissionEntity.FieldEnabled, entity.Enabled);
     sqlBuilder.SetValue(BasePermissionEntity.FieldDeletionStateCode, entity.DeletionStateCode);
     sqlBuilder.SetValue(BasePermissionEntity.FieldDescription, entity.Description);
     SetObjectExpand(sqlBuilder, entity);
 }
示例#12
0
 /// <summary>
 /// 添加或更新(主键是否为0)
 /// </summary>
 /// <param name="entity">实体</param>
 /// <param name="identity">自增量方式,表主键是否采用自增的策略</param>
 /// <param name="returnId">返回主键,不返回程序允许速度会快,主要是为了主细表批量插入数据优化用的</param>
 /// <returns>主键</returns>
 public string AddOrUpdate(BasePermissionEntity entity, bool identity = true, bool returnId = true)
 {
     Identity = identity;
     ReturnId = returnId;
     if (entity.Id == 0)
     {
         entity.Id = AddEntity(entity).ToInt();
         return(entity.Id.ToString());
     }
     else
     {
         return(UpdateEntity(entity) > 0 ? entity.Id.ToString() : string.Empty);
     }
 }
示例#13
0
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="sqlBuilder">Sql语句生成器</param>
 /// <param name="entity">实体</param>
 private void SetEntity(SqlBuilder sqlBuilder, BasePermissionEntity entity)
 {
     SetEntityExtend(sqlBuilder, entity);
     sqlBuilder.SetValue(BasePermissionEntity.FieldSystemCode, entity.SystemCode);
     sqlBuilder.SetValue(BasePermissionEntity.FieldResourceCategory, entity.ResourceCategory);
     sqlBuilder.SetValue(BasePermissionEntity.FieldResourceId, entity.ResourceId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldPermissionId, entity.PermissionId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldCompanyId, entity.CompanyId);
     sqlBuilder.SetValue(BasePermissionEntity.FieldCompanyName, entity.CompanyName);
     sqlBuilder.SetValue(BasePermissionEntity.FieldPermissionConstraint, entity.PermissionConstraint);
     sqlBuilder.SetValue(BasePermissionEntity.FieldDescription, entity.Description);
     sqlBuilder.SetValue(BasePermissionEntity.FieldSortCode, entity.SortCode);
     sqlBuilder.SetValue(BasePermissionEntity.FieldDeleted, entity.Deleted);
     sqlBuilder.SetValue(BasePermissionEntity.FieldEnabled, entity.Enabled);
 }
示例#14
0
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="resourcePermissionEntity">实体</param>
        public int UpdateEntity(BasePermissionEntity resourcePermissionEntity)
        {
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);

            sqlBuilder.BeginUpdate(this.CurrentTableName);
            this.SetEntity(sqlBuilder, resourcePermissionEntity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionEntity.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(BasePermissionEntity.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(BasePermissionEntity.FieldModifiedOn);
            sqlBuilder.SetWhere(BasePermissionEntity.FieldId, resourcePermissionEntity.Id);
            return(sqlBuilder.EndUpdate());
        }
示例#15
0
        /// <summary>
        /// 新增或激活
        /// </summary>
        /// <param name="entity">实体</param>
        /// <returns></returns>
        public string AddOrActive(BasePermissionEntity entity)
        {
            var result          = string.Empty;
            var whereParameters = new List <KeyValuePair <string, object> >
            {
                new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, entity.ResourceCategory),
                new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, entity.ResourceId),
                new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, entity.PermissionId)
            };
            var entityOld = GetEntity(whereParameters);

            if (entityOld != null)
            {
                result         = entityOld.Id.ToString();
                entity.Id      = entityOld.Id;
                entity.Enabled = 1;
                entity.Deleted = 0;
                //激活
                UpdateEntity(entity);
            }
            else
            {
                result = AddEntity(entity);
                if (!string.IsNullOrEmpty(result))
                {
                    //运行成功
                    StatusCode    = Status.OkAdd.ToString();
                    StatusMessage = Status.OkAdd.ToDescription();
                }
                else
                {
                    //保存失败
                    StatusCode    = Status.DbError.ToString();
                    StatusMessage = Status.DbError.ToDescription();
                }
            }

            return(result);
        }
示例#16
0
        /// <summary>
        /// 更新实体
        /// </summary>
        /// <param name="entity">实体</param>
        public int UpdateEntity(BasePermissionEntity entity)
        {
            var sqlBuilder = new SqlBuilder(DbHelper);

            sqlBuilder.BeginUpdate(CurrentTableName);
            SetEntity(sqlBuilder, entity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateUserId, UserInfo.UserId);
                sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateUserName, UserInfo.UserName);
                sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateBy, UserInfo.RealName);
            }
            sqlBuilder.SetDbNow(BasePermissionEntity.FieldUpdateTime);
            sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateIp, Utils.GetIp());
            sqlBuilder.SetWhere(PrimaryKey, entity.Id);
            //return sqlBuilder.EndUpdate();
            var result = sqlBuilder.EndUpdate();

            if (result > 0)
            {
                RemoveCache(entity.Id);
            }
            return(result);
        }
示例#17
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="resourcePermissionEntity">实体</param>
 /// <returns>主键</returns>
 public string Add(BasePermissionEntity resourcePermissionEntity)
 {
     return(this.AddEntity(resourcePermissionEntity));
 }
示例#18
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="entity">实体</param>
 /// <returns>主键</returns>
 public string Add(BasePermissionEntity entity)
 {
     return(this.AddObject(entity));
 }
示例#19
0
 partial void SetEntityExpand(SQLBuilder sqlBuilder, BasePermissionEntity permissionEntity);
示例#20
0
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="resourcePermissionEntity">实体</param>
        public string AddEntity(BasePermissionEntity resourcePermissionEntity)
        {
            string     sequence   = string.Empty;
            SQLBuilder sqlBuilder = new SQLBuilder(DbHelper, this.Identity, this.ReturnId);

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

            return(resourcePermissionEntity);
        }
示例#22
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="resourcePermissionEntity">实体</param>
 public int Update(BasePermissionEntity resourcePermissionEntity)
 {
     return(this.UpdateEntity(resourcePermissionEntity));
 }
示例#23
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="resourcePermissionEntity">实体</param>
 /// <param name="identity">自增量方式</param>
 /// <param name="returnId">返回主鍵</param>
 /// <returns>主键</returns>
 public string Add(BasePermissionEntity resourcePermissionEntity, bool identity, bool returnId)
 {
     this.Identity = identity;
     this.ReturnId = returnId;
     return(this.AddEntity(resourcePermissionEntity));
 }
示例#24
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="entity">实体</param>
 public int Update(BasePermissionEntity entity)
 {
     return(UpdateEntity(entity));
 }
示例#25
0
        /// <summary>
        /// 为了提高授权的运行速度
        /// </summary>
        /// <param name="systemCode">系统编号</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionId">权限主键</param>
        /// <param name="chekExists">判断是否存在</param>
        /// <returns>主键</returns>
        public string GrantUser(string systemCode, string userId, string permissionId, bool chekExists = true)
        {
            var result = string.Empty;

            if (!ValidateUtil.IsInt(userId) && string.IsNullOrEmpty(permissionId))
            {
                return(result);
            }

            CurrentTableName = systemCode + "Permission";

            var currentId = string.Empty;

            // 判断是否已经存在这个权限,若已经存在就不重复增加了
            if (chekExists)
            {
                var whereParameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, BaseUserEntity.CurrentTableName),
                    new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, userId),
                    new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, permissionId)
                };
                currentId = GetId(whereParameters);
                if (!string.IsNullOrEmpty(currentId))
                {
                    var parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldEnabled, 1),
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldDeleted, 0),
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldUpdateUserId, UserInfo.UserId),
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldUpdateBy, UserInfo.RealName),
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldUpdateTime, DateTime.Now)
                    };
                    // 更新状态,设置为有效、并取消删除,权限也不是天天变动的,所以可以更新一下
                    SetProperty(currentId, parameters);

                    result = currentId;
                }
            }

            if (string.IsNullOrEmpty(currentId))
            {
                var permissionEntity = new BasePermissionEntity
                {
                    ResourceCategory = BaseUserEntity.CurrentTableName,
                    ResourceId       = userId.ToString(),
                    PermissionId     = permissionId,
                    Enabled          = 1
                };
                // 2015-07-03 吉日嘎拉 若是没有公司相关的信息,就把公司区分出来,每个公司可以看每个公司的数据
                if (permissionEntity.CompanyId > 0)
                {
                    var entity = BaseUserManager.GetEntityByCache(userId);
                    if (entity != null)
                    {
                        permissionEntity.CompanyId   = entity.CompanyId;
                        permissionEntity.CompanyName = entity.CompanyName;
                    }
                }

                var permissionManager = new BasePermissionManager(DbHelper, UserInfo, CurrentTableName);
                result = permissionManager.Add(permissionEntity, true, false);
            }

            // 2015-09-21 吉日嘎拉 这里增加变更日志
            var tableName  = systemCode + "UserPermission";
            var sqlBuilder = new SqlBuilder(DbHelper);

            sqlBuilder.BeginInsert(BaseChangeLogEntity.CurrentTableName);
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldTableName, tableName);
            if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
            {
                sqlBuilder.SetFormula(BaseChangeLogEntity.FieldId, BaseChangeLogEntity.CurrentTableName + "_SEQ.NEXTVAL");
            }
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldRecordKey, userId);
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnName, "授权");
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnDescription, new BaseModuleManager().GetNameByCache(systemCode, permissionId));
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldOldValue, null);
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldNewValue, permissionId);
            sqlBuilder.EndInsert();

            return(result);
        }
示例#26
0
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="entity">实体</param>
        public string AddEntity(BasePermissionEntity entity)
        {
            var key = string.Empty;

            if (entity.SortCode == 0)
            {
                var managerSequence = new BaseSequenceManager(DbHelper, Identity);
                if (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.Db2)
                {
                    key = managerSequence.Increment($"SC_{CurrentTableName}_SEQ");
                }
                else
                {
                    key = managerSequence.Increment(CurrentTableName);
                }
                entity.SortCode = key.ToInt();
            }
            var sqlBuilder = new SqlBuilder(DbHelper, Identity, ReturnId);

            sqlBuilder.BeginInsert(CurrentTableName, PrimaryKey);
            if (!Identity)
            {
                // 这里已经是指定了主键了,所以不需要返回主键了
                sqlBuilder.ReturnId = false;
                sqlBuilder.SetValue(PrimaryKey, entity.Id);
            }
            else
            {
                if (!ReturnId && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.Db2))
                {
                    if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
                    {
                        sqlBuilder.SetFormula(PrimaryKey, $"{CurrentTableName}_SEQ.NEXTVAL");
                    }
                    if (DbHelper.CurrentDbType == CurrentDbType.Db2)
                    {
                        sqlBuilder.SetFormula(PrimaryKey, $"NEXT VALUE FOR {CurrentTableName}_SEQ");
                    }
                }
                else
                {
                    if (Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.Db2))
                    {
                        var managerSequence = new BaseSequenceManager(DbHelper);
                        entity.Id = managerSequence.Increment($"{CurrentTableName}_SEQ").ToInt();
                        sqlBuilder.SetValue(PrimaryKey, entity.Id);
                    }
                }
            }
            SetEntity(sqlBuilder, entity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionEntity.FieldCreateUserId, UserInfo.UserId);
                sqlBuilder.SetValue(BasePermissionEntity.FieldCreateUserName, UserInfo.UserName);
                sqlBuilder.SetValue(BasePermissionEntity.FieldCreateBy, UserInfo.RealName);
            }
            else
            {
                sqlBuilder.SetValue(BasePermissionEntity.FieldCreateBy, entity.CreateBy);
                sqlBuilder.SetValue(BasePermissionEntity.FieldCreateUserName, entity.CreateUserName);
            }
            sqlBuilder.SetDbNow(BasePermissionEntity.FieldCreateTime);
            sqlBuilder.SetValue(BasePermissionEntity.FieldCreateIp, Utils.GetIp());
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateUserId, UserInfo.UserId);
                sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateUserName, UserInfo.UserName);
                sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateBy, UserInfo.RealName);
            }
            sqlBuilder.SetDbNow(BasePermissionEntity.FieldUpdateTime);
            sqlBuilder.SetValue(BasePermissionEntity.FieldUpdateIp, Utils.GetIp());
            if (Identity && (DbHelper.CurrentDbType == CurrentDbType.SqlServer || DbHelper.CurrentDbType == CurrentDbType.Access))
            {
                key = sqlBuilder.EndInsert().ToString();
            }
            else
            {
                sqlBuilder.EndInsert();
            }
            if (Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.Db2))
            {
                key = entity.Id.ToString();
            }
            if (!string.IsNullOrWhiteSpace(key))
            {
                RemoveCache();
            }
            return(key);
        }
示例#27
0
 partial void SetObjectExpand(SQLBuilder sqlBuilder, BasePermissionEntity entity);
示例#28
0
 // 这个是声明扩展方法
 partial void SetEntityExtend(SqlBuilder sqlBuilder, BasePermissionEntity entity);
示例#29
0
        //
        // 授予权限的实现部分
        //

        #region public string Grant(string systemCode, string roleId, string permissionId, bool chekExists = true) 为了提高授权的运行速度
        /// <summary>
        /// 为了提高授权的运行速度
        /// </summary>
        /// <param name="systemCode">系统编号</param>
        /// <param name="roleId">角色主键</param>
        /// <param name="permissionId">权限主键</param>
        /// <returns>主键</returns>
        public string Grant(string systemCode, string roleId, string permissionId, bool chekExists = true)
        {
            string result = string.Empty;

            string currentId = string.Empty;

            this.CurrentTableName = systemCode + "Permission";

            string tableName = systemCode + "Role";

            // 判断是否已经存在这个权限,若已经存在就不重复增加了
            if (chekExists)
            {
                List <KeyValuePair <string, object> > whereParameters = new List <KeyValuePair <string, object> >();
                whereParameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, tableName));
                whereParameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, roleId));
                whereParameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, permissionId));
                currentId = this.GetId(whereParameters);
                if (!string.IsNullOrEmpty(currentId))
                {
                    List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();
                    parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldEnabled, 1));
                    parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldDeletionStateCode, 0));
                    parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldModifiedUserId, this.UserInfo.Id));
                    parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldModifiedBy, this.UserInfo.RealName));
                    parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldModifiedOn, DateTime.Now));
                    // 更新状态,设置为有效、并取消删除标志,权限也不是天天变动的,所以可以更新一下
                    this.SetProperty(currentId, parameters);
                }
            }

            if (string.IsNullOrEmpty(currentId))
            {
                BasePermissionEntity permissionEntity = new BasePermissionEntity();
                permissionEntity.ResourceCategory = tableName;
                permissionEntity.ResourceId       = roleId;
                permissionEntity.PermissionId     = permissionId;
                // 防止不允许为NULL的错误发生
                permissionEntity.Enabled           = 1;
                permissionEntity.DeletionStateCode = 0;
                BasePermissionManager permissionManager = new BasePermissionManager(DbHelper, UserInfo, this.CurrentTableName);
                result = permissionManager.Add(permissionEntity);
            }

            // 2015-09-21 吉日嘎拉 这里增加变更日志
            tableName = systemCode + ".Permission.Role";
            SQLBuilder sqlBuilder = new SQLBuilder(this.DbHelper);

            sqlBuilder.BeginInsert(BaseModifyRecordEntity.TableName);
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldTableCode, tableName);
            if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
            {
                sqlBuilder.SetFormula(BaseModifyRecordEntity.FieldId, "SEQ_" + BaseModifyRecordEntity.TableName + ".NEXTVAL");
            }
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldRecordKey, roleId);
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldColumnCode, "授权");
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldColumnDescription, BaseModuleManager.GetNameByCache(systemCode, permissionId));
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldOldValue, null);
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldNewValue, permissionId);
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldCreateUserId, this.UserInfo.Id);
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldCreateBy, this.UserInfo.RealName);
            sqlBuilder.SetDBNow(BaseModifyRecordEntity.FieldCreateOn);
            sqlBuilder.SetValue(BaseModifyRecordEntity.FieldIPAddress, this.UserInfo.IPAddress);
            sqlBuilder.EndInsert();

            return(result);
        }
        /// <summary>
        /// 为了提高授权的运行速度
        /// </summary>
        /// <param name="systemCode">系统编号</param>
        /// <param name="roleId">角色主键</param>
        /// <param name="permissionId">权限主键</param>
        /// <param name="chekExists"></param>
        /// <returns>主键</returns>
        public string GrantRole(string systemCode, string roleId, string permissionId, bool chekExists = true)
        {
            var result = string.Empty;

            var currentId = string.Empty;

            CurrentTableName = systemCode + "Permission";

            var tableName = systemCode + "Role";

            // 判断是否已经存在这个权限,若已经存在就不重复增加了
            if (chekExists)
            {
                var whereParameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, tableName),
                    new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, roleId),
                    new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, permissionId)
                };
                currentId = GetId(whereParameters);
                if (!string.IsNullOrEmpty(currentId))
                {
                    var parameters = new List <KeyValuePair <string, object> >
                    {
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldEnabled, 1),
                        new KeyValuePair <string, object>(BasePermissionEntity.FieldDeleted, 0),
                    };
                    // 更新状态,设置为有效、并取消删除,权限也不是天天变动的,所以可以更新一下
                    UpdateProperty(currentId, parameters);
                }
            }

            if (string.IsNullOrEmpty(currentId))
            {
                var permissionEntity = new BasePermissionEntity
                {
                    ResourceCategory = tableName,
                    ResourceId       = roleId,
                    PermissionId     = permissionId
                };
                var permissionManager = new BasePermissionManager(DbHelper, UserInfo, CurrentTableName);
                result = permissionManager.Add(permissionEntity, true, false);
            }

            // 2015-09-21 吉日嘎拉 这里增加变更日志
            tableName = systemCode + "RolePermission";
            var sqlBuilder = new SqlBuilder(DbHelper);

            sqlBuilder.BeginInsert(BaseChangeLogEntity.CurrentTableName);
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldTableName, tableName);
            if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
            {
                sqlBuilder.SetFormula(BaseChangeLogEntity.FieldId, BaseChangeLogEntity.CurrentTableName + "_SEQ.NEXTVAL");
            }
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldRecordKey, roleId);
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnName, "授权");
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnDescription, new BaseModuleManager().GetNameByCache(systemCode, permissionId));
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldOldValue, null);
            sqlBuilder.SetValue(BaseChangeLogEntity.FieldNewValue, permissionId);
            sqlBuilder.EndInsert();

            return(result);
        }