diff --git a/OpenAuth.App/BuilderTableApp.cs b/OpenAuth.App/BuilderTableApp.cs
index ba39c4da..37984c0a 100644
--- a/OpenAuth.App/BuilderTableApp.cs
+++ b/OpenAuth.App/BuilderTableApp.cs
@@ -236,13 +236,13 @@ namespace OpenAuth.App
throw new Exception("未能找到正确的模版信息");
//生成应用层
- GenerateApp(sysTableInfo);
+ GenerateApp(sysTableInfo,tableColumns);
//生成应用层的请求参数
GenerateAppReq(sysTableInfo, tableColumns);
//生成WebApI接口
- GenerateWebApi(sysTableInfo);
+ GenerateWebApi(sysTableInfo, tableColumns);
}
///
@@ -250,7 +250,7 @@ namespace OpenAuth.App
///
///
///
- private void GenerateApp(BuilderTable sysTableInfo)
+ private void GenerateApp(BuilderTable sysTableInfo, List 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
///
///
///
- private void GenerateWebApi(BuilderTable sysTableInfo)
+ private void GenerateWebApi(BuilderTable sysTableInfo, List 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
///
///
///
- private void CreateEntityModel(List sysColumn, BuilderTable tableInfo)
+ private void CreateEntityModel(List 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());
diff --git a/OpenAuth.App/DbExtension.cs b/OpenAuth.App/DbExtension.cs
index 31efead3..9ad05f5d 100644
--- a/OpenAuth.App/DbExtension.cs
+++ b/OpenAuth.App/DbExtension.cs
@@ -120,15 +120,8 @@ namespace OpenAuth.App
///
///
///
- private IList GetMySqlStructure(string dbandTableName)
+ private IList 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)
{
diff --git a/OpenAuth.WebApi/Template/BuildApp.html b/OpenAuth.WebApi/Template/BuildApp.html
index 7ec785d9..cf9559a7 100644
--- a/OpenAuth.WebApi/Template/BuildApp.html
+++ b/OpenAuth.WebApi/Template/BuildApp.html
@@ -12,7 +12,7 @@ using OpenAuth.Repository.Interface;
namespace OpenAuth.App
{
- public class {ModuleCode} : BaseStringApp<{ClassName},OpenAuthDBContext>
+ public class {ModuleCode} : {BaseAppName}<{ClassName},OpenAuthDBContext>
{
///
@@ -23,21 +23,22 @@ namespace OpenAuth.App
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)
{
- throw new CommonException("登录已过期", Define.INVALID_TOKEN);
+ throw new CommonException("登录已过期", Define.INVALID_TOKEN);
}
var properties = loginContext.GetProperties("{ClassName}");
if (properties == null || properties.Count == 0)
{
- throw new Exception("当前登录用户没有访问该模块字段的权限,请联系管理员配置");
+ throw new Exception("当前登录用户没有访问该模块字段的权限,请联系管理员配置");
}
var result = new TableData();
var objs = GetDataPrivilege("u");
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));
diff --git a/OpenAuth.WebApi/Template/BuildControllerApi.html b/OpenAuth.WebApi/Template/BuildControllerApi.html
index b5f0033c..d711658f 100644
--- a/OpenAuth.WebApi/Template/BuildControllerApi.html
+++ b/OpenAuth.WebApi/Template/BuildControllerApi.html
@@ -20,7 +20,7 @@ namespace OpenAuth.WebApi.Controllers
//获取详情
[HttpGet]
- public Response<{ClassName}> Get(string id)
+ public Response<{ClassName}> Get({KeyTypeName} id)
{
var result = new Response<{ClassName}>();
try
@@ -87,7 +87,7 @@ namespace OpenAuth.WebApi.Controllers
/// 批量删除
///
[HttpPost]
- public Response Delete([FromBody]string[] ids)
+ public Response Delete([FromBody]{KeyTypeName}[] ids)
{
var result = new Response();
try
diff --git a/OpenAuth.WebApi/Template/BuildEntity.html b/OpenAuth.WebApi/Template/BuildEntity.html
index 10a7fb82..97ceebdc 100644
--- a/OpenAuth.WebApi/Template/BuildEntity.html
+++ b/OpenAuth.WebApi/Template/BuildEntity.html
@@ -13,7 +13,7 @@ using OpenAuth.Repository.Core;
namespace OpenAuth.Repository.Domain
{
{AttributeManager}
- public class {ClassName} : StringEntity
+ public class {ClassName} : {BaseEntityName}
{
public {ClassName}()
{