From c9ef3ad85c4291e4c2dab7ad33e2cc8ad61eb9c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 30 Nov 2021 21:33:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E6=9B=BF=E6=8D=A2=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=BC=95=E6=93=8E=E4=B8=BAJnt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/CodeGeneratorController.cs | 13 +- .../Properties/launchSettings.json | 2 +- ZR.Admin.WebApi/Startup.cs | 7 - ZR.Admin.WebApi/ZR.Admin.WebApi.csproj | 62 +--- .../CodeGenTemplate/IServiceTemplate.txt | 12 +- .../wwwroot/CodeGenTemplate/MySqlTemplate.txt | 12 +- .../CodeGenTemplate/ServiceTemplate.txt | 22 +- .../wwwroot/CodeGenTemplate/SqlTemplate.txt | 14 +- .../wwwroot/CodeGenTemplate/TplDto.txt | 34 ++ .../wwwroot/CodeGenTemplate/TplModel.txt | 27 ++ .../wwwroot/CodeGenTemplate/TplRepository.txt | 20 ++ .../wwwroot/CodeGenTemplate/VueJsTemplate.txt | 38 +-- ZR.CodeGenerator/CodeGenerateTemplate.cs | 41 --- ZR.CodeGenerator/CodeGeneratorTool.cs | 298 +++++++----------- ZR.CodeGenerator/GenConstants.cs | 4 - ZR.CodeGenerator/Model/GenerateDto.cs | 16 +- ZR.CodeGenerator/Model/ReplaceDto.cs | 27 +- ZR.CodeGenerator/ZR.CodeGenerator.csproj | 7 - ZR.Model/System/Generate/GenTableColumn.cs | 33 +- ZR.Vue/src/views/tool/gen/index.vue | 39 +-- 20 files changed, 310 insertions(+), 418 deletions(-) create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt diff --git a/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs index c014eaa..40dda60 100644 --- a/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs @@ -36,8 +36,8 @@ namespace ZR.Admin.WebApi.Controllers private readonly ISysDictDataService SysDictDataService; private IWebHostEnvironment WebHostEnvironment; public CodeGeneratorController( - IGenTableService genTableService, - IGenTableColumnService genTableColumnService, + IGenTableService genTableService, + IGenTableColumnService genTableColumnService, ISysDictDataService dictDataService, IWebHostEnvironment webHostEnvironment) { @@ -148,11 +148,11 @@ namespace ZR.Admin.WebApi.Controllers BaseNameSpace = "ZR.",//导入默认命名空间前缀 ModuleName = "business",//导入默认模块名 ClassName = CodeGeneratorTool.GetClassName(tableName), - BusinessName = CodeGeneratorTool.GetClassName(tableName), + BusinessName = CodeGeneratorTool.GetBusinessName(tableName), FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author), - FunctionName = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description, TableName = tableName, TableComment = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description, + FunctionName = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description, Create_by = userName, }; genTable.TableId = GenTableService.ImportGenTable(genTable); @@ -223,9 +223,8 @@ namespace ZR.Admin.WebApi.Controllers dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode"); dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd")); dto.IsPreview = 1; - dto.GenCodeFiles = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; //生成代码 - CodeGeneratorTool.Generate(genTableInfo, dto); + CodeGeneratorTool.Generate(dto); return SUCCESS(dto.GenCodes); } @@ -252,7 +251,7 @@ namespace ZR.Admin.WebApi.Controllers dto.GenTable = genTableInfo; //生成代码 - CodeGeneratorTool.Generate(genTableInfo, dto); + CodeGeneratorTool.Generate(dto); //下载文件 FileHelper.ZipGenCode(dto); diff --git a/ZR.Admin.WebApi/Properties/launchSettings.json b/ZR.Admin.WebApi/Properties/launchSettings.json index 7f6746e..8fd0a5e 100644 --- a/ZR.Admin.WebApi/Properties/launchSettings.json +++ b/ZR.Admin.WebApi/Properties/launchSettings.json @@ -4,7 +4,7 @@ "commandName": "Project", "launchBrowser": false, "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "" + "ASPNETCORE_ENVIRONMENT": "Production" }, "applicationUrl": "http://localhost:8888" } diff --git a/ZR.Admin.WebApi/Startup.cs b/ZR.Admin.WebApi/Startup.cs index 1d568c1..c95ff8f 100644 --- a/ZR.Admin.WebApi/Startup.cs +++ b/ZR.Admin.WebApi/Startup.cs @@ -86,13 +86,6 @@ namespace ZR.Admin.WebApi } }); - //jntģȫֱ - Engine.Configure((options) => - { - options.Data.Set("author", Configuration["gen:author"]); - options.Data.Set("time", DateTime.Now.ToString("yyyy-MM-dd")); - //... - }); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj index a5b7c72..72b53d5 100644 --- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj +++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj @@ -15,27 +15,28 @@ - - + + + - - - - - - - - - - + + + + + + + + + + @@ -60,33 +61,6 @@ Always - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - @@ -95,16 +69,6 @@ - - - - Always - - - Always - - - diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt index b64fd98..c06303e 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt @@ -1,15 +1,15 @@ using System; -using {ModelsNamespace}.Models; +using ${options.ModelsNamespace}.Models; -namespace {IServicsNamespace}.Business +namespace ${options.IServicsNamespace}.Business { /// - /// {FunctionName}service接口 + /// ${genTable.FunctionName}service接口 /// - /// @author {Author} - /// @date {DateTime} + /// @author ${replaceDto.Author} + /// @date ${replaceDto.AddTime} /// - public interface I{ModelTypeName}Service: IBaseService<{ModelTypeName}> + public interface I${replaceDto.ModelTypeName}Service: IBaseService<${replaceDto.ModelTypeName}> { } } diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt index 917216d..bca3905 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt @@ -1,25 +1,25 @@ -- 菜单 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, remark) -VALUES ('{FunctionName}', {ParentId}, 1, '{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', 'icon1', '', sysdate(), '{FunctionName}菜单'); +VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.permission}:list', 'icon1', '', sysdate(), '${genTable.functionName}菜单'); -- 按钮父菜单id SELECT @menuId := LAST_INSERT_ID(); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('{FunctionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:query', '', sysdate()); +VALUES ('${genTable.functionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:query', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('{FunctionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:add', '', sysdate()); +VALUES ('${genTable.functionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:add', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('{FunctionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:delete', '', sysdate()); +VALUES ('${genTable.functionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:delete', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('{FunctionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:update', '', sysdate()); +VALUES ('${genTable.functionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:update', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('{FunctionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:export', '', sysdate()); +VALUES ('${genTable.functionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:export', '', sysdate()); SELECT * FROM sys_menu WHERE parentId = @menuId; SELECT * FROM sys_menu WHERE menuId = @menuId; \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt index e23b5f4..0b32e69 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt @@ -1,23 +1,23 @@ using Infrastructure; using Infrastructure.Attribute; -using {ModelsNamespace}.Models; -using {IRepositoriesNamespace}; +using ${options.ModelsNamespace}.Models; +using ${options.IRepositoriesNamespace}; -namespace {ServicesNamespace}.Business +namespace ${options.ServicesNamespace}.Business { /// - /// {FunctionName}Service业务层处理 + /// ${genTable.FunctionName}Service业务层处理 /// - /// @author {Author} - /// @date {DateTime} + /// @author ${replaceDto.Author} + /// @date ${replaceDto.AddTime} /// - [AppService(ServiceType = typeof(I{ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)] - public class {ModelTypeName}Service : BaseService<{ModelTypeName}>, I{ModelTypeName}Service + [AppService(ServiceType = typeof(I${replaceDto.ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)] + public class ${replaceDto.ModelTypeName}Service : BaseService<${replaceDto.ModelTypeName}>, I${replaceDto.ModelTypeName}Service { - private readonly {ModelTypeName}Repository _{ModelTypeName}repository; - public {ModelTypeName}Service({ModelTypeName}Repository repository) : base(repository) + private readonly ${replaceDto.ModelTypeName}Repository _${replaceDto.ModelTypeName}repository; + public ${replaceDto.ModelTypeName}Service(${replaceDto.ModelTypeName}Repository repository) : base(repository) { - _{ModelTypeName}repository = repository; + _${replaceDto.ModelTypeName}repository = repository; } #region 业务逻辑代码 diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt index b4fd2f2..39a8a5f 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt @@ -1,25 +1,25 @@ --- {FunctionName}菜单 +-- ${genTable.functionName}菜单 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time, remark) -VALUES ('{FunctionName}', {ParentId}, 1, '{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', 'icon1', GETDATE(), '{FunctionName}'); +VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.permission}:list', 'icon1', GETDATE(), '${genTable.functionName}'); -- 按钮父菜单id declare @menuId int = @@identity INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('{FunctionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:query', '', '', GETDATE()); +VALUES ('${genTable.functionName}查询', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:query', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('{FunctionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:add', '', '', GETDATE()); +VALUES ('${genTable.functionName}新增', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:add', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('{FunctionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:delete', '', '', GETDATE()); +VALUES ('${genTable.functionName}删除', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:delete', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('{FunctionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:update', '', '', GETDATE()); +VALUES ('${genTable.functionName}修改', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:update', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('{FunctionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:export', '', '', GETDATE()); +VALUES ('${genTable.functionName}导出', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:export', '', '', GETDATE()); SELECT * FROM sys_menu WHERE parentId = @menuId; SELECT * FROM sys_menu WHERE menuId = @menuId; \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt new file mode 100644 index 0000000..52b05d7 --- /dev/null +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using ${options.ModelsNamespace}.Dto; +using ${options.ModelsNamespace}.Models; + +namespace ${options.DtosNamespace}.Dto +{ + /// + /// ${genTable.FunctionName}输入对象 + /// + public class ${replaceDto.ModelTypeName}Dto + { +$foreach(item in genTable.Columns) +$if((item.IsInsert || item.IsEdit || item.IsPk || item.IsIncrement)) + public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; } +$end +${end} + } + + /// + /// ${genTable.FunctionName}查询对象 + /// + public class ${replaceDto.ModelTypeName}QueryDto : PagerInfo + { +$foreach(item in genTable.Columns) +$if(item.IsQuery) + public $item.CsharpType $item.CsharpField { get; set; } +$end +${end} + + public DateTime? BeginTime { get; set; } + public DateTime? EndTime { get; set; } + } +} diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt new file mode 100644 index 0000000..e43773c --- /dev/null +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using SqlSugar; + +namespace ${options.ModelsNamespace}.Models +{ + /// + /// ${genTable.FunctionName},数据实体对象 + /// + /// @author ${replaceDto.Author} + /// @date ${replaceDto.AddTime} + /// + [SugarTable("${replaceDto.TableName}")] + public class ${replaceDto.ModelTypeName} + { +$foreach(item in genTable.Columns) + /// + /// 描述 : ${item.ColumnComment} + /// 空值 :$if(item.IsRequired == "True") false $else true $end + /// +$if(item.IsPk || item.IsIncrement) + [SqlSugar.SugarColumn(IsPrimaryKey = ${item.IsPk.ToString().ToLower()}, IsIdentity = ${item.IsIncrement.ToString().ToLower()})] +$end + public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; } +${end} + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt new file mode 100644 index 0000000..cd43d77 --- /dev/null +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplRepository.txt @@ -0,0 +1,20 @@ +using System; +using Infrastructure.Attribute; +using ${options.RepositoriesNamespace}.System; +using ${options.ModelsNamespace}.Models; + +namespace ${options.RepositoriesNamespace} +{ + /// + /// ${genTable.FunctionName}仓储 + /// + /// @author ${replaceDto.Author} + /// @date ${replaceDto.AddTime} + /// + [AppService(ServiceLifetime = LifeTime.Transient)] + public class ${replaceDto.ModelTypeName}Repository : BaseRepository<${replaceDto.ModelTypeName}> + { + #region 业务逻辑代码 + #endregion + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt index 2da4f05..fbbe669 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt @@ -1,66 +1,66 @@ import request from '@/utils/request' /** -* {FunctionName}分页查询 +* ${genTable.functionName}分页查询 * @param {查询条件} data */ -export function list{ModelTypeName}(query) { +export function list${replaceDto.ModelTypeName}(query) { return request({ - url: '{ModuleName}/{ModelTypeName}/list', + url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/list', method: 'get', params: query, }) } /** -* 新增{FunctionName} +* 新增${genTable.functionName} * @param data */ -export function add{ModelTypeName}(data) { +export function add${replaceDto.ModelTypeName}(data) { return request({ - url: '{ModuleName}/{ModelTypeName}', + url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}', method: 'post', data: data, }) } /** -* 修改{FunctionName} +* 修改${genTable.functionName} * @param data */ -export function update{ModelTypeName}(data) { +export function update${replaceDto.ModelTypeName}(data) { return request({ - url: '{ModuleName}/{ModelTypeName}', + url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}', method: 'PUT', data: data, }) } /** -* 获取{FunctionName}详情 -* @param {Id} {FunctionName}Id +* 获取${genTable.functionName}详情 +* @param {Id} */ -export function get{ModelTypeName}(id) { +export function get${replaceDto.ModelTypeName}(id) { return request({ - url: '{ModuleName}/{ModelTypeName}/' + id, + url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + id, method: 'get' }) } /** -* 删除 +* 删除${genTable.functionName} * @param {主键} pid */ -export function del{ModelTypeName}(pid) { +export function del${replaceDto.ModelTypeName}(pid) { return request({ - url: '{ModuleName}/{ModelTypeName}/' + pid, + url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + pid, method: 'delete' }) } -// 导出 -export function export{ModelTypeName}(query) { +// 导出${genTable.functionName} +export function export${replaceDto.ModelTypeName}(query) { return request({ - url: '{ModuleName}/{ModelTypeName}/export', + url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/export', method: 'get', params: query }) diff --git a/ZR.CodeGenerator/CodeGenerateTemplate.cs b/ZR.CodeGenerator/CodeGenerateTemplate.cs index 1f97147..b05facc 100644 --- a/ZR.CodeGenerator/CodeGenerateTemplate.cs +++ b/ZR.CodeGenerator/CodeGenerateTemplate.cs @@ -11,44 +11,6 @@ namespace ZR.CodeGenerator /// public class CodeGenerateTemplate { - /// - /// 表Model属性 - /// - /// - /// - public static string GetModelTemplate(GenTableColumn tbColumn) - { - StringBuilder sbModel = new StringBuilder(); - sbModel.AppendLine(" /// "); - sbModel.AppendLine($" /// 描述 :{tbColumn.ColumnComment}"); - sbModel.AppendLine($" /// 空值 :{!tbColumn.IsRequired}"); - sbModel.AppendLine(" /// "); - if (tbColumn.IsPk || tbColumn.IsIncrement) - { - sbModel.AppendLine($" [SqlSugar.SugarColumn(IsPrimaryKey = {tbColumn.IsPk.ToString().ToLower()}, IsIdentity = {tbColumn.IsIncrement.ToString().ToLower()})]"); - } - sbModel.AppendLine($" public {tbColumn.CsharpType}{(CodeGeneratorTool.GetModelRequired(tbColumn))} {tbColumn.CsharpField} {{ get; set; }}"); - return sbModel.ToString(); - } - /// - /// 增改Dto - /// - /// - /// - public static string GetDtoProperty(GenTableColumn tbColumn) - { - string InputDtoContent = ""; - if (GenConstants.inputDtoNoField.Any(f => f.ToLower().Contains(tbColumn.CsharpField.ToLower()))) - { - return InputDtoContent; - } - else if (tbColumn.IsInsert || tbColumn.IsEdit || tbColumn.IsPk || tbColumn.IsIncrement) - { - InputDtoContent += $" public {tbColumn.CsharpType}{CodeGeneratorTool.GetModelRequired(tbColumn)} {tbColumn.CsharpField} {{ get; set; }}\r\n"; - } - - return InputDtoContent; - } /// /// 查询Dto属性 /// @@ -57,10 +19,8 @@ namespace ZR.CodeGenerator /// public static void GetQueryDtoProperty(GenTableColumn tbColumn, ReplaceDto replaceDto) { - string QueryDtoContent = ""; if (tbColumn.IsQuery) { - QueryDtoContent += $" public {tbColumn.CsharpType} {tbColumn.CsharpField} {{ get; set; }}\r\n"; //字符串类型表达式 if (tbColumn.CsharpType == GenConstants.TYPE_STRING) { @@ -78,7 +38,6 @@ namespace ZR.CodeGenerator replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.EndTime != null, it => it.{tbColumn.CsharpField} <= parm.EndTime);\n"; } } - replaceDto.QueryProperty += QueryDtoContent; } #region vue 模板 diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 2275666..06bf51d 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -25,11 +25,10 @@ namespace ZR.CodeGenerator /// /// 代码生成器入口方法 /// - /// /// - public static void Generate(GenTable dbTableInfo, GenerateDto dto) + public static void Generate(GenerateDto dto) { - _option.BaseNamespace = dbTableInfo.BaseNameSpace; + _option.BaseNamespace = dto.GenTable.BaseNameSpace; _option.DtosNamespace = _option.BaseNamespace + "Model"; _option.ModelsNamespace = _option.BaseNamespace + "Model"; _option.RepositoriesNamespace = _option.BaseNamespace + "Repository"; @@ -38,31 +37,30 @@ namespace ZR.CodeGenerator _option.ServicesNamespace = _option.BaseNamespace + "Service"; _option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi"; - GenerateSingle(dbTableInfo?.Columns, dbTableInfo, dto); + dto.GenOptions = _option; + GenerateSingle(dto); } /// /// 单表生成代码 /// - /// 表字段集合 - /// 表信息 /// - public static void GenerateSingle(List listField, GenTable tableInfo, GenerateDto dto) + public static void GenerateSingle(GenerateDto dto) { string PKName = "id"; string PKType = "int"; ReplaceDto replaceDto = new(); - replaceDto.ModelTypeName = tableInfo.ClassName;//表名对应C# 实体类名 - replaceDto.TableName = tableInfo.TableName;//表名 - replaceDto.Permission = $"{tableInfo.ModuleName}:{tableInfo.ClassName.ToLower()}";//权限 + replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名 + replaceDto.TableName = dto.GenTable.TableName;//表名 + replaceDto.Permission = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限 + replaceDto.Author = dto.GenTable.FunctionAuthor; replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName); - replaceDto.Author = tableInfo.FunctionAuthor; StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); //循环表字段信息 - foreach (GenTableColumn dbFieldInfo in listField) + foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns) { string columnName = dbFieldInfo.ColumnName; @@ -94,20 +92,14 @@ namespace ZR.CodeGenerator sb2.AppendLine($" this.{FirstLowerCase(dbFieldInfo.CsharpField)}Options = response.data;"); sb2.AppendLine(" })"); } - //引用组件 已弃用、改用前端全局注册 - //if (dbFieldInfo.HtmlType == GenConstants.HTML_EDITOR) - //{ - // replaceDto.VueComponent += "Editor,"; - // replaceDto.VueComponentImport += "import Editor from '@/components/Editor';\n"; - //} CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto); - replaceDto.ModelProperty += CodeGenerateTemplate.GetModelTemplate(dbFieldInfo); + //replaceDto.ModelProperty += CodeGenerateTemplate.GetModelTemplate(dbFieldInfo); replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo); CodeGenerateTemplate.TplVueJsMethod(dbFieldInfo, replaceDto); replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo); replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo); - replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo); + //replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo); replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo); } replaceDto.VueDataContent = sb1.ToString(); @@ -117,44 +109,20 @@ namespace ZR.CodeGenerator replaceDto.PKName = PKName; replaceDto.PKType = PKType; + InitJntTemplate(dto, replaceDto); + + GenerateModels(replaceDto, dto); + GenerateInputDto(replaceDto, dto); + GenerateRepository(replaceDto, dto); + GenerateIService(replaceDto, dto); + GenerateService(replaceDto, dto); + GenerateControllers(replaceDto, dto); + GenerateVueViews(replaceDto, dto); + GenerateVueJs(replaceDto, dto); + GenerateSql(replaceDto, dto); + + if (dto.IsPreview == 1) return; - if (dto.GenCodeFiles.Contains(1)) - { - GenerateModels(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(2)) - { - GenerateInputDto(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(3)) - { - GenerateRepository(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(4)) - { - GenerateIService(replaceDto, dto); - GenerateService(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(5)) - { - GenerateControllers(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(6)) - { - GenerateVueViews(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(7)) - { - GenerateVueJs(replaceDto, dto); - } - if (dto.GenCodeFiles.Contains(8)) - { - GenerateSql(replaceDto, dto); - } - if (dto.IsPreview == 1) - { - return; - } foreach (var item in dto.GenCodes) { FileHelper.WriteAndSave(item.Path, item.Content); @@ -173,20 +141,10 @@ namespace ZR.CodeGenerator // ../ZR.Model/Models/User.cs var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", replaceDto.ModelTypeName + ".cs"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; + var tpl = FileHelper.ReadJtTemplate("TplModel.txt"); + var result = tpl.Render(); - var content = FileHelper.ReadTemplate("ModelTemplate.txt") - .Replace("{ModelsNamespace}", _option.ModelsNamespace) - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - .Replace("{KeyTypeName}", replaceDto.PKName) - .Replace("{PropertyName}", replaceDto.ModelProperty) - .Replace("{TableName}", replaceDto.TableName) - .Replace("{Author}", replaceDto.Author) - .Replace("{DateTime}", replaceDto.AddTime); - - generateDto.GenCodes.Add(new GenCode(1, "实体类", fullPath, content)); + generateDto.GenCodes.Add(new GenCode(1, "实体类", fullPath, result)); } /// @@ -198,18 +156,7 @@ namespace ZR.CodeGenerator { var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", $"{replaceDto.ModelTypeName}Dto.cs"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; - - var tpl = FileHelper.ReadJtTemplate("InputDtoTemplate.txt"); - tpl.Set("DtosNamespace", _option.DtosNamespace); - tpl.Set("ModelsNamespace", _option.ModelsNamespace); - tpl.Set("FunctionName", generateDto.GenTable.FunctionName); - tpl.Set("PropertyName", replaceDto.InputDtoProperty); - tpl.Set("QueryProperty", replaceDto.QueryProperty); - tpl.Set("ModelTypeName", replaceDto.ModelTypeName); - tpl.Set("Author", replaceDto.Author); - tpl.Set("DateTime", replaceDto.AddTime); + var tpl = FileHelper.ReadJtTemplate("TplDto.txt"); var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(2, "数据传输实体类", fullPath, result)); @@ -226,20 +173,11 @@ namespace ZR.CodeGenerator private static void GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, "Repositories", $"{replaceDto.ModelTypeName}Repository.cs"); + + var tpl = FileHelper.ReadJtTemplate("TplRepository.txt"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; - - var content = FileHelper.ReadTemplate("RepositoryTemplate.txt") - .Replace("{ModelsNamespace}", _option.ModelsNamespace) - .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace) - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - .Replace("{TableName}", replaceDto.TableName) - .Replace("{Author}", replaceDto.Author) - .Replace("{DateTime}", replaceDto.AddTime); - - generateDto.GenCodes.Add(new GenCode(3, "仓储层", fullPath, content)); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(3, "仓储层", fullPath, result)); } #endregion @@ -254,19 +192,10 @@ namespace ZR.CodeGenerator { var fullPath = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, "Business", "IBusService", $"I{replaceDto.ModelTypeName}Service.cs"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; - var content = FileHelper.ReadTemplate("IServiceTemplate.txt") - .Replace("{ModelsNamespace}", _option.ModelsNamespace) - .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - .Replace("{DtosNamespace}", _option.DtosNamespace) - .Replace("{IServicsNamespace}", _option.IServicsNamespace) - .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace) - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{Author}", replaceDto.Author) - .Replace("{DateTime}", replaceDto.AddTime); + var tpl = FileHelper.ReadJtTemplate("IServiceTemplate.txt"); - generateDto.GenCodes.Add(new GenCode(4, "接口层", fullPath, content)); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(4, "接口层", fullPath, result)); } /// @@ -276,21 +205,10 @@ namespace ZR.CodeGenerator { var fullPath = Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, "Business", $"{replaceDto.ModelTypeName}Service.cs"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; + var tpl = FileHelper.ReadJtTemplate("ServiceTemplate.txt"); - var content = FileHelper.ReadTemplate("ServiceTemplate.txt") - .Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace) - .Replace("{DtosNamespace}", _option.DtosNamespace) - .Replace("{IServicsNamespace}", _option.IServicsNamespace) - .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - .Replace("{ModelsNamespace}", _option.ModelsNamespace) - .Replace("{ServicesNamespace}", _option.ServicesNamespace) - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{Author}", replaceDto.Author) - .Replace("{DateTime}", replaceDto.AddTime); - - generateDto.GenCodes.Add(new GenCode(4, "服务层", fullPath, content)); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(4, "服务层", fullPath, result)); } #endregion @@ -302,8 +220,6 @@ namespace ZR.CodeGenerator private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; var content = FileHelper.ReadTemplate("ControllersTemplate.txt") .Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace) @@ -341,9 +257,6 @@ namespace ZR.CodeGenerator { var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, replaceDto.ViewsFileName, "index.vue"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; - var content = FileHelper.ReadTemplate("VueTemplate.txt") .Replace("{fileClassName}", replaceDto.ViewsFileName) .Replace("{VueViewListContent}", replaceDto.VueViewListHtml)//查询 table列 @@ -361,27 +274,6 @@ namespace ZR.CodeGenerator .Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则 generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, content)); - - //var tpl = FileHelper.ReadJtTemplate("VueTemplate.txt"); - - //tpl.Set("fileClassName", replaceDto.ViewsFileName); - //tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列 - //tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单 - //tpl.Set("ModelTypeName", replaceDto.ModelTypeName); - //tpl.Set("Permission", replaceDto.Permission); - //tpl.Set("VueViewFormResetHtml", replaceDto.VueViewFormResetHtml); - ////tpl.Set("vueJsMethod}", replaceDto.VueJsMethod); - ////tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml); - ////tpl.Set("VueDataContent", replaceDto.VueDataContent); - ////tpl.Set("PrimaryKey", FirstLowerCase(replaceDto.PKName)); - ////tpl.Set("MountedMethod", replaceDto.MountedMethod); - ////tpl.Set("VueComponent", replaceDto.VueComponent.TrimEnd(',')); - ////tpl.Set("VueComponentImport", replaceDto.VueComponentImport); - ////tpl.Set("VueViewEditFormRuleContent", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则 - //tpl.Set("uploadImage", generateDto.GenTable.Columns.Any(x => x.HtmlType == GenConstants.HTML_IMAGE_UPLOAD)); - - //var result = tpl.Render(); - //generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result)); } /// /// 7、生成vue页面api @@ -393,15 +285,10 @@ namespace ZR.CodeGenerator { string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", replaceDto.ViewsFileName + ".js"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; + var tpl = FileHelper.ReadJtTemplate("VueJsTemplate.txt"); - var content = FileHelper.ReadTemplate("VueJsTemplate.txt") - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - .Replace("{ModuleName}", generateDto.GenTable.ModuleName); - - generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, content)); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result)); } #endregion @@ -412,8 +299,6 @@ namespace ZR.CodeGenerator { string fullPath = Path.Combine(generateDto.GenCodePath, replaceDto.ViewsFileName + ".sql"); - if (File.Exists(fullPath) && !generateDto.Coverd) - return; var tempName = ""; switch (generateDto.DbType) { @@ -426,15 +311,10 @@ namespace ZR.CodeGenerator default: break; } - var content = FileHelper.ReadTemplate($"{tempName}.txt") - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{Permission}", replaceDto.Permission) - .Replace("{ModuleName}", generateDto.GenTable.ModuleName) - .Replace("{ViewsFileName}", replaceDto.ViewsFileName) - .Replace("{ParentId}", generateDto.GenTable.ParentMenuId ?? "0") - .Replace("{FunctionName}", generateDto.GenTable.FunctionName); + var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt"); - generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, content)); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result)); } #endregion @@ -466,6 +346,19 @@ namespace ZR.CodeGenerator return tableName.Substring(0, 1).ToUpper() + tableName[1..].Replace("_", ""); } + /// + /// 获取业务名 + /// + /// tableName 表名 + /// 业务名 + public static string GetBusinessName(string tableName) + { + int lastIndex = tableName.LastIndexOf("_"); + int nameLength = tableName.Length; + string businessName = tableName.Substring(lastIndex + 1, nameLength); + return businessName; + } + /// /// 首字母转小写,输出前端 /// @@ -486,16 +379,44 @@ namespace ZR.CodeGenerator { return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription; } + ///// + ///// 判断是否给属性添加? + ///// + ///// + ///// + //public static string GetModelRequired(GenTableColumn dbFieldInfo) + //{ + // return (!dbFieldInfo.IsRequired && (IsNumber(dbFieldInfo.ColumnType) || dbFieldInfo.CsharpType == "DateTime")) ? "?" : ""; + //} + /// - /// 判断是否给属性添加? + /// 获取C# 类型 /// - /// + /// /// - public static string GetModelRequired(GenTableColumn dbFieldInfo) + public static string GetCSharpDatatype(string sDatatype) { - return (!dbFieldInfo.IsRequired && (IsNumber(dbFieldInfo.ColumnType) || dbFieldInfo.CsharpType == "DateTime")) ? "?" : ""; + sDatatype = sDatatype.ToLower(); + string sTempDatatype = sDatatype switch + { + "int" or "number" or "integer" or "smallint" => "int", + "bigint" => "long", + "tinyint" => "byte", + "numeric" or "real" or "float" => "float", + "decimal" or "numer(8,2)" => "decimal", + "bit" => "bool", + "date" or "datetime" or "datetime2" or "smalldatetime" => "DateTime", + "money" or "smallmoney" => "double", + _ => "string", + }; + return sTempDatatype; } + public static bool IsNumber(string tableDataType) + { + string[] arr = new string[] { "int", "long" }; + return arr.Any(f => f.Contains(GetCSharpDatatype(tableDataType))); + } #endregion /// @@ -567,32 +488,27 @@ namespace ZR.CodeGenerator } /// - /// 获取C# 类型 + /// 初始化Jnt模板 /// - /// - /// - public static string GetCSharpDatatype(string sDatatype) + /// + /// + private static void InitJntTemplate(GenerateDto dto, ReplaceDto replaceDto) { - sDatatype = sDatatype.ToLower(); - string sTempDatatype = sDatatype switch + //Engine.Current.Clean(); + + //jnt模板引擎全局变量 + Engine.Configure((options) => { - "int" or "number" or "integer" or "smallint" => "int", - "bigint" => "long", - "tinyint" => "byte", - "numeric" or "real" or "float" => "float", - "decimal" or "numer(8,2)" => "decimal", - "bit" => "bool", - "date" or "datetime" or "datetime2" or "smalldatetime" => "DateTime", - "money" or "smallmoney" => "double", - _ => "string", - }; - return sTempDatatype; + options.TagPrefix = "${"; + options.TagSuffix = "}"; + options.TagFlag = '$'; + options.OutMode = OutMode.Auto; + options.Data.Set("replaceDto", replaceDto); + options.Data.Set("options", dto.GenOptions); + options.Data.Set("genTable", dto.GenTable); + //...其它数据 + }); } - public static bool IsNumber(string tableDataType) - { - string[] arr = new string[] { "int", "long" }; - return arr.Any(f => f.Contains(GetCSharpDatatype(tableDataType))); - } } } diff --git a/ZR.CodeGenerator/GenConstants.cs b/ZR.CodeGenerator/GenConstants.cs index 9e192f2..a32f4dc 100644 --- a/ZR.CodeGenerator/GenConstants.cs +++ b/ZR.CodeGenerator/GenConstants.cs @@ -64,10 +64,6 @@ namespace ZR.CodeGenerator /** 数据库时间类型 */ public static string[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" }; - /** 数据库数字类型 */ - public static string[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer", - "bit", "bigint", "float", "double", "decimal" }; - /** 页面不需要编辑字段 */ public static string[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "delFlag" }; diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs index 9ce7d07..3554346 100644 --- a/ZR.CodeGenerator/Model/GenerateDto.cs +++ b/ZR.CodeGenerator/Model/GenerateDto.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; using ZR.Model.System.Generate; namespace ZR.CodeGenerator.Model @@ -10,24 +6,16 @@ namespace ZR.CodeGenerator.Model public class GenerateDto { public long TableId { get; set; } - //public string[] QueryColumn { get; set; } /// /// 是否预览代码 /// public int IsPreview { get; set; } /// - /// 要生成的文件 - /// - public int[] GenCodeFiles { get; set; } - /// - /// 如果目标文件存在,是否覆盖。默认为false - /// - public bool Coverd { get; set; } = true; - /// /// 生成代码的数据库类型 0、mysql 1、sqlserver /// public int DbType { get; set; } public GenTable GenTable { get; set; } + public CodeGenerateOption GenOptions { get; set; } #region 存储路径 /// /// 代码模板预览存储路径存放 diff --git a/ZR.CodeGenerator/Model/ReplaceDto.cs b/ZR.CodeGenerator/Model/ReplaceDto.cs index 0d2be48..13ca6aa 100644 --- a/ZR.CodeGenerator/Model/ReplaceDto.cs +++ b/ZR.CodeGenerator/Model/ReplaceDto.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using ZR.Model.System.Generate; namespace ZR.CodeGenerator.Model { @@ -38,14 +39,14 @@ namespace ZR.CodeGenerator.Model public string InsertColumn { get; set; } - /// - /// 实体属性模板 - /// - public string ModelProperty { get; set; } - /// - /// 输入Dto模板 - /// - public string InputDtoProperty { get; set; } + ///// + ///// 实体属性模板 + ///// + //public string ModelProperty { get; set; } + ///// + ///// 输入Dto模板 + ///// + //public string InputDtoProperty { get; set; } //vue、api public string VueViewFormResetHtml { get; set; } @@ -73,10 +74,10 @@ namespace ZR.CodeGenerator.Model /// 查询条件 /// public string QueryCondition { get; set; } = ""; - /// - /// 查询属性 - /// - public string QueryProperty { get; set; } + ///// + ///// 查询属性 + ///// + //public string QueryProperty { get; set; } /// /// vue data内容 /// @@ -105,7 +106,7 @@ namespace ZR.CodeGenerator.Model /// 上传URL data /// public string VueUploadUrl { get; set; } - public bool UploadImage{ get; set; } + //public bool UploadImage{ get; set; } public string Author { get; set; } public string AddTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd"); } diff --git a/ZR.CodeGenerator/ZR.CodeGenerator.csproj b/ZR.CodeGenerator/ZR.CodeGenerator.csproj index 849d777..fa433ba 100644 --- a/ZR.CodeGenerator/ZR.CodeGenerator.csproj +++ b/ZR.CodeGenerator/ZR.CodeGenerator.csproj @@ -14,11 +14,4 @@ - - - - PreserveNewest - - - diff --git a/ZR.Model/System/Generate/GenTableColumn.cs b/ZR.Model/System/Generate/GenTableColumn.cs index 38ba31b..2d256b5 100644 --- a/ZR.Model/System/Generate/GenTableColumn.cs +++ b/ZR.Model/System/Generate/GenTableColumn.cs @@ -1,41 +1,40 @@ -using Newtonsoft.Json; +using SqlSugar; using System; -using System.Collections.Generic; -using System.Text; +using System.Linq; namespace ZR.Model.System.Generate { /// /// 代码生成表字段 /// - [SqlSugar.SugarTable("gen_table_column")] - [SqlSugar.Tenant("0")] + [SugarTable("gen_table_column")] + [Tenant("0")] public class GenTableColumn : SysBase { - [SqlSugar.SugarColumn(IsIdentity = true, IsPrimaryKey = true)] + [SugarColumn(IsIdentity = true, IsPrimaryKey = true)] public int ColumnId { get; set; } public string ColumnName { get; set; } - [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)] + [SugarColumn(IsOnlyIgnoreUpdate = true)] public int TableId { get; set; } - [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)] + [SugarColumn(IsOnlyIgnoreUpdate = true)] public string TableName { get; set; } public string ColumnComment { get; set; } - [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)] + [SugarColumn(IsOnlyIgnoreUpdate = true)] public string ColumnType { get; set; } public string CsharpType { get; set; } public string CsharpField { get; set; } /// /// 是否主键(1是) /// - [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)] + [SugarColumn(IsOnlyIgnoreUpdate = true)] public bool IsPk { get; set; } /// /// 是否必填(1是) /// public bool IsRequired { get; set; } - [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)] + [SugarColumn(IsOnlyIgnoreUpdate = true)] public bool IsIncrement { get; set; } /// /// 是否插入 @@ -63,10 +62,22 @@ namespace ZR.Model.System.Generate /// 字典类型 /// public string DictType { get; set; } + + #region 额外字段 + [SugarColumn(IsIgnore = true)] + public string RequiredStr + { + get + { + string[] arr = new string[] { "int", "long" }; + return (!IsRequired &&(arr.Any(f => f.Contains(CsharpType))) || typeof(DateTime).Name == CsharpType) ? "?" : ""; + } + } /// /// 字典集合 /// //[SqlSugar.SugarColumn(IsIgnore = true)] //public List DictDatas { get; set; } + #endregion } } diff --git a/ZR.Vue/src/views/tool/gen/index.vue b/ZR.Vue/src/views/tool/gen/index.vue index e310d97..85f48ce 100644 --- a/ZR.Vue/src/views/tool/gen/index.vue +++ b/ZR.Vue/src/views/tool/gen/index.vue @@ -16,10 +16,12 @@ 导入 - 删除 + + 删除 - + - + - + @@ -55,29 +58,11 @@ - - - 生成实体类Model - 生成表单数据传输类Dto - 生成仓储层Repository - 生成服务类Service和接口 - 生成控制器Controller - 生成Vue页面 - 生成Vue页面数据访问api - 生成Sql文件 - - - - - - - mySql sqlServer -