mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-11-08 18:34:44 +08:00
完善可以根据主键类型调整父类
This commit is contained in:
@@ -236,13 +236,13 @@ namespace OpenAuth.App
|
||||
throw new Exception("未能找到正确的模版信息");
|
||||
|
||||
//生成应用层
|
||||
GenerateApp(sysTableInfo);
|
||||
GenerateApp(sysTableInfo,tableColumns);
|
||||
|
||||
//生成应用层的请求参数
|
||||
GenerateAppReq(sysTableInfo, tableColumns);
|
||||
|
||||
//生成WebApI接口
|
||||
GenerateWebApi(sysTableInfo);
|
||||
GenerateWebApi(sysTableInfo, tableColumns);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -250,7 +250,7 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
/// <param name="sysTableInfo"></param>
|
||||
/// <exception cref="Exception"></exception>
|
||||
private void GenerateApp(BuilderTable sysTableInfo)
|
||||
private void GenerateApp(BuilderTable sysTableInfo, List<BuilderTableColumn> sysColumns)
|
||||
{
|
||||
string appRootPath = ProjectPath.GetProjectDirectoryInfo()
|
||||
.GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".app"))?.FullName;
|
||||
@@ -261,12 +261,35 @@ namespace OpenAuth.App
|
||||
|
||||
CheckExistsModule(sysTableInfo.ModuleCode);
|
||||
|
||||
string domainContent = FileHelper.ReadFile(@"Template\\BuildApp.html")
|
||||
string domainContent = FileHelper.ReadFile(@"Template\\BuildApp.html");
|
||||
domainContent = domainContent
|
||||
.Replace("{TableName}", sysTableInfo.TableName)
|
||||
.Replace("{ModuleCode}", sysTableInfo.ModuleCode)
|
||||
.Replace("{ModuleName}", sysTableInfo.ModuleName)
|
||||
.Replace("{ClassName}", sysTableInfo.ClassName)
|
||||
.Replace("{StartName}", StratName);
|
||||
|
||||
|
||||
var primarykey = sysColumns.FirstOrDefault(u => u.IsKey);
|
||||
if (primarykey == null)
|
||||
{
|
||||
throw new Exception($"未能找到表{sysTableInfo.TableName}的主键字段");
|
||||
}
|
||||
if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numberic") //是否为数字
|
||||
{
|
||||
if(primarykey.IsIncrement) //是否自增
|
||||
{
|
||||
domainContent = domainContent.Replace("{BaseAppName}", "BaseIntAutoGenApp");
|
||||
}
|
||||
else //普通的雪花算法生成id
|
||||
{
|
||||
domainContent = domainContent.Replace("{BaseAppName}", "BaseLongApp");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
domainContent = domainContent.Replace("{BaseAppName}", "BaseStringApp");
|
||||
}
|
||||
FileHelper.WriteFile(appRootPath, sysTableInfo.ModuleCode + ".cs", domainContent);
|
||||
}
|
||||
|
||||
@@ -338,7 +361,7 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
/// <param name="sysTableInfo"></param>
|
||||
/// <exception cref="Exception"></exception>
|
||||
private void GenerateWebApi(BuilderTable sysTableInfo)
|
||||
private void GenerateWebApi(BuilderTable sysTableInfo, List<BuilderTableColumn> sysColumns)
|
||||
{
|
||||
string domainContent;
|
||||
string apiPath = ProjectPath.GetProjectDirectoryInfo()
|
||||
@@ -357,6 +380,27 @@ namespace OpenAuth.App
|
||||
.Replace("{ModuleName}", sysTableInfo.ModuleName)
|
||||
.Replace("{ClassName}", sysTableInfo.ClassName)
|
||||
.Replace("{StartName}", StratName);
|
||||
|
||||
var primarykey = sysColumns.FirstOrDefault(u => u.IsKey);
|
||||
if (primarykey == null)
|
||||
{
|
||||
throw new Exception($"未能找到表{sysTableInfo.TableName}的主键字段");
|
||||
}
|
||||
if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numberic") //是否为数字
|
||||
{
|
||||
if(primarykey.IsIncrement) //是否自增
|
||||
{
|
||||
domainContent = domainContent.Replace("{KeyTypeName}", "int");
|
||||
}
|
||||
else //普通的雪花算法生成id
|
||||
{
|
||||
domainContent = domainContent.Replace("{KeyTypeName}", "long");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
domainContent = domainContent.Replace("{KeyTypeName}", "string");
|
||||
}
|
||||
FileHelper.WriteFile(controllerPath, controllerName + ".cs", domainContent);
|
||||
}
|
||||
|
||||
@@ -365,15 +409,15 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
/// <param name="tableColumns"></param>
|
||||
/// <param name="sysTableInfo"></param>
|
||||
private void CreateEntityModel(List<BuilderTableColumn> sysColumn, BuilderTable tableInfo)
|
||||
private void CreateEntityModel(List<BuilderTableColumn> sysColumns, BuilderTable tableInfo)
|
||||
{
|
||||
string template = "BuildEntity.html";
|
||||
string domainContent = FileHelper.ReadFile("Template\\" + template);
|
||||
|
||||
StringBuilder attributeBuilder = new StringBuilder();
|
||||
StringBuilder constructionBuilder = new StringBuilder(); //生成构造函数初始化值
|
||||
sysColumn = sysColumn.OrderByDescending(c => c.Sort).ToList();
|
||||
foreach (BuilderTableColumn column in sysColumn)
|
||||
sysColumns = sysColumns.OrderByDescending(c => c.Sort).ToList();
|
||||
foreach (BuilderTableColumn column in sysColumns)
|
||||
{
|
||||
if (column.IsKey) continue;
|
||||
|
||||
@@ -409,6 +453,27 @@ namespace OpenAuth.App
|
||||
throw new Exception("未找到生成的目录!");
|
||||
}
|
||||
|
||||
var primarykey = sysColumns.FirstOrDefault(u => u.IsKey);
|
||||
if (primarykey == null)
|
||||
{
|
||||
throw new Exception($"未能找到表{tableInfo.TableName}的主键字段");
|
||||
}
|
||||
if (primarykey.ColumnType == "decimal" || primarykey.ColumnType == "numberic") //是否为数字
|
||||
{
|
||||
if(primarykey.IsIncrement) //是否自增
|
||||
{
|
||||
domainContent = domainContent.Replace("{BaseEntityName}", "IntAutoGenEntity");
|
||||
}
|
||||
else //普通的雪花算法生成id
|
||||
{
|
||||
domainContent = domainContent.Replace("{BaseEntityName}", "LongEntity");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
domainContent = domainContent.Replace("{BaseEntityName}", "StringEntity");
|
||||
}
|
||||
|
||||
domainContent = domainContent.Replace("{ClassName}", tableInfo.ClassName)
|
||||
.Replace("{AttributeList}", attributeBuilder.ToString())
|
||||
.Replace("{Construction}", constructionBuilder.ToString());
|
||||
|
||||
@@ -120,15 +120,8 @@ namespace OpenAuth.App
|
||||
/// </summary>
|
||||
/// <param name="tableName"></param>
|
||||
/// <returns></returns>
|
||||
private IList<SysTableColumn> GetMySqlStructure(string dbandTableName)
|
||||
private IList<SysTableColumn> GetMySqlStructure(string tableName)
|
||||
{
|
||||
if (!dbandTableName.Contains("."))
|
||||
{
|
||||
throw new Exception("代码生成器使用mysql时,表名必需用【schemeName.tableName】形式");
|
||||
}
|
||||
var splits = dbandTableName.Split(".");
|
||||
var tableName = splits[1];
|
||||
var schemeName = splits[0];
|
||||
var sql = $@"SELECT DISTINCT
|
||||
Column_Name AS ColumnName,
|
||||
'{ tableName}' as tableName,
|
||||
@@ -174,7 +167,7 @@ namespace OpenAuth.App
|
||||
FROM
|
||||
information_schema.COLUMNS
|
||||
WHERE
|
||||
table_name = '{tableName}' {schemeName}";
|
||||
table_name = '{tableName}'";
|
||||
|
||||
foreach (var context in _contexts)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user