diff --git a/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs index 40dda60..1cd51c3 100644 --- a/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/CodeGeneratorController.cs @@ -151,8 +151,8 @@ namespace ZR.Admin.WebApi.Controllers BusinessName = CodeGeneratorTool.GetBusinessName(tableName), FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author), TableName = tableName, - TableComment = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description, - FunctionName = string.IsNullOrEmpty(tabInfo.Description) ? tableName : tabInfo.Description, + TableComment = tabInfo?.Description, + FunctionName = tabInfo?.Description, Create_by = userName, }; genTable.TableId = GenTableService.ImportGenTable(genTable); diff --git a/ZR.Admin.WebApi/Startup.cs b/ZR.Admin.WebApi/Startup.cs index c95ff8f..4535ce5 100644 --- a/ZR.Admin.WebApi/Startup.cs +++ b/ZR.Admin.WebApi/Startup.cs @@ -1,7 +1,6 @@ using Hei.Captcha; using Infrastructure; using Infrastructure.Extensions; -using JinianNet.JNTemplate; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.DataProtection; @@ -43,7 +42,7 @@ namespace ZR.Admin.WebApi { c.AddPolicy("Policy", policy => { - policy.WithOrigins(corsUrls.Split(',', System.StringSplitOptions.RemoveEmptyEntries)) + policy.WithOrigins(corsUrls.Split(',', StringSplitOptions.RemoveEmptyEntries)) .AllowAnyHeader()//允许任意头 .AllowCredentials()//允许cookie .AllowAnyMethod();//允许任意方法 diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj index 72b53d5..9a98f68 100644 --- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj +++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj @@ -17,12 +17,6 @@ - - - - - - diff --git a/ZR.Admin.WebApi/appsettings.json b/ZR.Admin.WebApi/appsettings.json index 58dd587..8723085 100644 --- a/ZR.Admin.WebApi/appsettings.json +++ b/ZR.Admin.WebApi/appsettings.json @@ -37,7 +37,7 @@ "dbType": 1, //MySql = 0, SqlServer = 1 "autoPre": true, //自动去除表前缀 "author": "zr", - "tablePrefix": "live_,sys_" //"表前缀(生成类名不会包含表前缀,多个用逗号分隔)", + "tablePrefix": "sys_" //"表前缀(生成类名不会包含表前缀,多个用逗号分隔)", }, //邮箱配置信息 "MailOptions": { diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ControllersTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ControllersTemplate.txt deleted file mode 100644 index e4639a5..0000000 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ControllersTemplate.txt +++ /dev/null @@ -1,154 +0,0 @@ -锘縰sing Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using SqlSugar; -using Infrastructure; -using Infrastructure.Attribute; -using Infrastructure.Enums; -using Infrastructure.Model; -using Mapster; -using {ModelsNamespace}.Dto; -using {ModelsNamespace}.Models; -using {ServicesNamespace}.Business; -using {ApiControllerNamespace}.Extensions; -using {ApiControllerNamespace}.Filters; -using ZR.Common; -using Infrastructure.Extensions; -using System.Linq; - -namespace {ApiControllerNamespace}.Controllers -{ - /// - /// {FunctionName}Controller - /// - /// @author {Author} - /// @date {DateTime} - /// - [Verify] - [Route("{ModuleName}/{ModelName}")] - public class {ModelName}Controller: BaseController - { - /// - /// {FunctionName}鎺ュ彛 - /// - private readonly I{ModelName}Service _{ModelName}Service; - - public {ModelName}Controller(I{ModelName}Service {ModelName}Service) - { - _{ModelName}Service = {ModelName}Service; - } - - /// - /// 鏌ヨ{FunctionName}鍒楄〃 - /// - /// - [HttpGet("list")] - [ActionPermissionFilter(Permission = "{Permission}:list")] - public IActionResult Query{ModelName}([FromQuery] {ModelName}QueryDto parm) - { - //寮濮嬫嫾瑁呮煡璇㈡潯浠 - var predicate = Expressionable.Create<{ModelName}>(); - - //TODO 鑷繁瀹炵幇鎼滅储鏉′欢鏌ヨ璇硶鍙傝僑qlsugar锛岄粯璁ゆ煡璇㈡墍鏈 - //predicate = predicate.And(m => m.Name.Contains(parm.Name)); -{QueryCondition} - var response = _{ModelName}Service.GetPages(predicate.ToExpression(), parm); - - return SUCCESS(response); - } - - /// - /// 鏌ヨ{FunctionName}璇︽儏 - /// - /// - /// - [HttpGet("{{PrimaryKey}}")] - [ActionPermissionFilter(Permission = "{Permission}:query")] - public IActionResult Get{ModelName}({PKCsharpType} {PrimaryKey}) - { - var response = _{ModelName}Service.GetFirst(x => x.{PrimaryKey} == {PrimaryKey}); - - return SUCCESS(response); - } - - /// - /// 娣诲姞{FunctionName} - /// - /// - [HttpPost] - [ActionPermissionFilter(Permission = "{Permission}:add")] - [Log(Title = "{FunctionName}", BusinessType = BusinessType.INSERT)] - public IActionResult Add{ModelName}([FromBody] {ModelName}Dto parm) - { - if (parm == null) - { - throw new CustomException("璇锋眰鍙傛暟閿欒"); - } - //浠 Dto 鏄犲皠鍒 瀹炰綋 - var model = parm.Adapt<{ModelName}>().ToCreate(HttpContext); - - return SUCCESS(_{ModelName}Service.Insert(model, it => new - { -{InsertColumn} - })); - } - - /// - /// 鏇存柊{FunctionName} - /// - /// - [HttpPut] - [ActionPermissionFilter(Permission = "{Permission}:update")] - [Log(Title = "{FunctionName}", BusinessType = BusinessType.UPDATE)] - public IActionResult Update{ModelName}([FromBody] {ModelName}Dto parm) - { - if (parm == null) - { - throw new CustomException("璇锋眰瀹炰綋涓嶈兘涓虹┖"); - } - //浠 Dto 鏄犲皠鍒 瀹炰綋 - var model = parm.Adapt<{ModelName}>().ToUpdate(HttpContext); - - var response = _{ModelName}Service.Update(w => w.{PrimaryKey} == model.{PrimaryKey}, it => new {ModelName}() - { - //Update 瀛楁鏄犲皠 -{UpdateColumn} - }); - - return SUCCESS(response); - } - - /// - /// 鍒犻櫎{FunctionName} - /// - /// - [HttpDelete("{ids}")] - [ActionPermissionFilter(Permission = "{Permission}:delete")] - [Log(Title = "{FunctionName}", BusinessType = BusinessType.DELETE)] - public IActionResult Delete{ModelName}(string ids) - { - int[] idsArr = Tools.SpitIntArrary(ids); - if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"鍒犻櫎澶辫触Id 涓嶈兘涓虹┖")); } - - var response = _{ModelName}Service.Delete(idsArr); - - return SUCCESS(response); - } - - /// - /// {FunctionName}瀵煎嚭 - /// - /// - [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "{FunctionName}")] - [HttpGet("export")] - [ActionPermissionFilter(Permission = "{Permission}:export")] - public IActionResult Export() - { - var list = _{ModelName}Service.GetAll(); - - string sFileName = ExportExcel(list, "{ModelName}", "{FunctionName}"); - return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName }); - } - } -} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/InputDtoTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/InputDtoTemplate.txt deleted file mode 100644 index e44f353..0000000 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/InputDtoTemplate.txt +++ /dev/null @@ -1,25 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using ${ModelsNamespace}.Dto; -using ${ModelsNamespace}.Models; - -namespace ${DtosNamespace}.Dto -{ - /// - /// ${FunctionName}杈撳叆瀵硅薄妯″瀷 - /// - public class ${ModelTypeName}Dto - { -${PropertyName} - } - - /// - /// ${FunctionName}鏌ヨ瀵硅薄妯″瀷 - /// - public class ${ModelTypeName}QueryDto: PagerInfo - { -${QueryProperty} - public DateTime? BeginTime { get; set; } - public DateTime? EndTime { get; set; } - } -} diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ModelTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ModelTemplate.txt deleted file mode 100644 index 61111a4..0000000 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ModelTemplate.txt +++ /dev/null @@ -1,18 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using SqlSugar; - -namespace {ModelsNamespace}.Models -{ - /// - /// {FunctionName}锛屾暟鎹疄浣撳璞 - /// - /// @author {Author} - /// @date {DateTime} - /// - [SugarTable("{TableName}")] - public class {ModelTypeName} - { -{PropertyName} - } -} diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt index bca3905..3c2519d 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 ('${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}鑿滃崟'); +VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', '', sysdate(), '${genTable.functionName}鑿滃崟'); -- 鎸夐挳鐖惰彍鍗昳d SELECT @menuId := LAST_INSERT_ID(); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('${genTable.functionName}鏌ヨ', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:query', '', sysdate()); +VALUES ('${genTable.functionName}鏌ヨ', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:query', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('${genTable.functionName}鏂板', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:add', '', sysdate()); +VALUES ('${genTable.functionName}鏂板', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:add', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('${genTable.functionName}鍒犻櫎', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:delete', '', sysdate()); +VALUES ('${genTable.functionName}鍒犻櫎', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:delete', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('${genTable.functionName}淇敼', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:update', '', sysdate()); +VALUES ('${genTable.functionName}淇敼', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:update', '', sysdate()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time) -VALUES ('${genTable.functionName}瀵煎嚭', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:export', '', sysdate()); +VALUES ('${genTable.functionName}瀵煎嚭', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}: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/RepositoryTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/RepositoryTemplate.txt deleted file mode 100644 index a073a0c..0000000 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/RepositoryTemplate.txt +++ /dev/null @@ -1,20 +0,0 @@ -锘縰sing System; -using Infrastructure.Attribute; -using {RepositoriesNamespace}.System; -using {ModelsNamespace}.Models; - -namespace {RepositoriesNamespace} -{ - /// - /// {FunctionName}浠撳偍鎺ュ彛鐨勫疄鐜 - /// - /// @author {Author} - /// @date {DateTime} - /// - [AppService(ServiceLifetime = LifeTime.Transient)] - public class {ModelTypeName}Repository : BaseRepository<{ModelTypeName}> - { - #region 涓氬姟閫昏緫浠g爜 - #endregion - } -} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt index 39a8a5f..1ea135d 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt @@ -1,25 +1,25 @@ 锘-- ${genTable.functionName}鑿滃崟 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time, remark) -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}'); +VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', GETDATE(), '${genTable.functionName}'); -- 鎸夐挳鐖惰彍鍗昳d 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 ('${genTable.functionName}鏌ヨ', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:query', '', '', GETDATE()); +VALUES ('${genTable.functionName}鏌ヨ', @menuId, 1, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:query', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('${genTable.functionName}鏂板', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:add', '', '', GETDATE()); +VALUES ('${genTable.functionName}鏂板', @menuId, 2, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:add', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('${genTable.functionName}鍒犻櫎', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:delete', '', '', GETDATE()); +VALUES ('${genTable.functionName}鍒犻櫎', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:delete', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('${genTable.functionName}淇敼', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:update', '', '', GETDATE()); +VALUES ('${genTable.functionName}淇敼', @menuId, 4, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}:update', '', '', GETDATE()); INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) -VALUES ('${genTable.functionName}瀵煎嚭', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.permission}:export', '', '', GETDATE()); +VALUES ('${genTable.functionName}瀵煎嚭', @menuId, 5, '#', NULL, 0, 0, 'F', '0', '0', '${replaceDto.PermissionPrefix}: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/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt new file mode 100644 index 0000000..58e9925 --- /dev/null +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt @@ -0,0 +1,154 @@ +锘縰sing Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using SqlSugar; +using Infrastructure; +using Infrastructure.Attribute; +using Infrastructure.Enums; +using Infrastructure.Model; +using Mapster; +using ${options.ModelsNamespace}.Dto; +using ${options.ModelsNamespace}.Models; +using ${options.ServicesNamespace}.Business; +using ${options.ApiControllerNamespace}.Extensions; +using ${options.ApiControllerNamespace}.Filters; +using ZR.Common; +using Infrastructure.Extensions; +using System.Linq; + +namespace ${options.ApiControllerNamespace}.Controllers +{ + /// + /// ${genTable.functionName}Controller + /// + /// @author ${replaceDto.Author} + /// @date ${replaceDto.AddTime} + /// + [Verify] + [Route("${genTable.ModuleName}/${replaceDto.ModelTypeName}")] + public class ${replaceDto.ModelTypeName}Controller : BaseController + { + /// + /// ${genTable.FunctionName}鎺ュ彛 + /// + private readonly I${replaceDto.ModelTypeName}Service _${replaceDto.ModelTypeName}Service; + + public ${replaceDto.ModelTypeName}Controller(I${replaceDto.ModelTypeName}Service ${replaceDto.ModelTypeName}Service) + { + _${replaceDto.ModelTypeName}Service = ${replaceDto.ModelTypeName}Service; + } + + /// + /// 鏌ヨ${genTable.FunctionName}鍒楄〃 + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:list")] + public IActionResult Query${replaceDto.ModelTypeName}([FromQuery] ${replaceDto.ModelTypeName}QueryDto parm) + { + //寮濮嬫嫾瑁呮煡璇㈡潯浠 + var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); + + //TODO 鑷繁瀹炵幇鎼滅储鏉′欢鏌ヨ璇硶鍙傝僑qlsugar锛岄粯璁ゆ煡璇㈡墍鏈 + //predicate = predicate.And(m => m.Name.Contains(parm.Name)); +${QueryCondition} + var response = _${replaceDto.ModelTypeName}Service.GetPages(predicate.ToExpression(), parm); + + return SUCCESS(response); + } + + /// + /// 鏌ヨ${genTable.FunctionName}璇︽儏 + /// + /// + /// + [HttpGet("{${replaceDto.PKName}}")] + [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:query")] + public IActionResult Get${replaceDto.ModelTypeName}(${replaceDto.PKType} ${replaceDto.PKName}) + { + var response = _${replaceDto.ModelTypeName}Service.GetFirst(x => x.${replaceDto.PKName} == ${replaceDto.PKName}); + + return SUCCESS(response); + } + + /// + /// 娣诲姞${genTable.FunctionName} + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:add")] + [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.INSERT)] + public IActionResult Add${replaceDto.ModelTypeName}([FromBody] ${replaceDto.ModelTypeName}Dto parm) + { + if (parm == null) + { + throw new CustomException("璇锋眰鍙傛暟閿欒"); + } + //浠 Dto 鏄犲皠鍒 瀹炰綋 + var model = parm.Adapt<${replaceDto.ModelTypeName}>().ToCreate(HttpContext); + + return SUCCESS(_${replaceDto.ModelTypeName}Service.Insert(model, it => new + { +${InsertColumn} + })); + } + + /// + /// 鏇存柊${genTable.FunctionName} + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:update")] + [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.UPDATE)] + public IActionResult Update${replaceDto.ModelTypeName}([FromBody] ${replaceDto.ModelTypeName}Dto parm) + { + if (parm == null) + { + throw new CustomException("璇锋眰瀹炰綋涓嶈兘涓虹┖"); + } + //浠 Dto 鏄犲皠鍒 瀹炰綋 + var model = parm.Adapt<${replaceDto.ModelTypeName}>().ToUpdate(HttpContext); + + var response = _${replaceDto.ModelTypeName}Service.Update(w => w.${replaceDto.PKName} == model.${replaceDto.PKName}, it => new ${replaceDto.ModelTypeName}() + { + //Update 瀛楁鏄犲皠 +${UpdateColumn} + }); + + return SUCCESS(response); + } + + /// + /// 鍒犻櫎${genTable.FunctionName} + /// + /// + [HttpDelete("{ids}")] + [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:delete")] + [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.DELETE)] + public IActionResult Delete${replaceDto.ModelTypeName}(string ids) + { + int[] idsArr = Tools.SpitIntArrary(ids); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"鍒犻櫎澶辫触Id 涓嶈兘涓虹┖")); } + + var response = _${replaceDto.ModelTypeName}Service.Delete(idsArr); + + return SUCCESS(response); + } + + /// + /// ${genTable.FunctionName}瀵煎嚭 + /// + /// + [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "${genTable.FunctionName}")] + [HttpGet("export")] + [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:export")] + public IActionResult Export() + { + var list = _${replaceDto.ModelTypeName}Service.GetAll(); + + string sFileName = ExportExcel(list, "${replaceDto.ModelTypeName}", "${genTable.FunctionName}"); + return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName }); + } + } +} \ No newline at end of file diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 06bf51d..9883b3d 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -52,7 +52,7 @@ namespace ZR.CodeGenerator ReplaceDto replaceDto = new(); replaceDto.ModelTypeName = dto.GenTable.ClassName;//琛ㄥ悕瀵瑰簲C# 瀹炰綋绫诲悕 replaceDto.TableName = dto.GenTable.TableName;//琛ㄥ悕 - replaceDto.Permission = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//鏉冮檺 + replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//鏉冮檺 replaceDto.Author = dto.GenTable.FunctionAuthor; replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName); @@ -94,12 +94,10 @@ namespace ZR.CodeGenerator } CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto); - //replaceDto.ModelProperty += CodeGenerateTemplate.GetModelTemplate(dbFieldInfo); - replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo); CodeGenerateTemplate.TplVueJsMethod(dbFieldInfo, replaceDto); + replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo); replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo); replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo); - //replaceDto.InputDtoProperty += CodeGenerateTemplate.GetDtoProperty(dbFieldInfo); replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo); } replaceDto.VueDataContent = sb1.ToString(); @@ -144,7 +142,7 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("TplModel.txt"); var result = tpl.Render(); - generateDto.GenCodes.Add(new GenCode(1, "瀹炰綋绫", fullPath, result)); + generateDto.GenCodes.Add(new GenCode(1, "Model", fullPath, result)); } /// @@ -159,7 +157,7 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("TplDto.txt"); var result = tpl.Render(); - generateDto.GenCodes.Add(new GenCode(2, "鏁版嵁浼犺緭瀹炰綋绫", fullPath, result)); + generateDto.GenCodes.Add(new GenCode(2, "Dto", fullPath, result)); } #endregion @@ -177,7 +175,7 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("TplRepository.txt"); var result = tpl.Render(); - generateDto.GenCodes.Add(new GenCode(3, "浠撳偍灞", fullPath, result)); + generateDto.GenCodes.Add(new GenCode(3, "Repository", fullPath, result)); } #endregion @@ -195,7 +193,7 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("IServiceTemplate.txt"); var result = tpl.Render(); - generateDto.GenCodes.Add(new GenCode(4, "鎺ュ彛灞", fullPath, result)); + generateDto.GenCodes.Add(new GenCode(4, "IService", fullPath, result)); } /// @@ -208,7 +206,7 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("ServiceTemplate.txt"); var result = tpl.Render(); - generateDto.GenCodes.Add(new GenCode(4, "鏈嶅姟灞", fullPath, result)); + generateDto.GenCodes.Add(new GenCode(4, "Service", fullPath, result)); } #endregion @@ -217,36 +215,47 @@ namespace ZR.CodeGenerator /// /// 鐢熸垚鎺у埗鍣ˋpiControllers鏂囦欢 /// + //private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) + //{ + // var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs"); + + // var content = FileHelper.ReadTemplate("ControllersTemplate.txt") + // .Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace) + // .Replace("{ServicesNamespace}", _option.ServicesNamespace) + // .Replace("{ModelsNamespace}", _option.ModelsNamespace) + // .Replace("{FunctionName}", generateDto.GenTable.FunctionName) + // .Replace("{ModelName}", replaceDto.ModelTypeName) + // .Replace("{Permission}", replaceDto.Permission) + // .Replace("{PrimaryKey}", replaceDto.PKName) + // .Replace("{ModuleName}", generateDto.GenTable.ModuleName) + // .Replace("{PKCsharpType}", replaceDto.PKType) + // .Replace("{Author}", replaceDto.Author) + // .Replace("{DateTime}", replaceDto.AddTime); + + // if (replaceDto.UpdateColumn != null) + // { + // content = content.Replace("{UpdateColumn}", replaceDto.UpdateColumn.TrimEnd('\n')); + // } + // if (replaceDto.InsertColumn != null) + // { + // content = content.Replace("{InsertColumn}", replaceDto.InsertColumn.TrimEnd('\n')); + // } + // if (replaceDto.QueryCondition != null) + // { + // content = content.Replace("{QueryCondition}", replaceDto.QueryCondition); + // } + // generateDto.GenCodes.Add(new GenCode(5, "鎺у埗鍣", fullPath, content)); + //} private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs"); - var content = FileHelper.ReadTemplate("ControllersTemplate.txt") - .Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace) - .Replace("{ServicesNamespace}", _option.ServicesNamespace) - .Replace("{ModelsNamespace}", _option.ModelsNamespace) - .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - .Replace("{ModelName}", replaceDto.ModelTypeName) - .Replace("{Permission}", replaceDto.Permission) - .Replace("{PrimaryKey}", replaceDto.PKName) - .Replace("{ModuleName}", generateDto.GenTable.ModuleName) - .Replace("{PKCsharpType}", replaceDto.PKType) - .Replace("{Author}", replaceDto.Author) - .Replace("{DateTime}", replaceDto.AddTime); - - if (replaceDto.UpdateColumn != null) - { - content = content.Replace("{UpdateColumn}", replaceDto.UpdateColumn.TrimEnd('\n')); - } - if (replaceDto.InsertColumn != null) - { - content = content.Replace("{InsertColumn}", replaceDto.InsertColumn.TrimEnd('\n')); - } - if (replaceDto.QueryCondition != null) - { - content = content.Replace("{QueryCondition}", replaceDto.QueryCondition); - } - generateDto.GenCodes.Add(new GenCode(5, "鎺у埗鍣", fullPath, content)); + var tpl = FileHelper.ReadJtTemplate("TplControllers.txt"); + tpl.Set("QueryCondition", replaceDto.QueryCondition); + tpl.Set("InsertColumn", replaceDto.InsertColumn.TrimEnd('\n')); + tpl.Set("UpdateColumn", replaceDto.UpdateColumn.TrimEnd('\n')); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(5, "Controller", fullPath, result)); } #endregion @@ -262,7 +271,7 @@ namespace ZR.CodeGenerator .Replace("{VueViewListContent}", replaceDto.VueViewListHtml)//鏌ヨ table鍒 .Replace("{VueViewFormContent}", replaceDto.VueViewFormHtml)//娣诲姞銆佷慨鏀硅〃鍗 .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{Permission}", replaceDto.Permission) + .Replace("{Permission}", replaceDto.PermissionPrefix) .Replace("{VueViewFormResetHtml}", replaceDto.VueViewFormResetHtml) .Replace("{vueJsMethod}", replaceDto.VueJsMethod) .Replace("{vueQueryFormHtml}", replaceDto.VueQueryFormHtml) @@ -312,7 +321,7 @@ namespace ZR.CodeGenerator break; } var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt"); - + tpl.Set("parentId", generateDto.GenTable.ParentMenuId); var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result)); } @@ -355,8 +364,8 @@ namespace ZR.CodeGenerator { int lastIndex = tableName.LastIndexOf("_"); int nameLength = tableName.Length; - string businessName = tableName.Substring(lastIndex + 1, nameLength); - return businessName; + string businessName = tableName.Substring(nameLength - lastIndex + 1); + return businessName.ToLower(); } /// @@ -494,7 +503,7 @@ namespace ZR.CodeGenerator /// private static void InitJntTemplate(GenerateDto dto, ReplaceDto replaceDto) { - //Engine.Current.Clean(); + Engine.Current.Clean(); //jnt妯℃澘寮曟搸鍏ㄥ眬鍙橀噺 Engine.Configure((options) => @@ -503,6 +512,8 @@ namespace ZR.CodeGenerator options.TagSuffix = "}"; options.TagFlag = '$'; options.OutMode = OutMode.Auto; + //options.DisableeLogogram = true;//绂佺敤绠鍐 + options.Data.Set("${flag}", "$");//鐗规畩鏍囩鏇挎崲 options.Data.Set("replaceDto", replaceDto); options.Data.Set("options", dto.GenOptions); options.Data.Set("genTable", dto.GenTable); diff --git a/ZR.CodeGenerator/Model/ReplaceDto.cs b/ZR.CodeGenerator/Model/ReplaceDto.cs index 13ca6aa..2fcea95 100644 --- a/ZR.CodeGenerator/Model/ReplaceDto.cs +++ b/ZR.CodeGenerator/Model/ReplaceDto.cs @@ -20,7 +20,7 @@ namespace ZR.CodeGenerator.Model /// /// 鎺у埗鍣ㄦ潈闄 /// - public string Permission { get; set; } + public string PermissionPrefix { get; set; } /// /// C#绫诲悕 ///