diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs index 47db2f77..20590bc6 100644 --- a/ZR.Admin.WebApi/Controllers/CommonController.cs +++ b/ZR.Admin.WebApi/Controllers/CommonController.cs @@ -190,7 +190,6 @@ namespace ZR.Admin.WebApi.Controllers return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败"); } var path = Path.Combine(WebHostEnvironment.WebRootPath, "data.xlsx"); - //var sheetNames = MiniExcel.GetSheetNames(path); SeedDataService seedDataService = new(); var result = seedDataService.InitSeedData(path, clean); Console.ForegroundColor = ConsoleColor.Red; diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs index 5aabe55a..8941c6a5 100644 --- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs @@ -153,6 +153,7 @@ namespace ZR.Admin.WebApi.Controllers { throw new CustomException("表不能为空"); } + var dbType = AppSettings.GetAppConfig(GenConstants.Gen_conn_dbType, 0); string[] tableNames = tables.Split(',', StringSplitOptions.RemoveEmptyEntries); int result = 0; foreach (var tableName in tableNames) @@ -160,15 +161,18 @@ namespace ZR.Admin.WebApi.Controllers var tabInfo = _CodeGeneraterService.GetTableInfo(dbName, tableName); if (tabInfo != null) { + List seqs = new(); GenTable genTable = CodeGeneratorTool.InitTable(dbName, HttpContext.GetName(), tableName, tabInfo?.Description); genTable.TableId = GenTableService.ImportGenTable(genTable); - + if (dbType == 3) + { + seqs = _CodeGeneraterService.GetAllOracleSeqs(dbName); + } if (genTable.TableId > 0) { //保存列信息 List dbColumnInfos = _CodeGeneraterService.GetColumnInfo(dbName, tableName); - List genTableColumns = CodeGeneratorTool.InitGenTableColumn(genTable, dbColumnInfos); - + List genTableColumns = CodeGeneratorTool.InitGenTableColumn(genTable, dbColumnInfos, seqs); GenTableColumnService.DeleteGenTableColumnByTableName(tableName); GenTableColumnService.InsertGenTableColumn(genTableColumns); genTable.Columns = genTableColumns; @@ -264,10 +268,11 @@ namespace ZR.Admin.WebApi.Controllers //自定义路径 if (genTableInfo.GenType == "1") { + var genPath = genTableInfo.GenPath; string tempPath = WebHostEnvironment.ContentRootPath; var parentPath = tempPath[..tempPath.LastIndexOf(@"\")]; //代码生成文件夹路径 - dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? parentPath : genTableInfo.GenPath; + dto.GenCodePath = (genPath.IsEmpty() || genPath.Equals("/")) ? parentPath : genTableInfo.GenPath; } else { diff --git a/ZR.Admin.WebApi/Extensions/DbExtension.cs b/ZR.Admin.WebApi/Extensions/DbExtension.cs index e9d76414..58404484 100644 --- a/ZR.Admin.WebApi/Extensions/DbExtension.cs +++ b/ZR.Admin.WebApi/Extensions/DbExtension.cs @@ -1,15 +1,16 @@ using Infrastructure; using Infrastructure.Extensions; -using Infrastructure.Helper; using SqlSugar; using SqlSugar.IOC; -using System.Reflection; using ZR.Admin.WebApi.Framework; using ZR.Model; using ZR.Model.System; namespace ZR.Admin.WebApi.Extensions { + /// + /// sqlsugar 数据处理 + /// public static class DbExtension { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); @@ -63,9 +64,9 @@ namespace ZR.Admin.WebApi.Extensions }); }); - if(Configuration["InitDb"].ParseToBool() == true && environment.IsDevelopment()) + if (Configuration["InitDb"].ParseToBool() == true && environment.IsDevelopment()) { - InitDb(); + InitTable.InitDb(); } } @@ -78,7 +79,7 @@ namespace ZR.Admin.WebApi.Extensions private static void SetSugarAop(SqlSugarClient db, IocConfig iocConfig, ICacheService cache) { var config = db.GetConnectionScope(iocConfig.ConfigId).CurrentConnectionConfig; - + string configId = config.ConfigId; db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) => { @@ -101,7 +102,6 @@ namespace ZR.Admin.WebApi.Extensions logger.Info(log); } }; - db.GetConnectionScope(configId).Aop.OnError = (ex) => { var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value)); @@ -109,10 +109,10 @@ namespace ZR.Admin.WebApi.Extensions string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n"; logger.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}"); }; - db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) => { }; + db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings() { IsAutoRemoveDataCache = true @@ -122,20 +122,6 @@ namespace ZR.Admin.WebApi.Extensions DataInfoCacheService = cache, EntityService = (c, p) => { - p.DbTableName = p.DbTableName.FirstLowerCase(); - p.DbColumnName = p.DbColumnName.FirstLowerCase(); - - if (db.GetConnectionScope(configId).CurrentConnectionConfig.DbType == DbType.PostgreSQL) - { - if (p.DataType != null && p.DataType.Contains("nvarchar")) - { - p.DataType = "text"; - } - if (c.Name == nameof(SysMenu.IsCache) || c.Name == nameof(SysMenu.IsFrame)) - { - p.DataType = "char(1)"; - } - } if (p.IsPrimarykey == true)//主键不能为null { p.IsNullable = false; @@ -148,26 +134,46 @@ namespace ZR.Admin.WebApi.Extensions { p.IsNullable = true; } + + if (config.DbType == DbType.PostgreSQL) + { + if (c.Name == nameof(SysMenu.IsCache) || c.Name == nameof(SysMenu.IsFrame)) + { + p.DataType = "char(1)"; + } + } + #region 兼容Oracle + if (config.DbType == DbType.Oracle) + { + if (p.IsIdentity == true) + { + if (p.EntityName == nameof(SysUser)) + { + p.OracleSequenceName = "SEQ_SYS_USER_USERID"; + } + else if (p.EntityName == nameof(SysRole)) + { + p.OracleSequenceName = "SEQ_SYS_ROLE_ROLEID"; + } + else if (p.EntityName == nameof(SysDept)) + { + p.OracleSequenceName = "SEQ_SYS_DEPT_DEPTID"; + } + else if (p.EntityName == nameof(SysMenu)) + { + p.OracleSequenceName = "SEQ_SYS_MENU_MENUID"; + } + else + { + p.OracleSequenceName = "SEQ_ID"; + } + } + } + #endregion } }; } - /// - /// 创建db、表 - /// - public static void InitDb() - { - var db = DbScoped.SugarScope; - //建库:如果不存在创建数据库存在不会重复创建 - db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库 - - var baseType = typeof(SysBase); - var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute() != null).ToArray(); - - //23个表 - db.CodeFirst.InitTables(entityes); - } - private static object GetParsValue(SugarParameter x) { if (x.DbType == System.Data.DbType.String || x.DbType == System.Data.DbType.DateTime || x.DbType == System.Data.DbType.String) diff --git a/ZR.Admin.WebApi/Extensions/InitTable.cs b/ZR.Admin.WebApi/Extensions/InitTable.cs new file mode 100644 index 00000000..543f6276 --- /dev/null +++ b/ZR.Admin.WebApi/Extensions/InitTable.cs @@ -0,0 +1,53 @@ +using SqlSugar.IOC; +using ZR.Model.Models; +using ZR.Model.System; +using ZR.Model.System.Generate; + +namespace ZR.Admin.WebApi.Extensions +{ + /// + /// 初始化表 + /// + public class InitTable + { + /// + /// 创建db、表 + /// + public static void InitDb() + { + var db = DbScoped.SugarScope; + //建库:如果不存在创建数据库存在不会重复创建 + db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库 + + //var baseType = typeof(SysBase); + //var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute() != null).ToArray(); + //db.CodeFirst.InitTables(entityes); + + //23个表,建议先使用下面方法初始化表,方便排查问题 + db.CodeFirst.InitTables(typeof(SysUser)); + db.CodeFirst.InitTables(typeof(SysRole)); + db.CodeFirst.InitTables(typeof(SysDept)); + db.CodeFirst.InitTables(typeof(SysPost)); + db.CodeFirst.InitTables(typeof(SysFile)); + db.CodeFirst.InitTables(typeof(SysConfig)); + db.CodeFirst.InitTables(typeof(SysNotice)); + db.CodeFirst.InitTables(typeof(SysLogininfor)); + db.CodeFirst.InitTables(typeof(SysOperLog)); + db.CodeFirst.InitTables(typeof(SysMenu)); + db.CodeFirst.InitTables(typeof(SysRoleMenu)); + db.CodeFirst.InitTables(typeof(SysRoleDept)); + db.CodeFirst.InitTables(typeof(SysUserRole)); + db.CodeFirst.InitTables(typeof(SysUserPost)); + db.CodeFirst.InitTables(typeof(SysTasks)); + db.CodeFirst.InitTables(typeof(SysTasksLog)); + db.CodeFirst.InitTables(typeof(CommonLang)); + db.CodeFirst.InitTables(typeof(GenTable)); + db.CodeFirst.InitTables(typeof(GenTableColumn)); + db.CodeFirst.InitTables(typeof(Article)); + db.CodeFirst.InitTables(typeof(ArticleCategory)); + db.CodeFirst.InitTables(typeof(SysDictData)); + db.CodeFirst.InitTables(typeof(SysDictType)); + } + + } +} diff --git a/ZR.Admin.WebApi/appsettings.json b/ZR.Admin.WebApi/appsettings.json index 3f350656..7c51eefa 100644 --- a/ZR.Admin.WebApi/appsettings.json +++ b/ZR.Admin.WebApi/appsettings.json @@ -36,7 +36,7 @@ "DemoMode": false, //是否演示模式 "Upload": { "uploadUrl": "http://localhost:8888", //本地存储资源访问路径 - "localSavePath": "uploads", //本地上传默认文件存储目录 wwwroot/uploads + "localSavePath": "uploads", //本地上传默认文件存储目录 wwwroot/uploads, 如果saveType= 2 (请使用完整路径,比如 /home/resource) "maxSize": 15, //上传文件大小限制 15M "notAllowedExt": [ ".bat", ".exe", ".jar", ".js" ] }, diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt new file mode 100644 index 00000000..c429c891 --- /dev/null +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt @@ -0,0 +1 @@ +请勾选 添加菜单 ,将会自动导入菜单到数据库中 \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/data.xlsx b/ZR.Admin.WebApi/wwwroot/data.xlsx index a5c36f11..5546be9c 100644 Binary files a/ZR.Admin.WebApi/wwwroot/data.xlsx and b/ZR.Admin.WebApi/wwwroot/data.xlsx differ diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 091c9379..d078fc6f 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -50,6 +50,7 @@ namespace ZR.CodeGenerator ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5), ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6), ShowBtnMultiDel = dto.GenTable.Options.CheckedBtn.Any(f => f == 7), + ViewFileName = dto.GenTable.BusinessName.FirstUpperCase() }; var columns = dto.GenTable.Columns; @@ -67,7 +68,7 @@ namespace ZR.CodeGenerator GenerateControllers(replaceDto, dto); if (dto.VueVersion == 3) { - GenerateVue3Views(dto); + GenerateVue3Views(replaceDto, dto); } else { @@ -182,7 +183,7 @@ namespace ZR.CodeGenerator replaceDto.VueViewFormHtml = GenerateCurdForm(); var tpl = JnHelper.ReadTemplate(CodeTemplateDir, fileName); - var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue"); + var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{replaceDto.ViewFileName}.vue"); generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, tpl.Render())); } @@ -191,7 +192,7 @@ namespace ZR.CodeGenerator /// vue3 /// /// - private static void GenerateVue3Views(GenerateDto generateDto) + private static void GenerateVue3Views(ReplaceDto replaceDto, GenerateDto generateDto) { string fileName = generateDto.GenTable.TplCategory switch { @@ -206,7 +207,7 @@ namespace ZR.CodeGenerator tpl.Set("options", generateDto.GenTable?.Options); var result = tpl.Render(); - var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue"); + var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{replaceDto.ViewFileName}.vue"); generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result)); } @@ -240,21 +241,13 @@ namespace ZR.CodeGenerator /// public static void GenerateSql(GenerateDto generateDto) { - var tempName = ""; - switch (generateDto.DbType) + string tempName = generateDto.DbType switch { - case 0: - tempName = "MySqlTemplate"; - break; - case 1: - tempName = "SqlTemplate"; - break; - case 4: - tempName = "PgSql"; - break; - default: - break; - } + 0 => "MySqlTemplate", + 1 => "SqlTemplate", + 4 => "PgSql", + _ => "Other", + }; var tpl = JnHelper.ReadTemplate(CodeTemplateDir, Path.Combine("sql", $"{tempName}.txt")); tpl.Set("parentId", generateDto.GenTable?.Options?.ParentMenuId ?? 0); var result = tpl.Render(); @@ -315,18 +308,8 @@ namespace ZR.CodeGenerator } } } - return tableName.UnderScoreToCamelCase(); - } - - /// - /// 获取前端标签名 - /// - /// - /// - /// - public static string GetLabelName(string columnDescription, string columnName) - { - return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription; + //return tableName.UnderScoreToCamelCase(); + return tableName.ConvertToPascal("_"); } /// @@ -343,7 +326,7 @@ namespace ZR.CodeGenerator catch (Exception ex) { Console.WriteLine(ex.Message); - return ""; + return str; } } @@ -357,8 +340,8 @@ namespace ZR.CodeGenerator sDatatype = sDatatype.ToLower(); string sTempDatatype = sDatatype switch { - "int" or "number" or "integer" or "smallint" or "int4" or "int8" or "int2" => "int", - "bigint" => "long", + "int" or "integer" or "smallint" or "int4" or "int8" or "int2" => "int", + "bigint" or "number" => "long", "tinyint" => "byte", "numeric" or "real" or "float" => "float", "decimal" or "numer(8,2)" or "numeric" => "decimal", @@ -389,8 +372,8 @@ namespace ZR.CodeGenerator DbName = dbName, BaseNameSpace = "ZR.",//导入默认命名空间前缀 ModuleName = "business",//导入默认模块名 - ClassName = GetClassName(tableName).FirstUpperCase(), - BusinessName = tableName.UnderScoreToCamelCase().FirstUpperCase(), + ClassName = GetClassName(tableName), + BusinessName = GetClassName(tableName), FunctionAuthor = AppSettings.GetConfig(GenConstants.Gen_author), TableName = tableName, TableComment = desc, @@ -412,12 +395,13 @@ namespace ZR.CodeGenerator /// /// /// - public static List InitGenTableColumn(GenTable genTable, List dbColumnInfos) + /// + public static List InitGenTableColumn(GenTable genTable, List dbColumnInfos, List seqs = null) { List genTableColumns = new(); foreach (var column in dbColumnInfos) { - genTableColumns.Add(InitColumnField(genTable, column)); + genTableColumns.Add(InitColumnField(genTable, column, seqs)); } return genTableColumns; } @@ -428,17 +412,26 @@ namespace ZR.CodeGenerator /// /// /// - private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column) + private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column, List seqs) { + var dbType = AppSettings.Get(GenConstants.Gen_conn_dbType); + var dataType = column.DataType; + if (dbType == 3) + { + dataType = column.OracleDataType; + var seqName = $"SEQ_{genTable.TableName}_{column.DbColumnName}"; + var isIdentity = seqs.Any(f => seqName.Equals(f.SEQUENCE_NAME, StringComparison.CurrentCultureIgnoreCase)); + column.IsIdentity = isIdentity; + } GenTableColumn genTableColumn = new() { ColumnName = column.DbColumnName.FirstLowerCase(), ColumnComment = column.ColumnDescription, IsPk = column.IsPrimarykey, - ColumnType = column.DataType, + ColumnType = dataType, TableId = genTable.TableId, TableName = genTable.TableName, - CsharpType = GetCSharpDatatype(column.DataType), + CsharpType = GetCSharpDatatype(dataType), CsharpField = column.DbColumnName.ConvertToPascal("_"), IsRequired = !column.IsNullable, IsIncrement = column.IsIdentity, diff --git a/ZR.CodeGenerator/GenConstants.cs b/ZR.CodeGenerator/GenConstants.cs index 057cc2f1..c2563aa0 100644 --- a/ZR.CodeGenerator/GenConstants.cs +++ b/ZR.CodeGenerator/GenConstants.cs @@ -15,7 +15,7 @@ namespace ZR.CodeGenerator /// /// InputDto输入实体是不包含字段 /// - public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time" }; + public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time", "create_by", "update_by" }; /// /// 图片字段 /// @@ -27,7 +27,7 @@ namespace ZR.CodeGenerator /// /// 单选按钮字段 /// - public static readonly string[] radioFiled = new string[] { "status", "state", "is"}; + public static readonly string[] radioFiled = new string[] { "status", "state", "is" }; /// diff --git a/ZR.CodeGenerator/Model/OracleSeq.cs b/ZR.CodeGenerator/Model/OracleSeq.cs new file mode 100644 index 00000000..6a56a302 --- /dev/null +++ b/ZR.CodeGenerator/Model/OracleSeq.cs @@ -0,0 +1,11 @@ +namespace ZR.CodeGenerator.Model +{ + /// + /// Oracle库序列 + /// + public class OracleSeq + { + public string SEQUENCE_NAME { get; set; } + public long LAST_NUMBER { get; set; } + } +} diff --git a/ZR.CodeGenerator/Model/ReplaceDto.cs b/ZR.CodeGenerator/Model/ReplaceDto.cs index 325fd48e..6ea178ff 100644 --- a/ZR.CodeGenerator/Model/ReplaceDto.cs +++ b/ZR.CodeGenerator/Model/ReplaceDto.cs @@ -65,5 +65,9 @@ namespace ZR.CodeGenerator.Model /// 是否有编辑器 /// public int ShowEditor { get; set; } + /// + /// vue页面文件名 + /// + public string ViewFileName { get; set; } } } diff --git a/ZR.CodeGenerator/Service/CodeGeneraterService.cs b/ZR.CodeGenerator/Service/CodeGeneraterService.cs index 95f44c66..bbe2557c 100644 --- a/ZR.CodeGenerator/Service/CodeGeneraterService.cs +++ b/ZR.CodeGenerator/Service/CodeGeneraterService.cs @@ -2,6 +2,7 @@ using SqlSugar; using System.Collections.Generic; using System.Linq; +using ZR.CodeGenerator.Model; using ZR.Model; namespace ZR.CodeGenerator.Service @@ -72,5 +73,18 @@ namespace ZR.CodeGenerator.Service { return GetSugarDbContext(dbName).DbMaintenance.GetColumnInfosByTableName(tableName, true); } + + /// + /// 获取Oracle所有序列 + /// + /// + /// + public List GetAllOracleSeqs(string dbName) + { + string sql = "SELECT * FROM USER_SEQUENCES"; + var seqs = GetSugarDbContext(dbName).Ado.SqlQuery(sql); + + return seqs.ToList(); + } } } diff --git a/ZR.CodeGenerator/ZR.CodeGenerator.csproj b/ZR.CodeGenerator/ZR.CodeGenerator.csproj index 71788a3d..a1a2040e 100644 --- a/ZR.CodeGenerator/ZR.CodeGenerator.csproj +++ b/ZR.CodeGenerator/ZR.CodeGenerator.csproj @@ -12,6 +12,6 @@ - + diff --git a/ZR.Model/System/Article.cs b/ZR.Model/System/Article.cs index 558deb08..52854aeb 100644 --- a/ZR.Model/System/Article.cs +++ b/ZR.Model/System/Article.cs @@ -33,7 +33,7 @@ namespace ZR.Model.System /// /// 文章内容 /// - [SugarColumn(ColumnDescription = "文章内容", ColumnDataType = "text")] + [SugarColumn(ColumnDescription = "文章内容", ColumnDataType = StaticConfig.CodeFirst_BigString)] public string Content { get; set; } /// /// 作者名 diff --git a/ZR.Model/System/SysBase.cs b/ZR.Model/System/SysBase.cs index 5618c83b..b46ce8ec 100644 --- a/ZR.Model/System/SysBase.cs +++ b/ZR.Model/System/SysBase.cs @@ -16,17 +16,26 @@ namespace ZR.Model.System [ExcelIgnore] public string Create_by { get; set; } + /// + /// 创建时间 + /// [SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true)] [JsonProperty(propertyName: "CreateTime")] [ExcelColumn(Format = "yyyy-MM-dd HH:mm:ss")] public DateTime Create_time { get; set; } = DateTime.Now; + /// + /// 更新人 + /// [JsonIgnore] [JsonProperty(propertyName: "UpdateBy")] [SugarColumn(IsOnlyIgnoreInsert = true, Length = 64, IsNullable = true)] [ExcelIgnore] public string Update_by { get; set; } + /// + /// 更新时间 + /// //[JsonIgnore] [SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true)] [JsonProperty(propertyName: "UpdateTime")] diff --git a/ZR.Model/System/SysNotice.cs b/ZR.Model/System/SysNotice.cs index de82a33d..ff00e342 100644 --- a/ZR.Model/System/SysNotice.cs +++ b/ZR.Model/System/SysNotice.cs @@ -30,7 +30,7 @@ namespace ZR.Model.System /// /// 公告内容 /// - [SugarColumn(ColumnName = "notice_content", ColumnDataType = "text")] + [SugarColumn(ColumnName = "notice_content", ColumnDataType = StaticConfig.CodeFirst_BigString)] public string NoticeContent { get; set; } /// /// 公告状态 (0正常 1关闭) diff --git a/ZR.Model/System/SysOperLog.cs b/ZR.Model/System/SysOperLog.cs index 3e33e21c..3eed2894 100644 --- a/ZR.Model/System/SysOperLog.cs +++ b/ZR.Model/System/SysOperLog.cs @@ -72,13 +72,13 @@ namespace ZR.Model.System /// /// 请求参数 /// - [SugarColumn(Length = 2000)] + [SugarColumn(Length = 4000)] public string OperParam { get; set; } /// /// 返回参数 /// - [SugarColumn(ColumnDataType = "text")] + [SugarColumn(ColumnDataType = StaticConfig.CodeFirst_BigString)] public string JsonResult { get; set; } /// diff --git a/ZR.Model/System/SysRoleMenu.cs b/ZR.Model/System/SysRoleMenu.cs index 94a6fa6c..9a037a41 100644 --- a/ZR.Model/System/SysRoleMenu.cs +++ b/ZR.Model/System/SysRoleMenu.cs @@ -1,6 +1,5 @@ using Newtonsoft.Json; using SqlSugar; -using System; namespace ZR.Model.System { diff --git a/ZR.Model/ZR.Model.csproj b/ZR.Model/ZR.Model.csproj index 848f750b..7efcd390 100644 --- a/ZR.Model/ZR.Model.csproj +++ b/ZR.Model/ZR.Model.csproj @@ -9,7 +9,7 @@ - + diff --git a/ZR.Repository/ZR.Repository.csproj b/ZR.Repository/ZR.Repository.csproj index b100ff42..22ea936e 100644 --- a/ZR.Repository/ZR.Repository.csproj +++ b/ZR.Repository/ZR.Repository.csproj @@ -15,6 +15,6 @@ - + diff --git a/ZR.Service/System/SeedDataService.cs b/ZR.Service/System/SeedDataService.cs index ddb858a8..62bd9a44 100644 --- a/ZR.Service/System/SeedDataService.cs +++ b/ZR.Service/System/SeedDataService.cs @@ -49,14 +49,12 @@ namespace ZR.Service.System public (string, object, object) InitMenuData(List data) { var db = DbScoped.SugarScope; - db.Ado.BeginTran(); var x = db.Storageable(data) .SplitInsert(it => it.NotAny()) .WhereColumns(it => it.MenuId)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2}) .ToStorage(); var result = x.AsInsertable.OffIdentity().ExecuteCommand();//插入可插入部分; - db.Ado.CommitTran(); - + string msg = $"[菜单数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}"; return (msg, x.ErrorList, x.IgnoreList); } @@ -89,7 +87,7 @@ namespace ZR.Service.System .SplitInsert(it => it.NotAny()) .WhereColumns(it => it.DeptId) .ToStorage(); - var result = x.AsInsertable.ExecuteCommand(); + var result = x.AsInsertable.OffIdentity().ExecuteCommand(); string msg = $"[部门数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}"; return (msg, x.ErrorList, x.IgnoreList); diff --git a/ZR.Service/System/SysMenuService.cs b/ZR.Service/System/SysMenuService.cs index 1a267d5d..cb989f6b 100644 --- a/ZR.Service/System/SysMenuService.cs +++ b/ZR.Service/System/SysMenuService.cs @@ -660,8 +660,10 @@ namespace ZR.Service //Insert(menuList); var x = Storageable(menuList) - .WhereColumns(it => new { it.MenuName, it.ParentId }) - .ToStorage(); + .SplitInsert(it => !it.Any()) + .SplitUpdate(it => !it.Any()) + .WhereColumns(it => new { it.MenuName, it.ParentId }) + .ToStorage(); x.AsInsertable.ExecuteCommand();//插入可插入部分; x.AsUpdateable.ExecuteCommand(); } diff --git a/document/oracle/seq.txt b/document/oracle/seq.txt new file mode 100644 index 00000000..c8d5468f --- /dev/null +++ b/document/oracle/seq.txt @@ -0,0 +1,46 @@ + +--通用序列id +create sequence SEQ_ID +minvalue 1 +maxvalue 99999999 +start with 1 +increment by 1 +nocache +order; + +--角色表序列id +create sequence SEQ_SYS_ROLE_ROLEID +minvalue 10 +maxvalue 99999999 +start with 10 +increment by 1 +nocache +order; + +--菜单表序列id +create sequence SEQ_SYS_MENU_MENUID +minvalue 2000 +maxvalue 99999999 +start with 2000 +increment by 1 +nocache +order; + +--用户表序列id +create sequence SEQ_SYS_USER_USERID +minvalue 100 +maxvalue 99999999 +start with 1 +increment by 100 +nocache +order; + +--部门表序列id +create sequence SEQ_SYS_DEPT_DEPTID +minvalue 200 +maxvalue 99999999 +start with 200 +increment by 1 +nocache +order; +