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,
};