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

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

            permissionItemEntity.GetFrom(dataTable);
            return(dataTable);
        }
Example #3
0
        /// <summary>
        /// 按某个权限范围获取特定用户可访问的操作权限列表(有授权权限的权限列表)
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionItemCode">权限域编号</param>
        /// <returns>数据表</returns>
        public DataTable GetPermissionItemDTByPermissionScope(UserInfo userInfo, string userId, string permissionItemCode)
        {
            var dataTable = new DataTable(PiPermissionItemTable.TableName);
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionService_GetPermissionItemDTByPermissionScope);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var permissionItemManager = new PiPermissionItemManager(dbProvider, userInfo);
                var permissionItemId      = permissionItemManager.GetId(PiPermissionItemTable.FieldCode, permissionItemCode);
                // 数据库里没有设置可授权的权限项,系统自动增加一个权限配置项
                if (String.IsNullOrEmpty(permissionItemId) && permissionItemCode.Equals("Resource.ManagePermission"))
                {
                    var permissionItemEntity = new PiPermissionItemEntity
                    {
                        Code        = "Resource.ManagePermission",
                        FullName    = "资源管理范围权限(系统默认)",
                        IsScope     = 1,
                        Enabled     = 1,
                        AllowDelete = 0
                    };
                    permissionItemManager.AddEntity(permissionItemEntity);
                }
                dataTable           = permissionItemManager.GetDTByUser(userId, permissionItemCode);
                dataTable.TableName = PiPermissionItemTable.TableName;
            });
            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)
        {
            PiPermissionItemEntity permissionItemEntity = new PiPermissionItemEntity {
                Code = code, FullName = fullName
            };

            return(this.Add(permissionItemEntity, out statusCode));
        }
