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}() {