From ac38886f603425704fccdc2d11f1a961e749952f 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: Sun, 4 Jun 2023 20:38:47 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BB=A3=E7=A0=81=E7=94=9F?=
=?UTF-8?q?=E6=88=90=E8=87=AA=E5=8A=A8=E6=B7=BB=E5=8A=A0=E8=8F=9C=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../System/CodeGeneratorController.cs | 14 ++-
ZR.CodeGenerator/CodeGeneratorTool.cs | 2 +-
ZR.CodeGenerator/Model/GenerateDto.cs | 1 +
ZR.Model/System/Generate/GenTable.cs | 4 +
ZR.Service/System/IService/ISysMenuService.cs | 3 +
ZR.Service/System/SysMenuService.cs | 111 ++++++++++++++++++
6 files changed, 130 insertions(+), 5 deletions(-)
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();
+ }
}
}