From 50c48077d7188f72adc1bc1d2e6f9c78304c6f32 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: Tue, 14 Dec 2021 21:50:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../System/CodeGeneratorController.cs | 17 +- .../CodeGenTemplate/TplControllers.txt | 9 +- .../wwwroot/CodeGenTemplate/TplVue.txt | 28 +-- ZR.CodeGenerator/CodeGeneratorTool.cs | 192 ++++++++++-------- .../Service/CodeGeneraterService.cs | 2 +- ZR.Vue/src/utils/request.js | 2 +- 6 files changed, 126 insertions(+), 124 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs index 5f5d8a0..5470b2e 100644 --- a/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs +++ b/ZR.Admin.WebApi/Controllers/System/CodeGeneratorController.cs @@ -157,19 +157,7 @@ namespace ZR.Admin.WebApi.Controllers var tabInfo = _CodeGeneraterService.GetTableInfo(dbName, tableName); if (tabInfo != null) { - GenTable genTable = new() - { - DbName = dbName, - BaseNameSpace = "ZR.",//导入默认命名空间前缀 - ModuleName = "business",//导入默认模块名 - ClassName = CodeGeneratorTool.GetClassName(tableName), - BusinessName = CodeGeneratorTool.GetBusinessName(tableName), - FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author), - TableName = tableName, - TableComment = tabInfo?.Description, - FunctionName = tabInfo?.Description, - Create_by = userName, - }; + GenTable genTable = CodeGeneratorTool.InitTable(dbName, userName, tableName, tabInfo?.Description); genTable.TableId = GenTableService.ImportGenTable(genTable); if (genTable.TableId > 0) @@ -256,7 +244,7 @@ namespace ZR.Admin.WebApi.Controllers [HttpPost("genCode")] [Log(Title = "代码生成", BusinessType = BusinessType.GENCODE)] [ActionPermissionFilter(Permission = "tool:gen:code")] - public IActionResult Generate([FromBody] GenerateDto dto) + public IActionResult CodeGenerate([FromBody] GenerateDto dto) { if (dto.TableId <= 0) { @@ -274,7 +262,6 @@ namespace ZR.Admin.WebApi.Controllers //下载文件 FileHelper.ZipGenCode(dto); - //HttpContext.Response.Headers.Add("Content-disposition", $"attachment; filename={zipFileName}"); return SUCCESS(new { path = "/Generatecode/" + dto.ZipFileName, fileName = dto.ZipFileName }); } diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt index c3dd147..0996ead 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt @@ -101,14 +101,15 @@ $end //从 Dto 映射到 实体 var model = parm.Adapt<${replaceDto.ModelTypeName}>().ToCreate(HttpContext); - return SUCCESS(_${replaceDto.ModelTypeName}Service.Insert(model, it => new + var response = _${replaceDto.ModelTypeName}Service.Insert(model, it => new { $foreach(item in genTable.Columns) $if((item.IsInsert)) it.$item.CsharpField, $end ${end} - })); + }); + return ToResponse(response); } /// @@ -137,7 +138,7 @@ $end ${end} }); - return SUCCESS(response); + return ToResponse(response); } /// @@ -154,7 +155,7 @@ ${end} var response = _${replaceDto.ModelTypeName}Service.Delete(idsArr); - return SUCCESS(response); + return ToResponse(response); } /// diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt index 832e1be..0c637b2 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt @@ -302,31 +302,31 @@ $end if (valid) { $foreach(item in genTable.Columns) $if(item.HtmlType == "checkbox") - this.form.${item.ColumnName} = this.form.${item.columnName}Checked.toString(); + this.form.${item.ColumnName} = this.form.${item.columnName}Checked.toString(); $end $end console.log(JSON.stringify(this.form)); - if (this.form.${replaceDto.FistLowerPk} != undefined || this.title === "修改数据") { - update${genTable.BusinessName}(this.form).then((res) => { - if (!res.data) { - this.msgError("修改失败"); - return; - } + if (this.form.${replaceDto.FistLowerPk} != undefined && this.title === "修改数据") { + update${genTable.BusinessName}(this.form) + .then((res) => { this.msgSuccess("修改成功"); this.open = false; this.getList(); - }); + }) + .catch((err) => { + //TODO 错误逻辑 + }); } else { - add${genTable.BusinessName}(this.form).then((res) => { - if (!res.data) { - this.msgError("新增失败"); - return; - } + add${genTable.BusinessName}(this.form) + .then((res) => { this.msgSuccess("新增成功"); this.open = false; this.getList(); - }); + }) + .catch((err) => { + //TODO 错误逻辑 + }); } } }); diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 0a1b9e3..41bd5a1 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -37,15 +37,7 @@ namespace ZR.CodeGenerator _option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi"; dto.GenOptions = _option; - GenerateSingle(dto); - } - /// - /// 单表生成代码 - /// - /// - public static void GenerateSingle(GenerateDto dto) - { string PKName = "Id"; string PKType = "int"; ReplaceDto replaceDto = new(); @@ -98,7 +90,7 @@ namespace ZR.CodeGenerator } } - #region 生成Model + #region 读取模板 /// /// 生成实体类Model @@ -128,9 +120,6 @@ namespace ZR.CodeGenerator var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPath, result)); } - #endregion - - #region 生成Repository /// /// 生成Repository层代码文件 @@ -146,10 +135,6 @@ namespace ZR.CodeGenerator generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result)); } - #endregion - - #region 生成Service - /// /// 生成Service文件 /// @@ -166,9 +151,6 @@ namespace ZR.CodeGenerator generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, result2)); } - #endregion - - #region 生成Controller /// /// 生成控制器ApiControllers文件 /// @@ -181,11 +163,9 @@ namespace ZR.CodeGenerator var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result)); } - #endregion - #region 生成Vue页面 & api /// - /// 6、生成Vue页面 + /// 生成Vue页面 private static void GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, $"{generateDto.GenTable.BusinessName}.vue"); @@ -200,8 +180,9 @@ namespace ZR.CodeGenerator var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result)); } + /// - /// 7、生成vue页面api + /// 生成vue页面api /// /// /// @@ -215,10 +196,11 @@ namespace ZR.CodeGenerator generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result)); } - #endregion - - #region 生成SQL - + /// + /// 生成SQL + /// + /// + /// public static void GenerateSql(ReplaceDto replaceDto, GenerateDto generateDto) { string fullPath = Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql"); @@ -277,10 +259,6 @@ namespace ZR.CodeGenerator /// 业务名 public static string GetBusinessName(string tableName) { - //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("_", ""); } @@ -334,6 +312,34 @@ namespace ZR.CodeGenerator } #endregion + #region 初始化信息 + + /// + /// 初始化表信息 + /// + /// + /// + /// + /// + /// + public static GenTable InitTable(string dbName, string userName, string tableName, string desc) + { + GenTable genTable = new() + { + DbName = dbName, + BaseNameSpace = "ZR.",//导入默认命名空间前缀 + ModuleName = "business",//导入默认模块名 + ClassName = GetClassName(tableName), + BusinessName = GetBusinessName(tableName), + FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author), + TableName = tableName, + TableComment = desc, + FunctionName = desc, + Create_by = userName, + }; + return genTable; + } + /// /// 初始化列属性字段数据 /// @@ -344,68 +350,76 @@ namespace ZR.CodeGenerator List genTableColumns = new(); foreach (var column in dbColumnInfos) { - GenTableColumn genTableColumn = new() - { - ColumnName = FirstLowerCase(column.DbColumnName), - ColumnComment = column.ColumnDescription, - IsPk = column.IsPrimarykey, - ColumnType = column.DataType, - TableId = genTable.TableId, - TableName = genTable.TableName, - CsharpType = GetCSharpDatatype(column.DataType), - CsharpField = column.DbColumnName.Substring(0, 1).ToUpper() + column.DbColumnName[1..], - IsRequired = !column.IsNullable, - IsIncrement = column.IsIdentity, - Create_by = genTable.Create_by, - Create_time = DateTime.Now, - IsInsert = !column.IsIdentity,//非自增字段都需要插入 - IsEdit = true, - IsQuery = false, - HtmlType = GenConstants.HTML_INPUT - }; - - if (GenConstants.imageFiled.Any(f => column.DbColumnName.ToLower().Contains(f.ToLower()))) - { - genTableColumn.HtmlType = GenConstants.HTML_IMAGE_UPLOAD; - } - else if (GenConstants.COLUMNTYPE_TIME.Any(f => genTableColumn.CsharpType.ToLower().Contains(f.ToLower()))) - { - genTableColumn.HtmlType = GenConstants.HTML_DATETIME; - } - else if (GenConstants.radioFiled.Any(f => column.DbColumnName.EndsWith(f, StringComparison.OrdinalIgnoreCase)) || - GenConstants.radioFiled.Any(f => column.DbColumnName.StartsWith(f, StringComparison.OrdinalIgnoreCase))) - { - genTableColumn.HtmlType = GenConstants.HTML_RADIO; - } - else if (GenConstants.selectFiled.Any(f => column.DbColumnName == f) || - GenConstants.selectFiled.Any(f => column.DbColumnName.EndsWith(f, StringComparison.OrdinalIgnoreCase))) - { - genTableColumn.HtmlType = GenConstants.HTML_SELECT; - } - else if (column.Length > 500) - { - genTableColumn.HtmlType = GenConstants.HTML_TEXTAREA; - } - //编辑字段 - if (column.IsIdentity || column.IsPrimarykey || GenConstants.COLUMNNAME_NOT_EDIT.Any(f => column.DbColumnName.Contains(f))) - { - genTableColumn.IsEdit = false; - } - //列表字段 - if (!GenConstants.COLUMNNAME_NOT_LIST.Any(f => column.DbColumnName.Contains(f) && !column.IsPrimarykey)) - { - genTableColumn.IsList = true; - } - //时间类型初始化between范围查询 - if (genTableColumn.CsharpType == GenConstants.TYPE_DATE) - { - genTableColumn.QueryType = "BETWEEN"; - } - genTableColumns.Add(genTableColumn); + genTableColumns.Add(InitColumnField(genTable, column)); } return genTableColumns; } + private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column) + { + GenTableColumn genTableColumn = new() + { + ColumnName = FirstLowerCase(column.DbColumnName), + ColumnComment = column.ColumnDescription, + IsPk = column.IsPrimarykey, + ColumnType = column.DataType, + TableId = genTable.TableId, + TableName = genTable.TableName, + CsharpType = GetCSharpDatatype(column.DataType), + CsharpField = column.DbColumnName.Substring(0, 1).ToUpper() + column.DbColumnName[1..], + IsRequired = !column.IsNullable, + IsIncrement = column.IsIdentity, + Create_by = genTable.Create_by, + Create_time = DateTime.Now, + IsInsert = !column.IsIdentity,//非自增字段都需要插入 + IsEdit = true, + IsQuery = false, + HtmlType = GenConstants.HTML_INPUT + }; + + if (GenConstants.imageFiled.Any(f => column.DbColumnName.ToLower().Contains(f.ToLower()))) + { + genTableColumn.HtmlType = GenConstants.HTML_IMAGE_UPLOAD; + } + else if (GenConstants.COLUMNTYPE_TIME.Any(f => genTableColumn.CsharpType.ToLower().Contains(f.ToLower()))) + { + genTableColumn.HtmlType = GenConstants.HTML_DATETIME; + } + else if (GenConstants.radioFiled.Any(f => column.DbColumnName.EndsWith(f, StringComparison.OrdinalIgnoreCase)) || + GenConstants.radioFiled.Any(f => column.DbColumnName.StartsWith(f, StringComparison.OrdinalIgnoreCase))) + { + genTableColumn.HtmlType = GenConstants.HTML_RADIO; + } + else if (GenConstants.selectFiled.Any(f => column.DbColumnName == f) || + GenConstants.selectFiled.Any(f => column.DbColumnName.EndsWith(f, StringComparison.OrdinalIgnoreCase))) + { + genTableColumn.HtmlType = GenConstants.HTML_SELECT; + } + else if (column.Length > 500) + { + genTableColumn.HtmlType = GenConstants.HTML_TEXTAREA; + } + //编辑字段 + if (column.IsIdentity || column.IsPrimarykey || GenConstants.COLUMNNAME_NOT_EDIT.Any(f => column.DbColumnName.Contains(f))) + { + genTableColumn.IsEdit = false; + } + //列表字段 + if (!GenConstants.COLUMNNAME_NOT_LIST.Any(f => column.DbColumnName.Contains(f) && !column.IsPrimarykey)) + { + genTableColumn.IsList = true; + } + //时间类型初始化between范围查询 + if (genTableColumn.CsharpType == GenConstants.TYPE_DATE) + { + genTableColumn.QueryType = "BETWEEN"; + } + + return genTableColumn; + } + + #endregion + /// /// 初始化Jnt模板 /// diff --git a/ZR.CodeGenerator/Service/CodeGeneraterService.cs b/ZR.CodeGenerator/Service/CodeGeneraterService.cs index 3b2990d..52901ad 100644 --- a/ZR.CodeGenerator/Service/CodeGeneraterService.cs +++ b/ZR.CodeGenerator/Service/CodeGeneraterService.cs @@ -49,7 +49,7 @@ namespace ZR.CodeGenerator.Service var tableList = GetSugarDbContext(dbName).DbMaintenance.GetTableInfoList(true); if (!string.IsNullOrEmpty(tableName)) { - return tableList.Where(f => f.Name.ToLower() == (tableName.ToLower())).FirstOrDefault(); + return tableList.Where(f => f.Name.Equals(tableName, System.StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); } return null; diff --git a/ZR.Vue/src/utils/request.js b/ZR.Vue/src/utils/request.js index ce72dd5..e67bdd3 100644 --- a/ZR.Vue/src/utils/request.js +++ b/ZR.Vue/src/utils/request.js @@ -57,7 +57,7 @@ service.interceptors.response.use(res => { }) return Promise.reject('无效的会话,或者会话已过期,请重新登录。') - } else if (code == 0 || code == 110 || code == 101 || code == 403 || code == 500) { + } else if (code == 0 || code == 1 || code == 110 || code == 101 || code == 403 || code == 500) { Message({ message: msg, type: 'error'