refactor: 😀代码优化

This commit is contained in:
喵你个旺呀 2025-01-17 09:28:55 +08:00
parent 14866bd05c
commit fbfb5281eb
2 changed files with 30 additions and 37 deletions

View File

@ -32,7 +32,7 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
.Select<CodeGenConfig>()
.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();

View File

@ -183,7 +183,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => configId.Equals(u.ConfigId));
IEnumerable<EntityInfo> entityInfos = await GetEntityInfos(false); // 获取所有实体定义
IEnumerable<EntityInfo> entityInfos = await GetEntityInfos(); // 获取所有实体定义
entityInfos = entityInfos.OrderBy(u => u.EntityName.StartsWith("Sys") ? 1 : 0).ThenBy(u => u.EntityName);
var tableOutputList = new List<TableOutput>();
@ -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<EntityInfo>();
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<VerifyRuleItem> list = new List<VerifyRuleItem>();
List<VerifyRuleItem> list = new();
if (!string.IsNullOrWhiteSpace(item.Rules))
{
if (item.Rules != "[]")
{
list = JSON.Deserialize<List<VerifyRuleItem>>(item.Rules);
}
if (item.Rules != "[]") list = JSON.Deserialize<List<VerifyRuleItem>>(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<string, string>();
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
/// <returns></returns>
private async Task AddMenu(List<SysMenu> 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<SysMenu>().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<long>();
var childrenIds = new List<long>();
foreach (var item in listIds)
{
var childlist = await _db.Queryable<SysMenu>().ToChildListAsync(u => u.Pid, item);
childlistIds.AddRange(childlist.Select(u => u.Id).ToList());
var children = await _db.Queryable<SysMenu>().ToChildListAsync(u => u.Pid, item);
childrenIds.AddRange(children.Select(u => u.Id).ToList());
}
listIds.AddRange(childlistIds);
listIds.AddRange(childrenIds);
await _db.Deleteable<SysMenu>().Where(u => listIds.Contains(u.Id)).ExecuteCommandAsync();
await _db.Deleteable<SysRoleMenu>().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<SysMenu>().Where(u => u.Title == menuType.Title && u.Type == menuType.Type).ToListAsync();
if (menuListCurrent.Count > 0)
{
@ -805,7 +797,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
/// <returns></returns>
private async Task<List<SysMenu>> GetMenus(string className, string busName, long pid, string menuIcon, string pagePath, List<CodeGenConfig> 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<SysCodeGenTemplateRelation>().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)