Example #5
0
        /// <summary>
        /// 用户角色关系是否有模块权限
        /// </summary>
        /// <param name="roleId">角色主键</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>有角色权限</returns>
        public bool CheckPermissionByRole(string roleId, string permissionItemCode)
        {
            var permissionItemManager = new PiPermissionItemManager(DBProvider, UserInfo);
            var permissionItemId      = permissionItemManager.GetProperty(PiPermissionItemTable.FieldCode, permissionItemCode, PiPermissionItemTable.FieldId);

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

            if (string.IsNullOrEmpty(permissionItemId))
            {
                return(false);
            }
            var sqlQuery = " SELECT COUNT(*) "
                           + "   FROM " + PiPermissionTable.TableName
                           + "  WHERE " + "(" + PiPermissionTable.FieldResourceCategory + " = '" + PiRoleTable.TableName + "') "
                           + "        AND (" + PiPermissionTable.FieldEnabled + " = 1) "
                           + "        AND (" + PiPermissionTable.FieldResourceId + " = '" + roleId + "' ) "
                           + "        AND (" + PiPermissionTable.FieldPermissionId + " = '" + permissionItemId + "') ";
            var rowCount     = 0;
            var returnObject = DBProvider.ExecuteScalar(sqlQuery);
            if (returnObject != null)
            {
                rowCount = int.Parse(returnObject.ToString());
            }
            return(rowCount > 0);
        }
        /// <summary>
        /// 按编号获取实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="code">编号</param>
        /// <returns>实体</returns>
        public PiPermissionItemEntity GetEntityByCode(UserInfo userInfo, string code)
        {
            PiPermissionItemEntity permissionItemEntity = null;
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionItemService_GetEntityByCode);

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

            string[] names  = { PiPermissionItemTable.FieldDeleteMark, PiPermissionItemTable.FieldEnabled, PiPermissionItemTable.FieldCode };
            object[] values = { 0, 1, permissionItemCode };

            var permissionItemEntity = new PiPermissionItemEntity();

            permissionItemEntity = BaseEntity.Create <PiPermissionItemEntity>(this.GetDT(names, values, PiPermissionItemTable.FieldId));
            string permissionItemId = string.Empty;

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

            // 不存在的权限就自动加入。
            if (String.IsNullOrEmpty(permissionItemId))
            {
                // 这里需要进行一次加锁,方式并发冲突发生
                lock (PermissionItemLock)
                {
                    permissionItemEntity.Code         = permissionItemCode;
                    permissionItemEntity.FullName     = string.IsNullOrEmpty(permissionItemName) ? permissionItemCode : permissionItemName;
                    permissionItemEntity.CategoryCode = "Application";
                    permissionItemEntity.ParentId     = null;
                    permissionItemEntity.ModuleId     = null;
                    permissionItemEntity.IsScope      = 0;
                    permissionItemEntity.IsPublic     = 0;
                    permissionItemEntity.AllowDelete  = 1;
                    permissionItemEntity.AllowEdit    = 1;
                    permissionItemEntity.Enabled      = 1;
                    permissionItemEntity.DeleteMark   = 0;
                    // 这里是防止主键重复?
                    permissionItemEntity.Id = BusinessLogic.NewGuid();
                    permissionItemId        = this.AddEntity(permissionItemEntity);
                }
            }
            else
            {
                // 更新最后一次访问日期,设置为当前服务器日期
                var sqlBuilder = new SQLBuilder(DBProvider);
                sqlBuilder.BeginUpdate(PiPermissionItemTable.TableName);
                sqlBuilder.SetDBNow(PiPermissionItemTable.FieldLastCall);
                sqlBuilder.SetWhere(PiPermissionItemTable.FieldId, permissionItemId);
                sqlBuilder.EndUpdate();
            }

            return(permissionItemId);
        }
        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="id">主键</param>
        /// <returns>实体</returns>
        public PiPermissionItemEntity GetEntity(UserInfo userInfo, string id)
        {
            var permissionItemEntity = new PiPermissionItemEntity();
            var parameter            = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionItemService_GetEntity);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var permissionItemManager = new PiPermissionItemManager(dbProvider, userInfo);
                var returnDataTable       = new DataTable(PiPermissionItemTable.TableName);
                returnDataTable           = permissionItemManager.GetDTById(id);
                permissionItemEntity      = BaseEntity.Create <PiPermissionItemEntity>(returnDataTable);
            });
            return(permissionItemEntity);
        }
        /// <summary>
        /// 批量保存
        /// </summary>
        /// <param name="dataTable">数据表</param>
        /// <returns>影响行数</returns>
        public override int BatchSave(DataTable dataTable)
        {
            int returnValue = 0;
            PiPermissionItemEntity permissionItemEntity = new PiPermissionItemEntity();

            foreach (DataRow dataRow in dataTable.Rows)
            {
                // 删除状态
                if (dataRow.RowState == DataRowState.Deleted)
                {
                    string id = dataRow[PiPermissionItemTable.FieldId, DataRowVersion.Original].ToString();
                    if (id.Length > 0)
                    {
                        if (dataRow[PiPermissionItemTable.FieldAllowDelete, DataRowVersion.Original].ToString().Equals("1"))
                        {
                            returnValue += this.DeleteEntity(id);
                        }
                    }
                }
                // 被修改过
                if (dataRow.RowState == DataRowState.Modified)
                {
                    string id = dataRow[PiPermissionItemTable.FieldId, DataRowVersion.Original].ToString();
                    if (id.Length > 0)
                    {
                        permissionItemEntity.GetFrom(dataRow);
                        // 判断是否允许编辑
                        returnValue += permissionItemEntity.AllowEdit == 1
                            ? this.UpdateEntity(permissionItemEntity)
                            : this.SetProperty(PiPermissionItemTable.FieldId, id, PiPermissionItemTable.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="permissionItemEntity">实体</param>
        public int UpdateEntity(PiPermissionItemEntity permissionItemEntity)
        {
            SQLBuilder sqlBuilder = new SQLBuilder(DBProvider);

            sqlBuilder.BeginUpdate(PiPermissionItemTable.TableName);
            this.SetEntity(sqlBuilder, permissionItemEntity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(PiPermissionItemTable.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(PiPermissionItemTable.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(PiPermissionItemTable.FieldModifiedOn);
            sqlBuilder.SetWhere(PiPermissionItemTable.FieldId, permissionItemEntity.Id);
            return(sqlBuilder.EndUpdate());
        }
        /// <summary>
        /// 添加操作权限项
        /// </summary>
        /// <param name="userInfo">当前用户</param>
        /// <param name="permissionItemEntity">权限定义实体</param>
        /// <param name="statusCode">状态码</param>
        /// <param name="statusMessage">状态信息</param>
        /// <returns>主键</returns>
        public string Add(UserInfo userInfo, PiPermissionItemEntity permissionItemEntity, out string statusCode, out string statusMessage)
        {
            string returnValue   = string.Empty;
            string returnCode    = string.Empty;
            string returnMessage = string.Empty;
            var    parameter     = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionItemService_Add);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var permissionItemManager = new PiPermissionItemManager(dbProvider, userInfo);
                returnValue   = permissionItemManager.Add(permissionItemEntity, out returnCode);
                returnMessage = permissionItemManager.GetStateMessage(returnCode);
            });
            statusCode    = returnCode;
            statusMessage = returnMessage;
            return(returnValue);
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="permissionItemEntity">实体</param>
        /// <param name="statusCode">返回状态码</param>
        /// <returns>主键</returns>
        public string Add(PiPermissionItemEntity permissionItemEntity, out string statusCode)
        {
            string returnValue = string.Empty;

            // 检查编号是否重复
            if (this.Exists(PiPermissionItemTable.FieldDeleteMark, 0, PiPermissionItemTable.FieldCode, permissionItemEntity.Code))
            {
                // 编号已重复
                statusCode = StatusCode.ErrorCodeExist.ToString();
            }
            else
            {
                returnValue = this.AddEntity(permissionItemEntity);
                // 运行成功
                statusCode = StatusCode.OKAdd.ToString();
            }
            return(returnValue);
        }
 /// <summary>
 /// 设置实体
 /// </summary>
 /// <param name="sqlBuilder">SQL语句生成器</param>
 /// <param name="permissionItemEntity">实体</param>
 private void SetEntity(SQLBuilder sqlBuilder, PiPermissionItemEntity permissionItemEntity)
 {
     sqlBuilder.SetValue(PiPermissionItemTable.FieldParentId, permissionItemEntity.ParentId);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldModuleId, permissionItemEntity.ModuleId);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldCode, permissionItemEntity.Code);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldFullName, permissionItemEntity.FullName);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldCategoryCode, permissionItemEntity.CategoryCode);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldJsEvent, permissionItemEntity.JsEvent);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldIsSplit, permissionItemEntity.IsSplit);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldIsScope, permissionItemEntity.IsScope);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldIsPublic, permissionItemEntity.IsPublic);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldAllowEdit, permissionItemEntity.AllowEdit);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldAllowDelete, permissionItemEntity.AllowDelete);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldLastCall, permissionItemEntity.LastCall);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldEnabled, permissionItemEntity.Enabled);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldDeleteMark, permissionItemEntity.DeleteMark);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldSortCode, permissionItemEntity.SortCode);
     sqlBuilder.SetValue(PiPermissionItemTable.FieldDescription, permissionItemEntity.Description);
 }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 /// <param name="identity">自增量方式</param>
 /// <param name="returnId">返回主鍵</param>
 /// <returns>主键</returns>
 public string Add(PiPermissionItemEntity permissionItemEntity, bool identity, bool returnId)
 {
     this.Identity = identity;
     this.ReturnId = returnId;
     return(this.AddEntity(permissionItemEntity));
 }
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 /// <returns>主键</returns>
 public string Add(PiPermissionItemEntity permissionItemEntity)
 {
     return(this.AddEntity(permissionItemEntity));
 }
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="permissionItemEntity">实体</param>
 public int Update(PiPermissionItemEntity permissionItemEntity)
 {
     return(this.UpdateEntity(permissionItemEntity));
 }
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="permissionItemEntity">实体</param>
        public string AddEntity(PiPermissionItemEntity permissionItemEntity)
        {
            string sequence = string.Empty;

            if (permissionItemEntity.SortCode == 0 || permissionItemEntity.SortCode == null)
            {
                CiSequenceManager sequenceManager = new CiSequenceManager(DBProvider, this.Identity);
                sequence = sequenceManager.GetSequence(this.CurrentTableName, sequenceManager.DefaultSequence);
                permissionItemEntity.SortCode = int.Parse(sequence);
            }
            this.Identity = false;
            SQLBuilder sqlBuilder = new SQLBuilder(DBProvider, this.Identity, this.ReturnId);

            sqlBuilder.BeginInsert(PiPermissionItemTable.TableName, PiPermissionItemTable.FieldId);
            if (!this.Identity)
            {
                if (string.IsNullOrEmpty(permissionItemEntity.Id))
                {
                    sequence = BusinessLogic.NewGuid();
                    permissionItemEntity.Id = sequence;
                }
                sqlBuilder.SetValue(PiPermissionItemTable.FieldId, permissionItemEntity.Id);
            }
            else
            {
                if (!this.ReturnId && (DBProvider.CurrentDbType == CurrentDbType.Oracle || DBProvider.CurrentDbType == CurrentDbType.DB2))
                {
                    if (DBProvider.CurrentDbType == CurrentDbType.Oracle)
                    {
                        sqlBuilder.SetFormula(PiPermissionItemTable.FieldId, "SEQ_" + this.CurrentTableName.ToUpper() + ".NEXTVAL ");
                    }
                    if (DBProvider.CurrentDbType == CurrentDbType.DB2)
                    {
                        sqlBuilder.SetFormula(PiPermissionItemTable.FieldId, "NEXT VALUE FOR SEQ_" + this.CurrentTableName.ToUpper());
                    }
                }
                else
                {
                    if (this.Identity && (DBProvider.CurrentDbType == CurrentDbType.Oracle || DBProvider.CurrentDbType == CurrentDbType.DB2))
                    {
                        if (permissionItemEntity.Id == null)
                        {
                            if (string.IsNullOrEmpty(sequence))
                            {
                                CiSequenceManager sequenceManager = new CiSequenceManager(DBProvider, this.Identity);
                                sequence = sequenceManager.GetSequence(this.CurrentTableName);
                            }
                            permissionItemEntity.Id = sequence;
                        }
                        sqlBuilder.SetValue(PiPermissionItemTable.FieldId, permissionItemEntity.Id);
                    }
                }
            }
            this.SetEntity(sqlBuilder, permissionItemEntity);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(PiPermissionItemTable.FieldCreateUserId, UserInfo.Id);
                sqlBuilder.SetValue(PiPermissionItemTable.FieldCreateBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(PiPermissionItemTable.FieldCreateOn);
            if (UserInfo != null)
            {
                sqlBuilder.SetValue(PiPermissionItemTable.FieldModifiedUserId, UserInfo.Id);
                sqlBuilder.SetValue(PiPermissionItemTable.FieldModifiedBy, UserInfo.RealName);
            }
            sqlBuilder.SetDBNow(PiPermissionItemTable.FieldModifiedOn);
            if (DBProvider.CurrentDbType == CurrentDbType.SqlServer && this.Identity)
            {
                sequence = sqlBuilder.EndInsert().ToString();
            }
            else
            {
                sqlBuilder.EndInsert();
            }
            return(sequence);
        }