refactor: 😀代码优化
This commit is contained in:
parent
14866bd05c
commit
fbfb5281eb
@ -32,7 +32,7 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
|
|||||||
.Select<CodeGenConfig>()
|
.Select<CodeGenConfig>()
|
||||||
.Mapper(u =>
|
.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 })
|
.OrderBy(u => new { u.OrderNo, u.Id })
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|||||||
@ -183,7 +183,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
|
|
||||||
var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => configId.Equals(u.ConfigId));
|
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);
|
entityInfos = entityInfos.OrderBy(u => u.EntityName.StartsWith("Sys") ? 1 : 0).ThenBy(u => u.EntityName);
|
||||||
|
|
||||||
var tableOutputList = new List<TableOutput>();
|
var tableOutputList = new List<TableOutput>();
|
||||||
@ -279,14 +279,14 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
if (entityType == null)
|
if (entityType == null)
|
||||||
return null;
|
return null;
|
||||||
var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => u.ConfigId.ToString() == input.ConfigId);
|
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('{');
|
int bracketIndex = dbTableName.IndexOf('{');
|
||||||
if (bracketIndex != -1)
|
if (bracketIndex != -1)
|
||||||
{
|
{
|
||||||
dbTableName = dbTableName.Substring(0, bracketIndex);
|
dbTableName = dbTableName.Substring(0, bracketIndex);
|
||||||
var dbTableInfos = _db.AsTenant().GetConnectionScope(input.ConfigId).DbMaintenance.GetTableInfoList(false);
|
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)
|
if (table != null)
|
||||||
dbTableName = table.Name;
|
dbTableName = table.Name;
|
||||||
}
|
}
|
||||||
@ -366,11 +366,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Type[] cosType = types.Where(u =>
|
Type[] cosType = types.Where(u => IsMyAttribute(Attribute.GetCustomAttributes(u, false))).ToArray();
|
||||||
{
|
|
||||||
return IsMyAttribute(Attribute.GetCustomAttributes(u, false));
|
|
||||||
}
|
|
||||||
).ToArray();
|
|
||||||
|
|
||||||
var entityInfos = new List<EntityInfo>();
|
var entityInfos = new List<EntityInfo>();
|
||||||
foreach (var ct in cosType)
|
foreach (var ct in cosType)
|
||||||
@ -382,7 +378,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
var des = ct.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
var des = ct.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||||
var description = des.Length > 0 ? ((DescriptionAttribute)des[0]).Description : "";
|
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()
|
entityInfos.Add(new EntityInfo()
|
||||||
{
|
{
|
||||||
@ -446,8 +442,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
#endregion 构造前端需要验证的数据
|
#endregion 构造前端需要验证的数据
|
||||||
|
|
||||||
var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合
|
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(); // 需要连表查询的字段
|
var joinTableList = tableFieldList.Where(u => u.EffectType is "Upload" or "ForeignKey" or "ApiTreeSelector").ToList(); // 需要连表查询的字段
|
||||||
(string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名
|
//(string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名
|
||||||
|
|
||||||
var data = new CustomViewEngine(_db)
|
var data = new CustomViewEngine(_db)
|
||||||
{
|
{
|
||||||
@ -461,11 +457,11 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
QueryWhetherList = queryWhetherList, // 查询条件
|
QueryWhetherList = queryWhetherList, // 查询条件
|
||||||
TableField = tableFieldList, // 表字段配置信息
|
TableField = tableFieldList, // 表字段配置信息
|
||||||
IsJoinTable = joinTableList.Count > 0, // 是否联表
|
IsJoinTable = joinTableList.Count > 0, // 是否联表
|
||||||
IsUpload = joinTableList.Where(u => u.EffectType == "Upload").Any(), // 是否上传
|
IsUpload = joinTableList.Any(u => u.EffectType == "Upload"), // 是否上传
|
||||||
PrintType = input.PrintType!, // 支持打印类型
|
PrintType = input.PrintType!, // 支持打印类型
|
||||||
PrintName = input.PrintName!, // 打印模板名称
|
PrintName = input.PrintName!, // 打印模板名称
|
||||||
IsApiService = input.IsApiService,
|
IsApiService = input.IsApiService,
|
||||||
RemoteVerify = tableFieldList.Any(t => t.RemoteVerify == true), // 远程验证
|
RemoteVerify = tableFieldList.Any(t => t.RemoteVerify), // 远程验证
|
||||||
TreeName = input.TreeName,
|
TreeName = input.TreeName,
|
||||||
LowerTreeName = string.IsNullOrEmpty(input.TreeName) ? "" : input.TreeName[..1].ToLower() + input.TreeName[1..], // 首字母小写
|
LowerTreeName = string.IsNullOrEmpty(input.TreeName) ? "" : input.TreeName[..1].ToLower() + input.TreeName[1..], // 首字母小写
|
||||||
LeftTab = input.LeftTab,
|
LeftTab = input.LeftTab,
|
||||||
@ -496,7 +492,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
var templatePath = Path.Combine(App.WebHostEnvironment.WebRootPath, "template");
|
var templatePath = Path.Combine(App.WebHostEnvironment.WebRootPath, "template");
|
||||||
for (var i = 0; i < templateList.Count; i++)
|
for (var i = 0; i < templateList.Count; i++)
|
||||||
{
|
{
|
||||||
string tResult = string.Empty; // 模板生成结果
|
string tResult; // 模板生成结果
|
||||||
|
|
||||||
var filename = templateList[i].Name;
|
var filename = templateList[i].Name;
|
||||||
// 更改默认首页模板
|
// 更改默认首页模板
|
||||||
@ -507,7 +503,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
}
|
}
|
||||||
var templateFilePath = Path.Combine(templatePath, filename);
|
var templateFilePath = Path.Combine(templatePath, filename);
|
||||||
if (!File.Exists(templateFilePath)) continue;
|
if (!File.Exists(templateFilePath)) continue;
|
||||||
var tContent = File.ReadAllText(templateFilePath);
|
var tContent = await File.ReadAllTextAsync(templateFilePath);
|
||||||
|
|
||||||
if (templateList[i].Type == CodeGenTypeEnum.SeedData)
|
if (templateList[i].Type == CodeGenTypeEnum.SeedData)
|
||||||
{
|
{
|
||||||
@ -567,7 +563,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
var dirPath = new DirectoryInfo(targetFile).Parent!.FullName;
|
var dirPath = new DirectoryInfo(targetFile).Parent!.FullName;
|
||||||
if (!Directory.Exists(dirPath))
|
if (!Directory.Exists(dirPath))
|
||||||
Directory.CreateDirectory(dirPath);
|
Directory.CreateDirectory(dirPath);
|
||||||
File.WriteAllText(targetFile, tResult, Encoding.UTF8);
|
await File.WriteAllTextAsync(targetFile, tResult, Encoding.UTF8);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 非ZIP压缩返回空
|
// 非ZIP压缩返回空
|
||||||
@ -595,13 +591,10 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
|
|
||||||
foreach (var item in tableFieldList)
|
foreach (var item in tableFieldList)
|
||||||
{
|
{
|
||||||
List<VerifyRuleItem> list = new List<VerifyRuleItem>();
|
List<VerifyRuleItem> list = new();
|
||||||
if (!string.IsNullOrWhiteSpace(item.Rules))
|
if (!string.IsNullOrWhiteSpace(item.Rules))
|
||||||
{
|
{
|
||||||
if (item.Rules != "[]")
|
if (item.Rules != "[]") list = JSON.Deserialize<List<VerifyRuleItem>>(item.Rules);
|
||||||
{
|
|
||||||
list = JSON.Deserialize<List<VerifyRuleItem>>(item.Rules);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -616,8 +609,8 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
#endregion 构造前端需要验证的数据
|
#endregion 构造前端需要验证的数据
|
||||||
|
|
||||||
var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合
|
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(); // 需要连表查询的字段
|
var joinTableList = tableFieldList.Where(u => u.EffectType is "Upload" or "ForeignKey" or "ApiTreeSelector").ToList(); // 需要连表查询的字段
|
||||||
(string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名
|
//(string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名
|
||||||
|
|
||||||
var data = new CustomViewEngine(_db)
|
var data = new CustomViewEngine(_db)
|
||||||
{
|
{
|
||||||
@ -632,11 +625,11 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
QueryWhetherList = queryWhetherList, // 查询条件
|
QueryWhetherList = queryWhetherList, // 查询条件
|
||||||
TableField = tableFieldList, // 表字段配置信息
|
TableField = tableFieldList, // 表字段配置信息
|
||||||
IsJoinTable = joinTableList.Count > 0,//是否联表
|
IsJoinTable = joinTableList.Count > 0,//是否联表
|
||||||
IsUpload = joinTableList.Where(u => u.EffectType == "Upload").Any(), // 是否上传
|
IsUpload = joinTableList.Any(u => u.EffectType == "Upload"), // 是否上传
|
||||||
PrintType = input.PrintType!, // 支持打印类型
|
PrintType = input.PrintType!, // 支持打印类型
|
||||||
PrintName = input.PrintName!, // 打印模板名称
|
PrintName = input.PrintName!, // 打印模板名称
|
||||||
IsApiService = input.IsApiService,
|
IsApiService = input.IsApiService,
|
||||||
RemoteVerify = tableFieldList.Any(t => t.RemoteVerify == true), // 远程验证
|
RemoteVerify = tableFieldList.Any(t => t.RemoteVerify), // 远程验证
|
||||||
TreeName = input.TreeName,
|
TreeName = input.TreeName,
|
||||||
LowerTreeName = string.IsNullOrEmpty(input.TreeName) ? "" : input.TreeName[..1].ToLower() + input.TreeName[1..], // 首字母小写
|
LowerTreeName = string.IsNullOrEmpty(input.TreeName) ? "" : input.TreeName[..1].ToLower() + input.TreeName[1..], // 首字母小写
|
||||||
LeftTab = input.LeftTab,
|
LeftTab = input.LeftTab,
|
||||||
@ -662,7 +655,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
var result = new Dictionary<string, string>();
|
var result = new Dictionary<string, string>();
|
||||||
for (var i = 0; i < templateList.Count; i++)
|
for (var i = 0; i < templateList.Count; i++)
|
||||||
{
|
{
|
||||||
string tResult = string.Empty; // 模板生成结果
|
string tResult; // 模板生成结果
|
||||||
|
|
||||||
var filename = templateList[i].Name;
|
var filename = templateList[i].Name;
|
||||||
// 更改默认首页模板
|
// 更改默认首页模板
|
||||||
@ -673,7 +666,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
}
|
}
|
||||||
var templateFilePath = Path.Combine(templatePath, filename);
|
var templateFilePath = Path.Combine(templatePath, filename);
|
||||||
if (!File.Exists(templateFilePath)) continue;
|
if (!File.Exists(templateFilePath)) continue;
|
||||||
var tContent = File.ReadAllText(templateFilePath);
|
var tContent = await File.ReadAllTextAsync(templateFilePath);
|
||||||
|
|
||||||
if (templateList[i].Type == CodeGenTypeEnum.SeedData)
|
if (templateList[i].Type == CodeGenTypeEnum.SeedData)
|
||||||
{
|
{
|
||||||
@ -748,30 +741,29 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task AddMenu(List<SysMenu> menus, long pid)
|
private async Task AddMenu(List<SysMenu> menus, long pid)
|
||||||
{
|
{
|
||||||
var pPath = string.Empty;
|
|
||||||
// 若 pid=0 为顶级则创建菜单目录
|
// 若 pid=0 为顶级则创建菜单目录
|
||||||
if (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();
|
var menuList0 = await _db.Queryable<SysMenu>().Where(u => u.Title == menuType0.Title && u.Type == menuType0.Type).ToListAsync();
|
||||||
if (menuList0.Count > 0)
|
if (menuList0.Count > 0)
|
||||||
{
|
{
|
||||||
var listIds = menuList0.Select(u => u.Id).ToList();
|
var listIds = menuList0.Select(u => u.Id).ToList();
|
||||||
var childlistIds = new List<long>();
|
var childrenIds = new List<long>();
|
||||||
foreach (var item in listIds)
|
foreach (var item in listIds)
|
||||||
{
|
{
|
||||||
var childlist = await _db.Queryable<SysMenu>().ToChildListAsync(u => u.Pid, item);
|
var children = await _db.Queryable<SysMenu>().ToChildListAsync(u => u.Pid, item);
|
||||||
childlistIds.AddRange(childlist.Select(u => u.Id).ToList());
|
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<SysMenu>().Where(u => listIds.Contains(u.Id)).ExecuteCommandAsync();
|
||||||
await _db.Deleteable<SysRoleMenu>().Where(u => listIds.Contains(u.MenuId)).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();
|
var menuListCurrent = await _db.Queryable<SysMenu>().Where(u => u.Title == menuType.Title && u.Type == menuType.Type).ToListAsync();
|
||||||
if (menuListCurrent.Count > 0)
|
if (menuListCurrent.Count > 0)
|
||||||
{
|
{
|
||||||
@ -805,7 +797,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<List<SysMenu>> GetMenus(string className, string busName, long pid, string menuIcon, string pagePath, List<CodeGenConfig> tableFieldList)
|
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 为顶级则创建菜单目录
|
// 若 pid=0 为顶级则创建菜单目录
|
||||||
SysMenu menuType0 = null;
|
SysMenu menuType0 = null;
|
||||||
long tempPid = pid;
|
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))
|
.Where(u => u.Id == SqlFunc.Subqueryable<SysCodeGenTemplateRelation>().Where(s => s.CodeGenId == input.Id).GroupBy(s => s.TemplateId).Select(s => s.TemplateId))
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
else if (input.GenerateType.Substring(1, 1).Contains('2'))
|
|
||||||
|
if (input.GenerateType.Substring(1, 1).Contains('2'))
|
||||||
{
|
{
|
||||||
return _codeGetTemplateRep.AsQueryable()
|
return _codeGetTemplateRep.AsQueryable()
|
||||||
.Where(u => u.Type == CodeGenTypeEnum.Backend)
|
.Where(u => u.Type == CodeGenTypeEnum.Backend)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user