From fbfb5281eb3b656342db0fc2185f8a462196cce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BD=A0=E4=B8=AA=E6=97=BA=E5=91=80?= Date: Fri, 17 Jan 2025 09:28:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=F0=9F=98=80=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CodeGen/SysCodeGenConfigService.cs | 2 +- .../Service/CodeGen/SysCodeGenService.cs | 65 +++++++++---------- 2 files changed, 30 insertions(+), 37 deletions(-) diff --git a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs index 66f1b429..bb5d8ec0 100644 --- a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs +++ b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs @@ -32,7 +32,7 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient .Select() .Mapper(u => { - u.NetType = (u.EffectType == "EnumSelector" || u.EffectType == "ConstSelector" ? u.DictTypeCode : u.NetType); + u.NetType = (u.EffectType is "EnumSelector" or "ConstSelector" ? u.DictTypeCode : u.NetType); }) .OrderBy(u => new { u.OrderNo, u.Id }) .ToListAsync(); diff --git a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs index bd6f5659..a5700244 100644 --- a/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs +++ b/Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs @@ -183,7 +183,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => configId.Equals(u.ConfigId)); - IEnumerable entityInfos = await GetEntityInfos(false); // 获取所有实体定义 + IEnumerable entityInfos = await GetEntityInfos(); // 获取所有实体定义 entityInfos = entityInfos.OrderBy(u => u.EntityName.StartsWith("Sys") ? 1 : 0).ThenBy(u => u.EntityName); var tableOutputList = new List(); @@ -279,14 +279,14 @@ public class SysCodeGenService : IDynamicApiController, ITransient if (entityType == null) return null; var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => u.ConfigId.ToString() == input.ConfigId); - var dbTableName = config.DbSettings.EnableUnderLine ? UtilMethods.ToUnderLine(entityType.DbTableName) : entityType.DbTableName; + var dbTableName = config!.DbSettings.EnableUnderLine ? UtilMethods.ToUnderLine(entityType.DbTableName) : entityType.DbTableName; int bracketIndex = dbTableName.IndexOf('{'); if (bracketIndex != -1) { dbTableName = dbTableName.Substring(0, bracketIndex); var dbTableInfos = _db.AsTenant().GetConnectionScope(input.ConfigId).DbMaintenance.GetTableInfoList(false); - var table = dbTableInfos.FirstOrDefault(x => x.Name.ToLower().StartsWith(config != null && config.DbSettings.EnableUnderLine ? UtilMethods.ToUnderLine(dbTableName) : dbTableName)); + var table = dbTableInfos.FirstOrDefault(x => x.Name.StartsWith(config.DbSettings.EnableUnderLine ? UtilMethods.ToUnderLine(dbTableName) : dbTableName, StringComparison.CurrentCultureIgnoreCase)); if (table != null) dbTableName = table.Name; } @@ -366,11 +366,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient } return false; } - Type[] cosType = types.Where(u => - { - return IsMyAttribute(Attribute.GetCustomAttributes(u, false)); - } - ).ToArray(); + Type[] cosType = types.Where(u => IsMyAttribute(Attribute.GetCustomAttributes(u, false))).ToArray(); var entityInfos = new List(); foreach (var ct in cosType) @@ -382,7 +378,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient var des = ct.GetCustomAttributes(typeof(DescriptionAttribute), false); var description = des.Length > 0 ? ((DescriptionAttribute)des[0]).Description : ""; - var sugarAttribute = ct.GetCustomAttributes(sugarTableType, true)?.FirstOrDefault(); + var sugarAttribute = ct.GetCustomAttributes(sugarTableType, true).FirstOrDefault(); entityInfos.Add(new EntityInfo() { @@ -446,8 +442,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient #endregion 构造前端需要验证的数据 var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合 - var joinTableList = tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "ForeignKey" || u.EffectType == "ApiTreeSelector").ToList(); // 需要连表查询的字段 - (string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名 + var joinTableList = tableFieldList.Where(u => u.EffectType is "Upload" or "ForeignKey" or "ApiTreeSelector").ToList(); // 需要连表查询的字段 + //(string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名 var data = new CustomViewEngine(_db) { @@ -461,11 +457,11 @@ public class SysCodeGenService : IDynamicApiController, ITransient QueryWhetherList = queryWhetherList, // 查询条件 TableField = tableFieldList, // 表字段配置信息 IsJoinTable = joinTableList.Count > 0, // 是否联表 - IsUpload = joinTableList.Where(u => u.EffectType == "Upload").Any(), // 是否上传 + IsUpload = joinTableList.Any(u => u.EffectType == "Upload"), // 是否上传 PrintType = input.PrintType!, // 支持打印类型 PrintName = input.PrintName!, // 打印模板名称 IsApiService = input.IsApiService, - RemoteVerify = tableFieldList.Any(t => t.RemoteVerify == true), // 远程验证 + RemoteVerify = tableFieldList.Any(t => t.RemoteVerify), // 远程验证 TreeName = input.TreeName, LowerTreeName = string.IsNullOrEmpty(input.TreeName) ? "" : input.TreeName[..1].ToLower() + input.TreeName[1..], // 首字母小写 LeftTab = input.LeftTab, @@ -496,7 +492,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient var templatePath = Path.Combine(App.WebHostEnvironment.WebRootPath, "template"); for (var i = 0; i < templateList.Count; i++) { - string tResult = string.Empty; // 模板生成结果 + string tResult; // 模板生成结果 var filename = templateList[i].Name; // 更改默认首页模板 @@ -507,7 +503,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient } var templateFilePath = Path.Combine(templatePath, filename); if (!File.Exists(templateFilePath)) continue; - var tContent = File.ReadAllText(templateFilePath); + var tContent = await File.ReadAllTextAsync(templateFilePath); if (templateList[i].Type == CodeGenTypeEnum.SeedData) { @@ -567,7 +563,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient var dirPath = new DirectoryInfo(targetFile).Parent!.FullName; if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath); - File.WriteAllText(targetFile, tResult, Encoding.UTF8); + await File.WriteAllTextAsync(targetFile, tResult, Encoding.UTF8); } // 非ZIP压缩返回空 @@ -595,13 +591,10 @@ public class SysCodeGenService : IDynamicApiController, ITransient foreach (var item in tableFieldList) { - List list = new List(); + List list = new(); if (!string.IsNullOrWhiteSpace(item.Rules)) { - if (item.Rules != "[]") - { - list = JSON.Deserialize>(item.Rules); - } + if (item.Rules != "[]") list = JSON.Deserialize>(item.Rules); } else { @@ -616,8 +609,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient #endregion 构造前端需要验证的数据 var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合 - var joinTableList = tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "ForeignKey" || u.EffectType == "ApiTreeSelector").ToList(); // 需要连表查询的字段 - (string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名 + var joinTableList = tableFieldList.Where(u => u.EffectType is "Upload" or "ForeignKey" or "ApiTreeSelector").ToList(); // 需要连表查询的字段 + //(string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名 var data = new CustomViewEngine(_db) { @@ -632,11 +625,11 @@ public class SysCodeGenService : IDynamicApiController, ITransient QueryWhetherList = queryWhetherList, // 查询条件 TableField = tableFieldList, // 表字段配置信息 IsJoinTable = joinTableList.Count > 0,//是否联表 - IsUpload = joinTableList.Where(u => u.EffectType == "Upload").Any(), // 是否上传 + IsUpload = joinTableList.Any(u => u.EffectType == "Upload"), // 是否上传 PrintType = input.PrintType!, // 支持打印类型 PrintName = input.PrintName!, // 打印模板名称 IsApiService = input.IsApiService, - RemoteVerify = tableFieldList.Any(t => t.RemoteVerify == true), // 远程验证 + RemoteVerify = tableFieldList.Any(t => t.RemoteVerify), // 远程验证 TreeName = input.TreeName, LowerTreeName = string.IsNullOrEmpty(input.TreeName) ? "" : input.TreeName[..1].ToLower() + input.TreeName[1..], // 首字母小写 LeftTab = input.LeftTab, @@ -662,7 +655,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient var result = new Dictionary(); for (var i = 0; i < templateList.Count; i++) { - string tResult = string.Empty; // 模板生成结果 + string tResult; // 模板生成结果 var filename = templateList[i].Name; // 更改默认首页模板 @@ -673,7 +666,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient } var templateFilePath = Path.Combine(templatePath, filename); if (!File.Exists(templateFilePath)) continue; - var tContent = File.ReadAllText(templateFilePath); + var tContent = await File.ReadAllTextAsync(templateFilePath); if (templateList[i].Type == CodeGenTypeEnum.SeedData) { @@ -748,30 +741,29 @@ public class SysCodeGenService : IDynamicApiController, ITransient /// private async Task AddMenu(List menus, long pid) { - var pPath = string.Empty; // 若 pid=0 为顶级则创建菜单目录 if (pid == 0) { // 若已存在相同目录则删除本级和下级 - var menuType0 = menus.Where(u => u.Type == MenuTypeEnum.Dir && u.Pid == 0).FirstOrDefault(); + var menuType0 = menus.FirstOrDefault(u => u.Type == MenuTypeEnum.Dir && u.Pid == 0); var menuList0 = await _db.Queryable().Where(u => u.Title == menuType0.Title && u.Type == menuType0.Type).ToListAsync(); if (menuList0.Count > 0) { var listIds = menuList0.Select(u => u.Id).ToList(); - var childlistIds = new List(); + var childrenIds = new List(); foreach (var item in listIds) { - var childlist = await _db.Queryable().ToChildListAsync(u => u.Pid, item); - childlistIds.AddRange(childlist.Select(u => u.Id).ToList()); + var children = await _db.Queryable().ToChildListAsync(u => u.Pid, item); + childrenIds.AddRange(children.Select(u => u.Id).ToList()); } - listIds.AddRange(childlistIds); + listIds.AddRange(childrenIds); await _db.Deleteable().Where(u => listIds.Contains(u.Id)).ExecuteCommandAsync(); await _db.Deleteable().Where(u => listIds.Contains(u.MenuId)).ExecuteCommandAsync(); } } // 若已存在相同菜单则删除本级和下级 - var menuType = menus.Where(u => u.Type == MenuTypeEnum.Menu).FirstOrDefault(); + var menuType = menus.FirstOrDefault(u => u.Type == MenuTypeEnum.Menu); var menuListCurrent = await _db.Queryable().Where(u => u.Title == menuType.Title && u.Type == menuType.Type).ToListAsync(); if (menuListCurrent.Count > 0) { @@ -805,7 +797,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient /// private async Task> GetMenus(string className, string busName, long pid, string menuIcon, string pagePath, List tableFieldList) { - var pPath = string.Empty; + string pPath; // 若 pid=0 为顶级则创建菜单目录 SysMenu menuType0 = null; long tempPid = pid; @@ -995,7 +987,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient .Where(u => u.Id == SqlFunc.Subqueryable().Where(s => s.CodeGenId == input.Id).GroupBy(s => s.TemplateId).Select(s => s.TemplateId)) .ToList(); } - else if (input.GenerateType.Substring(1, 1).Contains('2')) + + if (input.GenerateType.Substring(1, 1).Contains('2')) { return _codeGetTemplateRep.AsQueryable() .Where(u => u.Type == CodeGenTypeEnum.Backend)