refactor: 😀代码优化
This commit is contained in:
parent
14866bd05c
commit
fbfb5281eb
@ -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();
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user