/// <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); }
/// <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()); }
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); }
// // 授予权限的实现部分 // #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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); } }
/// <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); }
/// <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()); }
/// <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); }
/// <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); }
/// <summary> /// 添加 /// </summary> /// <param name="resourcePermissionEntity">实体</param> /// <returns>主键</returns> public string Add(BasePermissionEntity resourcePermissionEntity) { return(this.AddEntity(resourcePermissionEntity)); }
/// <summary> /// 添加 /// </summary> /// <param name="entity">实体</param> /// <returns>主键</returns> public string Add(BasePermissionEntity entity) { return(this.AddObject(entity)); }
partial void SetEntityExpand(SQLBuilder sqlBuilder, BasePermissionEntity permissionEntity);
/// <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); }
/// <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); }
/// <summary> /// 更新 /// </summary> /// <param name="resourcePermissionEntity">实体</param> public int Update(BasePermissionEntity resourcePermissionEntity) { return(this.UpdateEntity(resourcePermissionEntity)); }
/// <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)); }
/// <summary> /// 更新 /// </summary> /// <param name="entity">实体</param> public int Update(BasePermissionEntity entity) { return(UpdateEntity(entity)); }
/// <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); }
/// <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); }
partial void SetObjectExpand(SQLBuilder sqlBuilder, BasePermissionEntity entity);
// 这个是声明扩展方法 partial void SetEntityExtend(SqlBuilder sqlBuilder, BasePermissionEntity entity);
// // 授予权限的实现部分 // #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); }