This commit is contained in:
yubaolee 2021-04-02 14:43:03 +08:00
commit 1aac54eff8
5 changed files with 83 additions and 24 deletions

View File

@ -236,13 +236,13 @@ namespace OpenAuth.App
throw new Exception("未能找到正确的模版信息"); throw new Exception("未能找到正确的模版信息");
//生成应用层 //生成应用层
GenerateApp(sysTableInfo); GenerateApp(sysTableInfo,tableColumns);
//生成应用层的请求参数 //生成应用层的请求参数
GenerateAppReq(sysTableInfo, tableColumns); GenerateAppReq(sysTableInfo, tableColumns);
//生成WebApI接口 //生成WebApI接口
GenerateWebApi(sysTableInfo); GenerateWebApi(sysTableInfo, tableColumns);
} }
/// <summary> /// <summary>
@ -250,7 +250,7 @@ namespace OpenAuth.App
/// </summary> /// </summary>
/// <param name="sysTableInfo"></param> /// <param name="sysTableInfo"></param>
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
private void GenerateApp(BuilderTable sysTableInfo) private void GenerateApp(BuilderTable sysTableInfo, List<BuilderTableColumn> sysColumns)
{ {
string appRootPath = ProjectPath.GetProjectDirectoryInfo() string appRootPath = ProjectPath.GetProjectDirectoryInfo()
.GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".app"))?.FullName; .GetDirectories().FirstOrDefault(x => x.Name.ToLower().EndsWith(".app"))?.FullName;
@ -261,12 +261,35 @@ namespace OpenAuth.App
CheckExistsModule(sysTableInfo.ModuleCode); CheckExistsModule(sysTableInfo.ModuleCode);
string domainContent = FileHelper.ReadFile(@"Template\\BuildApp.html") string domainContent = FileHelper.ReadFile(@"Template\\BuildApp.html");
domainContent = domainContent
.Replace("{TableName}", sysTableInfo.TableName) .Replace("{TableName}", sysTableInfo.TableName)
.Replace("{ModuleCode}", sysTableInfo.ModuleCode) .Replace("{ModuleCode}", sysTableInfo.ModuleCode)
.Replace("{ModuleName}", sysTableInfo.ModuleName) .Replace("{ModuleName}", sysTableInfo.ModuleName)
.Replace("{ClassName}", sysTableInfo.ClassName) .Replace("{ClassName}", sysTableInfo.ClassName)
.Replace("{StartName}", StratName); .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); FileHelper.WriteFile(appRootPath, sysTableInfo.ModuleCode + ".cs", domainContent);
} }
@ -338,7 +361,7 @@ namespace OpenAuth.App
/// </summary> /// </summary>
/// <param name="sysTableInfo"></param> /// <param name="sysTableInfo"></param>
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
private void GenerateWebApi(BuilderTable sysTableInfo) private void GenerateWebApi(BuilderTable sysTableInfo, List<BuilderTableColumn> sysColumns)
{ {
string domainContent; string domainContent;
string apiPath = ProjectPath.GetProjectDirectoryInfo() string apiPath = ProjectPath.GetProjectDirectoryInfo()
@ -357,6 +380,27 @@ namespace OpenAuth.App
.Replace("{ModuleName}", sysTableInfo.ModuleName) .Replace("{ModuleName}", sysTableInfo.ModuleName)
.Replace("{ClassName}", sysTableInfo.ClassName) .Replace("{ClassName}", sysTableInfo.ClassName)
.Replace("{StartName}", StratName); .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); FileHelper.WriteFile(controllerPath, controllerName + ".cs", domainContent);
} }
@ -365,15 +409,15 @@ namespace OpenAuth.App
/// </summary> /// </summary>
/// <param name="tableColumns"></param> /// <param name="tableColumns"></param>
/// <param name="sysTableInfo"></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 template = "BuildEntity.html";
string domainContent = FileHelper.ReadFile("Template\\" + template); string domainContent = FileHelper.ReadFile("Template\\" + template);
StringBuilder attributeBuilder = new StringBuilder(); StringBuilder attributeBuilder = new StringBuilder();
StringBuilder constructionBuilder = new StringBuilder(); //生成构造函数初始化值 StringBuilder constructionBuilder = new StringBuilder(); //生成构造函数初始化值
sysColumn = sysColumn.OrderByDescending(c => c.Sort).ToList(); sysColumns = sysColumns.OrderByDescending(c => c.Sort).ToList();
foreach (BuilderTableColumn column in sysColumn) foreach (BuilderTableColumn column in sysColumns)
{ {
if (column.IsKey) continue; if (column.IsKey) continue;
@ -409,6 +453,27 @@ namespace OpenAuth.App
throw new Exception("未找到生成的目录!"); 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) domainContent = domainContent.Replace("{ClassName}", tableInfo.ClassName)
.Replace("{AttributeList}", attributeBuilder.ToString()) .Replace("{AttributeList}", attributeBuilder.ToString())
.Replace("{Construction}", constructionBuilder.ToString()); .Replace("{Construction}", constructionBuilder.ToString());

View File

@ -120,15 +120,8 @@ namespace OpenAuth.App
/// </summary> /// </summary>
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <returns></returns> /// <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 var sql = $@"SELECT DISTINCT
Column_Name AS ColumnName, Column_Name AS ColumnName,
'{ tableName}' as tableName, '{ tableName}' as tableName,
@ -174,7 +167,7 @@ namespace OpenAuth.App
FROM FROM
information_schema.COLUMNS information_schema.COLUMNS
WHERE WHERE
table_name = '{tableName}' {schemeName}"; table_name = '{tableName}'";
foreach (var context in _contexts) foreach (var context in _contexts)
{ {

View File

@ -12,7 +12,7 @@ using OpenAuth.Repository.Interface;
namespace OpenAuth.App namespace OpenAuth.App
{ {
public class {ModuleCode} : BaseStringApp<{ClassName},OpenAuthDBContext> public class {ModuleCode} : {BaseAppName}<{ClassName},OpenAuthDBContext>
{ {
/// <summary> /// <summary>
@ -37,7 +37,8 @@ namespace OpenAuth.App
var objs = GetDataPrivilege("u"); var objs = GetDataPrivilege("u");
if (!string.IsNullOrEmpty(request.key)) if (!string.IsNullOrEmpty(request.key))
{ {
objs = objs.Where(u => u.Id.Contains(request.key)); //增加筛选条件,如:
//objs = objs.Where(u => u.Name.Contains(request.key));
} }
var propertyStr = string.Join(',', properties.Select(u => u.Key)); var propertyStr = string.Join(',', properties.Select(u => u.Key));

View File

@ -20,7 +20,7 @@ namespace OpenAuth.WebApi.Controllers
//获取详情 //获取详情
[HttpGet] [HttpGet]
public Response<{ClassName}> Get(string id) public Response<{ClassName}> Get({KeyTypeName} id)
{ {
var result = new Response<{ClassName}>(); var result = new Response<{ClassName}>();
try try
@ -87,7 +87,7 @@ namespace OpenAuth.WebApi.Controllers
/// 批量删除 /// 批量删除
/// </summary> /// </summary>
[HttpPost] [HttpPost]
public Response Delete([FromBody]string[] ids) public Response Delete([FromBody]{KeyTypeName}[] ids)
{ {
var result = new Response(); var result = new Response();
try try

View File

@ -13,7 +13,7 @@ using OpenAuth.Repository.Core;
namespace OpenAuth.Repository.Domain namespace OpenAuth.Repository.Domain
{ {
{AttributeManager} {AttributeManager}
public class {ClassName} : StringEntity public class {ClassName} : {BaseEntityName}
{ {
public {ClassName}() public {ClassName}()
{ {