diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs index ec6384c..0c65c48 100644 --- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs @@ -12,6 +12,7 @@ using ZR.CodeGenerator.Model; using ZR.CodeGenerator.Service; using ZR.Common; using ZR.Model; +using ZR.Model.System; using ZR.Model.System.Dto; using ZR.Model.System.Generate; using ZR.Service.System.IService; @@ -28,16 +29,18 @@ namespace ZR.Admin.WebApi.Controllers private readonly CodeGeneraterService _CodeGeneraterService = new CodeGeneraterService(); private readonly IGenTableService GenTableService; private readonly IGenTableColumnService GenTableColumnService; - + private readonly ISysMenuService SysMenuService; private readonly IWebHostEnvironment WebHostEnvironment; public CodeGeneratorController( IGenTableService genTableService, IGenTableColumnService genTableColumnService, - IWebHostEnvironment webHostEnvironment) + IWebHostEnvironment webHostEnvironment, + ISysMenuService sysMenuService) { GenTableService = genTableService; GenTableColumnService = genTableColumnService; WebHostEnvironment = webHostEnvironment; + SysMenuService = sysMenuService; } /// @@ -257,7 +260,7 @@ namespace ZR.Admin.WebApi.Controllers dto.GenTable = genTableInfo; //自定义路径 if (genTableInfo.GenType == "1") - { + { string tempPath = WebHostEnvironment.ContentRootPath; var parentPath = tempPath[..tempPath.LastIndexOf(@"\")]; //代码生成文件夹路径 @@ -275,7 +278,10 @@ namespace ZR.Admin.WebApi.Controllers CodeGeneratorTool.Generate(dto); //下载文件 FileUtil.ZipGenCode(dto.ZipPath, dto.GenCodePath, zipReturnFileName); - + if (genTableInfo.Options.GenerateMenu) + { + SysMenuService.AddSysMenu(genTableInfo, dto.ReplaceDto.PermissionPrefix, dto.ReplaceDto.ShowBtnEdit, dto.ReplaceDto.ShowBtnExport); + } return SUCCESS(new { path = "/Generatecode/" + zipReturnFileName, fileName = dto.ZipFileName }); } diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index cf74cb4..091c937 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -79,7 +79,7 @@ namespace ZR.CodeGenerator } GenerateVueJs(dto); GenerateSql(dto); - + dto.ReplaceDto = replaceDto; if (dto.IsPreview) return; foreach (var item in dto.GenCodes) diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs index 47fb4ba..ab35089 100644 --- a/ZR.CodeGenerator/Model/GenerateDto.cs +++ b/ZR.CodeGenerator/Model/GenerateDto.cs @@ -58,6 +58,7 @@ namespace ZR.CodeGenerator.Model /// public string VueParentPath { get; set; } #endregion + public ReplaceDto ReplaceDto { get; set; } } public class GenCode diff --git a/ZR.Model/System/Generate/GenTable.cs b/ZR.Model/System/Generate/GenTable.cs index cde1f43..d62734a 100644 --- a/ZR.Model/System/Generate/GenTable.cs +++ b/ZR.Model/System/Generate/GenTable.cs @@ -107,5 +107,9 @@ namespace ZR.Model.System.Generate /// 是否生成仓储层 /// public int GenerateRepo { get; set; } + /// + /// 自动生成菜单 + /// + public bool GenerateMenu { get; set; } } } diff --git a/ZR.Service/System/IService/ISysMenuService.cs b/ZR.Service/System/IService/ISysMenuService.cs index 2eb3abc..367d646 100644 --- a/ZR.Service/System/IService/ISysMenuService.cs +++ b/ZR.Service/System/IService/ISysMenuService.cs @@ -2,6 +2,7 @@ using ZR.Model.System.Dto; using ZR.Model.System; using ZR.Model.System.Vo; +using ZR.Model.System.Generate; namespace ZR.Service.System.IService { @@ -37,6 +38,8 @@ namespace ZR.Service.System.IService List BuildMenus(List menus); List BuildMenuTreeSelect(List menus); + + void AddSysMenu(GenTable genTableInfo, string permPrefix, bool showEdit, bool showExport); } /// diff --git a/ZR.Service/System/SysMenuService.cs b/ZR.Service/System/SysMenuService.cs index 54b963b..62aecb3 100644 --- a/ZR.Service/System/SysMenuService.cs +++ b/ZR.Service/System/SysMenuService.cs @@ -7,8 +7,10 @@ using System.Linq; using ZR.Common; using ZR.Model.System; using ZR.Model.System.Dto; +using ZR.Model.System.Generate; using ZR.Model.System.Vo; using ZR.Service.System.IService; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace ZR.Service { @@ -561,5 +563,114 @@ namespace ZR.Service } #endregion + + public void AddSysMenu(GenTable genTableInfo, string permPrefix, bool showEdit, bool showExport) + { + var menu = GetFirst(f => f.MenuName == genTableInfo.FunctionName); + if (menu is null) + { + menu = new() + { + MenuName = genTableInfo.FunctionName, + ParentId = genTableInfo.Options.ParentMenuId, + OrderNum = 0, + Path = genTableInfo.BusinessName, + Component = $"{genTableInfo.ModuleName.FirstLowerCase()}/{genTableInfo.BusinessName}", + Perms = $"{permPrefix}:list", + IsFrame = "0", + IsCache = "1", + MenuType = "C", + Visible = "0", + Status = "0", + Icon = "icon1", + Create_by = "system", + }; + menu.MenuId = AddMenu(menu); + } + + List menuList = new(); + + SysMenu menuQuery = new() + { + MenuName = "查询", + ParentId = menu.MenuId, + OrderNum = 1, + Perms = $"{permPrefix}:query", + IsFrame = "0", + MenuType = "F", + Visible = "0", + Status = "0", + Icon = "", + }; + SysMenu menuAdd = new() + { + MenuName = "新增", + ParentId = menu.MenuId, + OrderNum = 2, + Perms = $"{permPrefix}:add", + IsFrame = "0", + MenuType = "F", + Visible = "0", + Status = "0", + Icon = "", + }; + SysMenu menuDel = new() + { + MenuName = "删除", + ParentId = menu.MenuId, + OrderNum = 3, + Perms = $"{permPrefix}:delete", + IsFrame = "0", + MenuType = "F", + Visible = "0", + Status = "0", + Icon = "", + }; + + SysMenu menuEdit = new() + { + MenuName = "修改", + ParentId = menu.MenuId, + OrderNum = 4, + Perms = $"{permPrefix}:edit", + IsFrame = "0", + MenuType = "F", + Visible = "0", + Status = "0", + Icon = "", + }; + + SysMenu menuExport = new() + { + MenuName = "导出", + ParentId = menu.MenuId, + OrderNum = 5, + Perms = $"{permPrefix}:export", + IsFrame = "0", + MenuType = "F", + Visible = "0", + Status = "0", + Icon = "", + }; + + menuList.Add(menuQuery); + menuList.Add(menuAdd); + menuList.Add(menuDel); + if (showEdit) + { + menuList.Add(menuEdit); + } + if (showExport) + { + menuList.Add(menuExport); + } + //Insert(menuList); + + var x = Storageable(menuList) + .WhereColumns(it => new { it.MenuName, it.ParentId }) + .ToStorage(); + x.AsInsertable.ExecuteCommand();//插入可插入部分; + x.AsUpdateable.ExecuteCommand(); + } } }