/// <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); }
/// <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)); }
/// <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); }