/// <summary> /// 添加, 这里可以人工干预,提高程序的性能 /// </summary> /// <param name="entity">实体</param> /// <param name="identity">自增量方式,表主键是否采用自增的策略</param> /// <param name="returnId">返回主键,不返回程序允许速度会快,主要是为了主细表批量插入数据优化用的</param> /// <returns>主键</returns> public string Add(BaseUserOrganizationEntity entity, bool identity = true, bool returnId = true) { Identity = identity; ReturnId = returnId; entity.Id = AddEntity(entity).ToInt(); return(entity.Id.ToString()); }
/// <summary> /// 添加用户组织机构关系 /// </summary> /// <param name="entity">用户组织机构实体</param> /// <param name="status">状态</param> /// <returns>主键</returns> public string Add(BaseUserOrganizationEntity entity, out Status status) { var result = string.Empty; // 判断数据是否重复了 var parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldUserId, entity.UserId), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldCompanyId, entity.CompanyId), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldSubCompanyId, entity.SubCompanyId), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldDepartmentId, entity.DepartmentId), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldSubDepartmentId, entity.SubDepartmentId), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldWorkgroupId, entity.WorkgroupId), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldEnabled, 1), new KeyValuePair <string, object>(BaseUserOrganizationEntity.FieldDeleted, 0) }; if (Exists(parameters)) { // 用户名已重复 status = Status.Exist; } else { result = AddEntity(entity); // 运行成功 status = Status.OkAdd; } return(result); }
/// <summary> /// 设置实体 /// </summary> /// <param name="sqlBuilder">Sql语句生成器</param> /// <param name="entity">实体</param> private void SetEntity(SqlBuilder sqlBuilder, BaseUserOrganizationEntity entity) { SetEntityExtend(sqlBuilder, entity); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUserId, entity.UserId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldCompanyId, entity.CompanyId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldSubCompanyId, entity.SubCompanyId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldDepartmentId, entity.DepartmentId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldSubDepartmentId, entity.SubDepartmentId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldWorkgroupId, entity.WorkgroupId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldDescription, entity.Description); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldSortCode, entity.SortCode); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldDeleted, entity.Deleted); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldEnabled, entity.Enabled); }
/// <summary> /// 添加或更新(主键是否为0) /// </summary> /// <param name="entity">实体</param> /// <param name="identity">自增量方式,表主键是否采用自增的策略</param> /// <param name="returnId">返回主键,不返回程序允许速度会快,主要是为了主细表批量插入数据优化用的</param> /// <returns>主键</returns> public string AddOrUpdate(BaseUserOrganizationEntity 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="userInfo">用户</param> /// <param name="entity">用户组织机构关系</param> /// <param name="status">状态</param> /// <param name="statusMessage">状态信息</param> /// <returns>主键</returns> public string AddUserToOrganization(BaseUserInfo userInfo, BaseUserOrganizationEntity entity, out Status status, out string statusMessage) { var returnCode = Status.Ok; var returnMessage = string.Empty; var result = string.Empty; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var userOrganizationManager = new BaseUserOrganizationManager(dbHelper, userInfo); result = userOrganizationManager.Add(entity, out returnCode); returnMessage = userOrganizationManager.GetStateMessage(returnCode); }); status = returnCode; statusMessage = returnMessage; return(result); }
/// <summary> /// 更新实体 /// </summary> /// <param name="entity">实体</param> public int UpdateEntity(BaseUserOrganizationEntity entity) { var sqlBuilder = new SqlBuilder(DbHelper); sqlBuilder.BeginUpdate(CurrentTableName); SetEntity(sqlBuilder, entity); if (UserInfo != null) { sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateUserId, UserInfo.UserId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateUserName, UserInfo.UserName); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateBy, UserInfo.RealName); } sqlBuilder.SetDbNow(BaseUserOrganizationEntity.FieldUpdateTime); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateIp, Utils.GetIp()); sqlBuilder.SetWhere(PrimaryKey, entity.Id); //return sqlBuilder.EndUpdate(); var result = sqlBuilder.EndUpdate(); if (result > 0) { RemoveCache(entity.Id); } return(result); }
// 这个是声明扩展方法 partial void SetEntityExtend(SqlBuilder sqlBuilder, BaseUserOrganizationEntity entity);
/// <summary> /// 添加实体 /// </summary> /// <param name="entity">实体</param> public string AddEntity(BaseUserOrganizationEntity 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(BaseUserOrganizationEntity.FieldCreateUserId, UserInfo.UserId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldCreateUserName, UserInfo.UserName); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldCreateBy, UserInfo.RealName); } else { sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldCreateBy, entity.CreateBy); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldCreateUserName, entity.CreateUserName); } sqlBuilder.SetDbNow(BaseUserOrganizationEntity.FieldCreateTime); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldCreateIp, Utils.GetIp()); if (UserInfo != null) { sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateUserId, UserInfo.UserId); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateUserName, UserInfo.UserName); sqlBuilder.SetValue(BaseUserOrganizationEntity.FieldUpdateBy, UserInfo.RealName); } sqlBuilder.SetDbNow(BaseUserOrganizationEntity.FieldUpdateTime); sqlBuilder.SetValue(BaseUserOrganizationEntity.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); }
/// <summary> /// 更新 /// </summary> /// <param name="entity">实体</param> public int Update(BaseUserOrganizationEntity entity) { return(UpdateEntity(entity)); }