From f4906a16de81d7cbd616d4fededced8a4e2548d8 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: Fri, 10 Dec 2021 18:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=98=AF=E5=90=A6=E6=98=BE=E7=A4=BA=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../System/CodeGeneratorController.cs | 13 ++--- ZR.Admin.WebApi/Framework/JwtUtil.cs | 7 ++- ZR.Admin.WebApi/ZR.Admin.WebApi.csproj | 1 + .../wwwroot/CodeGenTemplate/TplVue.txt | 9 +++ ZR.CodeGenerator/CodeGeneratorTool.cs | 20 ++++--- ZR.CodeGenerator/Model/GenerateDto.cs | 4 ++ ZR.CodeGenerator/Model/ReplaceDto.cs | 7 ++- ZR.Vue/src/api/tool/gen.js | 5 +- ZR.Vue/src/views/tool/gen/index.vue | 55 +++++++++++++++---- 9 files changed, 89 insertions(+), 32 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs index 61fc996..61000b5 100644 --- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs @@ -206,25 +206,24 @@ namespace ZR.Admin.WebApi.Controllers /// /// 预览代码 /// - /// + /// /// - [HttpGet("preview/{tableId}")] + [HttpPost("preview/{tableId}")] [ActionPermissionFilter(Permission = "tool:gen:preview")] - public IActionResult Preview(long tableId) + public IActionResult Preview([FromBody] GenerateDto dto) { - if (tableId <= 0) + if (dto == null || dto.TableId <= 0) { throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); } - var genTableInfo = GenTableService.GetGenTableInfo(tableId); - genTableInfo.Columns = GenTableColumnService.GenTableColumns(tableId); + var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId); + genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId); //var dictList = genTableInfo.Columns.FindAll(x => !string.IsNullOrEmpty(x.DictType)); //foreach (var item in dictList) //{ // item.DictDatas = SysDictDataService.SelectDictDataByType(item.DictType); //} - GenerateDto dto = new(); dto.GenTable = genTableInfo; dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode"); dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd")); diff --git a/ZR.Admin.WebApi/Framework/JwtUtil.cs b/ZR.Admin.WebApi/Framework/JwtUtil.cs index b6e0e8f..83c8e46 100644 --- a/ZR.Admin.WebApi/Framework/JwtUtil.cs +++ b/ZR.Admin.WebApi/Framework/JwtUtil.cs @@ -25,7 +25,7 @@ namespace ZR.Admin.WebApi.Framework /// public static LoginUser GetLoginUser(HttpContext httpContext) { - string token = HttpContextExtension.GetToken(httpContext); + string token = httpContext.GetToken(); if (!string.IsNullOrEmpty(token)) { @@ -58,7 +58,7 @@ namespace ZR.Admin.WebApi.Framework Audience = jwtSettings.Audience, IssuedAt = authTime,//token生成时间 Expires = expiresAt, - NotBefore = authTime, + //NotBefore = authTime, TokenType = "Bearer", //对称秘钥,签名证书 SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) @@ -86,7 +86,8 @@ namespace ZR.Admin.WebApi.Framework ValidAudience = jwtSettings.Audience, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateLifetime = true,//是否验证Token有效期,使用当前时间与Token的Claims中的NotBefore和Expires对比 - RequireExpirationTime = true,//过期时间 + ClockSkew = TimeSpan.FromSeconds(30) + //RequireExpirationTime = true,//过期时间 }; return tokenDescriptor; } diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj index cbd8d09..8339601 100644 --- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj +++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj @@ -67,6 +67,7 @@ + diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt index 61ed95f..dc3dc5f 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt @@ -20,9 +20,11 @@ ${vueQueryFormHtml} 删除 +$if(replaceDto.ShowBtnExport) 导出 +$end $if(genTable.SortField != "" && 1 == 2) 修改排序 @@ -101,6 +103,13 @@ export default { form: {}, // 时间范围数组 timeRange: [], + columns: [ +$set(index = 0) +$foreach(column in genTable.Columns) + { index: $index, key: '${column.ColumnName}', label: `${column.ColumnComment}`, checked: $if(index < 9) true $else false $end }, +$set(index = index + 1) +$end + ], $foreach(item in genTable.Columns) $if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox")) // ${item.ColumnComment}选项列表 diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 1d79e43..5d811f4 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -52,6 +52,10 @@ namespace ZR.CodeGenerator replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名 replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限 replaceDto.Author = dto.GenTable.FunctionAuthor; + replaceDto.ShowBtnAdd = dto.CheckedBtn.Any(f => f == 1); + replaceDto.ShowBtnEdit = dto.CheckedBtn.Any(f => f == 2); + replaceDto.ShowBtnDelete = dto.CheckedBtn.Any(f => f == 3); + replaceDto.ShowBtnExport = dto.CheckedBtn.Any(f => f == 4); //循环表字段信息 foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns) @@ -262,7 +266,7 @@ namespace ZR.CodeGenerator { if (!string.IsNullOrEmpty(searcList[i].ToString())) { - tableName = tableName.Replace(searcList[i], ""); + tableName = tableName.Replace(searcList[i], "", StringComparison.OrdinalIgnoreCase); } } } @@ -276,11 +280,11 @@ namespace ZR.CodeGenerator /// 业务名 public static string GetBusinessName(string tableName) { - int lastIndex = tableName.IndexOf("_");//_前缀长度 - int nameLength = tableName.Length; - int subLength = (nameLength - lastIndex) - 1; - string businessName = tableName[(lastIndex + 1)..]; - return businessName.Substring(0, 1).ToUpper() + tableName[1..].Replace("_", ""); + //int firstIndex = tableName.IndexOf("_");//_前缀长度 + //int nameLength = tableName.Length; + //int subLength = (nameLength - lastIndex) - 1; + //string businessName = tableName[(lastIndex + 1)..]; + return tableName.Substring(0, 1).ToUpper() + tableName[1..].Replace("_", ""); } /// @@ -427,9 +431,11 @@ namespace ZR.CodeGenerator options.Data.Set("replaceDto", replaceDto); options.Data.Set("options", dto.GenOptions); options.Data.Set("genTable", dto.GenTable); + options.Data.Set("btns", dto.CheckedBtn); + //options.Data.Set("codeTool", new CodeGeneratorTool()); + options.EnableCache = true; //...其它数据 }); } - } } diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs index 3554346..bdb2c22 100644 --- a/ZR.CodeGenerator/Model/GenerateDto.cs +++ b/ZR.CodeGenerator/Model/GenerateDto.cs @@ -14,6 +14,10 @@ namespace ZR.CodeGenerator.Model /// 生成代码的数据库类型 0、mysql 1、sqlserver /// public int DbType { get; set; } + /// + /// 生成的按钮功能 + /// + public int[] CheckedBtn { 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 64da250..6f3296a 100644 --- a/ZR.CodeGenerator/Model/ReplaceDto.cs +++ b/ZR.CodeGenerator/Model/ReplaceDto.cs @@ -25,7 +25,7 @@ namespace ZR.CodeGenerator.Model /// public string ModelTypeName { get; set; } //vue、api - public string VueViewFormResetHtml { get; set; } + //public string VueViewFormResetHtml { get; set; } /// /// 前端列表查询html /// @@ -47,7 +47,10 @@ namespace ZR.CodeGenerator.Model /// 查询条件 /// public string QueryCondition { get; set; } = ""; - + public bool ShowBtnExport { get; set; } + public bool ShowBtnAdd { get; set; } + public bool ShowBtnEdit { get; set; } + public bool ShowBtnDelete { get; set; } /// /// 上传URL data /// diff --git a/ZR.Vue/src/api/tool/gen.js b/ZR.Vue/src/api/tool/gen.js index ea4af5c..e8678bf 100644 --- a/ZR.Vue/src/api/tool/gen.js +++ b/ZR.Vue/src/api/tool/gen.js @@ -95,10 +95,11 @@ export function updateGenTable(data) { } // 预览生成代码 -export function previewTable(tableId) { +export function previewTable(tableId, data) { return request({ url: '/tool/gen/preview/' + tableId, - method: 'get' + method: 'post', + data: data }) } diff --git a/ZR.Vue/src/views/tool/gen/index.vue b/ZR.Vue/src/views/tool/gen/index.vue index 85f48ce..edfc8ec 100644 --- a/ZR.Vue/src/views/tool/gen/index.vue +++ b/ZR.Vue/src/views/tool/gen/index.vue @@ -29,17 +29,18 @@ - + @@ -56,9 +57,24 @@ - + - + + + + 添加 + + + 修改 + + + 删除 + + + 导出 + + + mySql sqlServer @@ -103,7 +119,8 @@ export default { activeName: "0", }, showGenerate: false, - checkedCodeGenerateForm: [1, 2, 3, 4, 5, 6, 7, 8], + // 显示的button + checkedBtnForm: [1, 2, 3], rules: {}, // 表数据 tableData: [], @@ -151,15 +168,28 @@ export default { }, // 代码预览 handlePreview(row) { - previewTable(row.tableId).then((res) => { + var seachdata = { + tableId: this.currentSelected.tableId, + checkedBtn: this.checkedBtnForm, + dbType: this.dbType, + }; + previewTable(row.tableId, seachdata).then((res) => { if (res.code === 200) { + this.showGenerate = false; this.preview.open = true; this.preview.data = res.data; } }); }, - handleShowDialog(row) { + // 打开对话框、预览、生成 + handleShowDialog(row, type) { this.showGenerate = true; + if (type == "generate") { + this.preview.title = "代码生成"; + } + if (type == "preview") { + this.preview.title = "预览"; + } this.currentSelected = row; }, /** @@ -167,6 +197,10 @@ export default { */ handleGenerate: async function () { console.log(JSON.stringify(this.currentSelected)); + if (this.preview.title == "预览") { + this.handlePreview(this.currentSelected); + return; + } if (!this.currentSelected) { this.msgError("请先选择要生成代码的数据表"); return false; @@ -184,8 +218,7 @@ export default { var seachdata = { tableId: this.currentSelected.tableId, tableName: this.currentSelected.name, - // genCodeFiles: this.checkedCodeGenerateForm, - // coverd: this.coverd, + checkedBtn: this.checkedBtnForm, dbType: this.dbType, // queryColumn: this.checkedQueryColumn, };