From 84aeb9b27b6cacd5db93360fbbb34869120acc7a 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: Thu, 2 Dec 2021 17:44:46 +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=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Admin.WebApi/ZR.Admin.WebApi.csproj | 4 + .../wwwroot/CodeGenTemplate/MySqlTemplate.txt | 2 +- .../wwwroot/CodeGenTemplate/SqlTemplate.txt | 2 +- .../CodeGenTemplate/TplControllers.txt | 12 +- .../{IServiceTemplate.txt => TplIService.txt} | 0 .../wwwroot/CodeGenTemplate/TplModel.txt | 2 +- .../{ServiceTemplate.txt => TplService.txt} | 0 .../wwwroot/CodeGenTemplate/TplVue.txt | 265 ++++++++++++++++++ .../{VueJsTemplate.txt => TplVueApi.txt} | 10 +- ZR.CodeGenerator/CodeGenerateTemplate.cs | 72 ----- ZR.CodeGenerator/CodeGeneratorTool.cs | 135 ++------- ZR.CodeGenerator/Model/ReplaceDto.cs | 47 +--- ZR.Common/Tools.cs | 1 + ZR.Model/System/Generate/GenTableColumn.cs | 12 +- 14 files changed, 329 insertions(+), 235 deletions(-) rename ZR.Admin.WebApi/wwwroot/CodeGenTemplate/{IServiceTemplate.txt => TplIService.txt} (100%) rename ZR.Admin.WebApi/wwwroot/CodeGenTemplate/{ServiceTemplate.txt => TplService.txt} (100%) create mode 100644 ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt rename ZR.Admin.WebApi/wwwroot/CodeGenTemplate/{VueJsTemplate.txt => TplVueApi.txt} (81%) diff --git a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj index c32c5c0..3bfc425 100644 --- a/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj +++ b/ZR.Admin.WebApi/ZR.Admin.WebApi.csproj @@ -17,6 +17,10 @@ + + + + diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt index 612e051..dd44cd0 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt @@ -1,6 +1,6 @@ -- 菜单 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, remark) -VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', '', sysdate(), '${genTable.functionName}菜单'); +VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${genTable.BusinessName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', '', sysdate(), '${genTable.functionName}菜单'); -- 按钮父菜单id SELECT @menuId := LAST_INSERT_ID(); diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt index c061fc2..df62b1c 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt @@ -1,6 +1,6 @@ -- ${genTable.functionName}菜单 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time, remark) -VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', GETDATE(), '${genTable.functionName}'); +VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${genTable.BusinessName}', '${genTable.ModuleName}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', GETDATE(), '${genTable.functionName}'); -- 按钮父菜单id declare @menuId int = @@identity diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt index 2ea1d4d..8038bd1 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt @@ -93,7 +93,11 @@ $end return SUCCESS(_${replaceDto.ModelTypeName}Service.Insert(model, it => new { -${InsertColumn} +$foreach(item in genTable.Columns) +$if((item.IsInsert)) + it.$item.CsharpField, +$end +${end} })); } @@ -116,7 +120,11 @@ ${InsertColumn} var response = _${replaceDto.ModelTypeName}Service.Update(w => w.${replaceDto.PKName} == model.${replaceDto.PKName}, it => new ${replaceDto.ModelTypeName}() { //Update 字段映射 -${UpdateColumn} +$foreach(item in genTable.Columns) +$if((item.IsEdit)) + $item.CsharpField = model.$item.CsharpField, +$end +${end} }); return SUCCESS(response); diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt similarity index 100% rename from ZR.Admin.WebApi/wwwroot/CodeGenTemplate/IServiceTemplate.txt rename to ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt index e43773c..a6e326d 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt @@ -10,7 +10,7 @@ namespace ${options.ModelsNamespace}.Models /// @author ${replaceDto.Author} /// @date ${replaceDto.AddTime} /// - [SugarTable("${replaceDto.TableName}")] + [SugarTable("${genTable.TableName}")] public class ${replaceDto.ModelTypeName} { $foreach(item in genTable.Columns) diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt similarity index 100% rename from ZR.Admin.WebApi/wwwroot/CodeGenTemplate/ServiceTemplate.txt rename to ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt new file mode 100644 index 0000000..d03f985 --- /dev/null +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt @@ -0,0 +1,265 @@ + + + diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt similarity index 81% rename from ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt rename to ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt index fbbe669..9b44308 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueJsTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVueApi.txt @@ -4,7 +4,7 @@ * ${genTable.functionName}分页查询 * @param {查询条件} data */ -export function list${replaceDto.ModelTypeName}(query) { +export function list${genTable.BusinessName}(query) { return request({ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/list', method: 'get', @@ -16,7 +16,7 @@ export function list${replaceDto.ModelTypeName}(query) { * 新增${genTable.functionName} * @param data */ -export function add${replaceDto.ModelTypeName}(data) { +export function add${genTable.BusinessName}(data) { return request({ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}', method: 'post', @@ -28,7 +28,7 @@ export function add${replaceDto.ModelTypeName}(data) { * 修改${genTable.functionName} * @param data */ -export function update${replaceDto.ModelTypeName}(data) { +export function update${genTable.BusinessName}(data) { return request({ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}', method: 'PUT', @@ -40,7 +40,7 @@ export function update${replaceDto.ModelTypeName}(data) { * 获取${genTable.functionName}详情 * @param {Id} */ -export function get${replaceDto.ModelTypeName}(id) { +export function get${genTable.BusinessName}(id) { return request({ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + id, method: 'get' @@ -51,7 +51,7 @@ export function get${replaceDto.ModelTypeName}(id) { * 删除${genTable.functionName} * @param {主键} pid */ -export function del${replaceDto.ModelTypeName}(pid) { +export function del${genTable.BusinessName}(pid) { return request({ url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + pid, method: 'delete' diff --git a/ZR.CodeGenerator/CodeGenerateTemplate.cs b/ZR.CodeGenerator/CodeGenerateTemplate.cs index b05facc..6cab4db 100644 --- a/ZR.CodeGenerator/CodeGenerateTemplate.cs +++ b/ZR.CodeGenerator/CodeGenerateTemplate.cs @@ -42,39 +42,6 @@ namespace ZR.CodeGenerator #region vue 模板 - /// - /// 生成vuejs模板,目前只有上传文件方法 - /// - /// - /// - /// - public static void TplVueJsMethod(GenTableColumn dbFieldInfo, ReplaceDto replaceDto) - { - string columnName = dbFieldInfo.ColumnName; - var sb = new StringBuilder(); - - if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD)) - { - sb.AppendLine($" //文件上传成功方法"); - sb.AppendLine($" handleUpload{dbFieldInfo.CsharpField}Success(res, file) {{"); - sb.AppendLine($" this.form.{columnName} = res.data;"); - sb.AppendLine($" // this.form.{columnName} = URL.createObjectURL(file.raw);"); - sb.AppendLine($" // this.$refs.upload.clearFiles();"); - sb.AppendLine($" }},"); - replaceDto.VueBeforeUpload = TplJsBeforeUpload(); - replaceDto.VueUploadUrl = TplJsUploadUrl(); - } - //有下拉框选项初列表查询数据 - if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType)) - { - sb.AppendLine(@$" // {dbFieldInfo.ColumnComment}字典翻译"); - sb.AppendLine($" {columnName}Format(row, column) {{"); - sb.AppendLine(@$" return this.selectDictLabel(this.{columnName}Options, row.{columnName});"); - sb.AppendLine(@" },"); - } - replaceDto.VueJsMethod += sb.ToString(); - } - /// /// Vue rules /// @@ -264,15 +231,6 @@ namespace ZR.CodeGenerator sb.AppendLine(" "); sb.AppendLine(" "); } - //else if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_RADIO)) - //{ - // vueViewListContent += $" \r\n"; - // vueViewListContent += " \r\n"; - // vueViewListContent += " \r\n"; - //} else if (dbFieldInfo.IsList) { sb.AppendLine($" "); @@ -280,36 +238,6 @@ namespace ZR.CodeGenerator return sb.ToString(); } - /// - /// 文件上传前方法判断 - /// - /// - public static string TplJsBeforeUpload() - { - StringBuilder sb = new StringBuilder(); - sb.AppendLine(@" //文件上传前判断方法"); - sb.AppendLine(@" beforeFileUpload(file) {"); - sb.AppendLine(@" const isJPG = file.type === ""image/jpeg"";"); - sb.AppendLine(@" const isLt2M = file.size / 1024 / 1024 < 2;"); - sb.AppendLine(@" if (!isJPG) {"); - sb.AppendLine(@" this.msgError(""上传图片只能是 JPG 格式!"");"); - sb.AppendLine(@" }"); - sb.AppendLine(@" if (!isLt2M) {"); - sb.AppendLine(@" this.msgError(""上传图片大小不能超过 2MB!"");"); - sb.AppendLine(@" }"); - sb.AppendLine(@" return isJPG && isLt2M;"); - sb.AppendLine(@" },"); - - return sb.ToString(); - } - public static string TplJsUploadUrl() - { - StringBuilder sb = new StringBuilder(); - sb.AppendLine(@" //文件上传前判断方法"); - sb.AppendLine(@" uploadUrl: process.env.VUE_APP_BASE_API + ""upload/SaveFile"","); - - return sb.ToString(); - } #endregion public static string QueryExp(string propertyName, string queryType) diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 94f721a..1c83b66 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Text; using ZR.CodeGenerator.Model; using ZR.Model.System.Generate; @@ -51,59 +50,33 @@ namespace ZR.CodeGenerator string PKType = "int"; ReplaceDto replaceDto = new(); replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名 - replaceDto.TableName = dto.GenTable.TableName;//表名 replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限 replaceDto.Author = dto.GenTable.FunctionAuthor; - replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName); - StringBuilder sb1 = new StringBuilder(); - StringBuilder sb2 = new StringBuilder(); + //StringBuilder sb1 = new StringBuilder(); + //StringBuilder sb2 = new StringBuilder(); //循环表字段信息 foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns) { string columnName = dbFieldInfo.ColumnName; - if (dbFieldInfo.IsInsert || dbFieldInfo.IsEdit) - { - replaceDto.VueViewFormResetHtml += $" {columnName}: undefined,\r\n"; - } if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement) { PKName = dbFieldInfo.CsharpField; PKType = dbFieldInfo.CsharpType; } - //编辑字段 - if (dbFieldInfo.IsEdit) + if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD)) { - replaceDto.UpdateColumn += $" {dbFieldInfo.CsharpField} = model.{dbFieldInfo.CsharpField}, \n"; + replaceDto.UploadFile = 1; } - //新增字段 - if (dbFieldInfo.IsInsert) - { - replaceDto.InsertColumn += $" it.{dbFieldInfo.CsharpField}, \n"; - } - if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType)) - { - sb1.AppendLine($" // {dbFieldInfo.ColumnComment}选项列表"); - sb1.AppendLine($" {FirstLowerCase(dbFieldInfo.CsharpField)}Options: [],"); - - sb2.AppendLine($" this.getDicts(\"{dbFieldInfo.DictType}\").then((response) => {{"); - sb2.AppendLine($" this.{FirstLowerCase(dbFieldInfo.CsharpField)}Options = response.data;"); - sb2.AppendLine(" })"); - } - CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto); - CodeGenerateTemplate.TplVueJsMethod(dbFieldInfo, replaceDto); + replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo); replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo); replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo); replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo); } - replaceDto.VueDataContent = sb1.ToString(); - replaceDto.MountedMethod = sb2.ToString(); - replaceDto.VueJsMethod += replaceDto.VueBeforeUpload; - replaceDto.VueDataContent += replaceDto.VueUploadUrl; replaceDto.PKName = PKName; replaceDto.PKType = PKType; @@ -112,7 +85,6 @@ namespace ZR.CodeGenerator GenerateModels(replaceDto, dto); GenerateInputDto(replaceDto, dto); GenerateRepository(replaceDto, dto); - GenerateIService(replaceDto, dto); GenerateService(replaceDto, dto); GenerateControllers(replaceDto, dto); GenerateVueViews(replaceDto, dto); @@ -171,7 +143,6 @@ namespace ZR.CodeGenerator private static void GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, "Repositories", $"{replaceDto.ModelTypeName}Repository.cs"); - var tpl = FileHelper.ReadJtTemplate("TplRepository.txt"); var result = tpl.Render(); @@ -181,20 +152,6 @@ namespace ZR.CodeGenerator #endregion #region 生成Service - /// - /// 生成IService文件 - /// - /// - /// 替换实体 - private static void GenerateIService(ReplaceDto replaceDto, GenerateDto generateDto) - { - var fullPath = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, "Business", "IBusService", $"I{replaceDto.ModelTypeName}Service.cs"); - - var tpl = FileHelper.ReadJtTemplate("IServiceTemplate.txt"); - - var result = tpl.Render(); - generateDto.GenCodes.Add(new GenCode(4, "IService", fullPath, result)); - } /// /// 生成Service文件 @@ -202,11 +159,16 @@ namespace ZR.CodeGenerator private static void GenerateService(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, "Business", $"{replaceDto.ModelTypeName}Service.cs"); - - var tpl = FileHelper.ReadJtTemplate("ServiceTemplate.txt"); + var tpl = FileHelper.ReadJtTemplate("TplService.txt"); var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(4, "Service", fullPath, result)); + + var fullPath2 = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, "Business", "IBusService", $"I{replaceDto.ModelTypeName}Service.cs"); + var tpl2 = FileHelper.ReadJtTemplate("TplIService.txt"); + + var result2 = tpl2.Render(); + generateDto.GenCodes.Add(new GenCode(4, "IService", fullPath2, result2)); } #endregion @@ -215,45 +177,12 @@ namespace ZR.CodeGenerator /// /// 生成控制器ApiControllers文件 /// - //private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) - //{ - // var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs"); - - // var content = FileHelper.ReadTemplate("ControllersTemplate.txt") - // .Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace) - // .Replace("{ServicesNamespace}", _option.ServicesNamespace) - // .Replace("{ModelsNamespace}", _option.ModelsNamespace) - // .Replace("{FunctionName}", generateDto.GenTable.FunctionName) - // .Replace("{ModelName}", replaceDto.ModelTypeName) - // .Replace("{Permission}", replaceDto.Permission) - // .Replace("{PrimaryKey}", replaceDto.PKName) - // .Replace("{ModuleName}", generateDto.GenTable.ModuleName) - // .Replace("{PKCsharpType}", replaceDto.PKType) - // .Replace("{Author}", replaceDto.Author) - // .Replace("{DateTime}", replaceDto.AddTime); - - // if (replaceDto.UpdateColumn != null) - // { - // content = content.Replace("{UpdateColumn}", replaceDto.UpdateColumn.TrimEnd('\n')); - // } - // if (replaceDto.InsertColumn != null) - // { - // content = content.Replace("{InsertColumn}", replaceDto.InsertColumn.TrimEnd('\n')); - // } - // if (replaceDto.QueryCondition != null) - // { - // content = content.Replace("{QueryCondition}", replaceDto.QueryCondition); - // } - // generateDto.GenCodes.Add(new GenCode(5, "控制器", fullPath, content)); - //} private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) { var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs"); - var tpl = FileHelper.ReadJtTemplate("TplControllers.txt"); + tpl.Set("QueryCondition", replaceDto.QueryCondition); - tpl.Set("InsertColumn", replaceDto.InsertColumn.TrimEnd('\n')); - tpl.Set("UpdateColumn", replaceDto.UpdateColumn.TrimEnd('\n')); var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(5, "Controller", fullPath, result)); } @@ -264,24 +193,17 @@ namespace ZR.CodeGenerator /// 6、生成Vue页面 private static void GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto) { - var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, replaceDto.ViewsFileName, "index.vue"); + var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, $"{generateDto.GenTable.BusinessName}.vue"); - var content = FileHelper.ReadTemplate("VueTemplate.txt") - .Replace("{fileClassName}", replaceDto.ViewsFileName) - .Replace("{VueViewListContent}", replaceDto.VueViewListHtml)//查询 table列 - .Replace("{VueViewFormContent}", replaceDto.VueViewFormHtml)//添加、修改表单 - .Replace("{ModelTypeName}", replaceDto.ModelTypeName) - .Replace("{Permission}", replaceDto.PermissionPrefix) - .Replace("{VueViewFormResetHtml}", replaceDto.VueViewFormResetHtml) - .Replace("{vueJsMethod}", replaceDto.VueJsMethod) - .Replace("{vueQueryFormHtml}", replaceDto.VueQueryFormHtml) - .Replace("{VueDataContent}", replaceDto.VueDataContent) - .Replace("{PrimaryKey}", FirstLowerCase(replaceDto.PKName)) - .Replace("{MountedMethod}", replaceDto.MountedMethod) - .Replace("{ModuleName}", generateDto.GenTable.ModuleName) - .Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则 + var tpl = FileHelper.ReadJtTemplate("TplVue.txt"); + tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml); + tpl.Set("VueViewEditFormRuleContent", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则 + tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单 + tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列 + tpl.Set("lowerBusinessName", FirstLowerCase(generateDto.GenTable.BusinessName)); - generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, content)); + var result = tpl.Render(); + generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result)); } /// /// 7、生成vue页面api @@ -291,9 +213,8 @@ namespace ZR.CodeGenerator /// public static void GenerateVueJs(ReplaceDto replaceDto, GenerateDto generateDto) { - string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName, replaceDto.ViewsFileName + ".js"); - - var tpl = FileHelper.ReadJtTemplate("VueJsTemplate.txt"); + string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName, FirstLowerCase(generateDto.GenTable.BusinessName) + ".js"); + var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt"); var result = tpl.Render(); generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result)); @@ -301,11 +222,11 @@ namespace ZR.CodeGenerator #endregion - #region 8、生成SQL + #region 生成SQL public static void GenerateSql(ReplaceDto replaceDto, GenerateDto generateDto) { - string fullPath = Path.Combine(generateDto.GenCodePath, replaceDto.ViewsFileName + ".sql"); + string fullPath = Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql"); var tempName = ""; switch (generateDto.DbType) @@ -363,7 +284,7 @@ namespace ZR.CodeGenerator { int lastIndex = tableName.LastIndexOf("_"); int nameLength = tableName.Length; - string businessName = tableName.Substring(nameLength - lastIndex + 1); + string businessName = tableName[(nameLength - lastIndex + 1)..]; return businessName.ToLower(); } @@ -512,7 +433,7 @@ namespace ZR.CodeGenerator options.TagFlag = '$'; options.OutMode = OutMode.Auto; //options.DisableeLogogram = true;//禁用简写 - options.Data.Set("${flag}", "$");//特殊标签替换 + options.Data.Set("refs", "$");//特殊标签替换 options.Data.Set("replaceDto", replaceDto); options.Data.Set("options", dto.GenOptions); options.Data.Set("genTable", dto.GenTable); diff --git a/ZR.CodeGenerator/Model/ReplaceDto.cs b/ZR.CodeGenerator/Model/ReplaceDto.cs index d3cd383..45aa7c5 100644 --- a/ZR.CodeGenerator/Model/ReplaceDto.cs +++ b/ZR.CodeGenerator/Model/ReplaceDto.cs @@ -1,9 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using ZR.Model.System.Generate; namespace ZR.CodeGenerator.Model { @@ -25,19 +20,6 @@ namespace ZR.CodeGenerator.Model /// C#类名 /// public string ModelTypeName { get; set; } - /// - /// 数据库表名 - /// - public string TableName { get; set; } - /// - /// 修改列 - /// - public string UpdateColumn { get; set; } - /// - /// 插入列 - /// - public string InsertColumn { get; set; } - //vue、api public string VueViewFormResetHtml { get; set; } /// @@ -52,10 +34,7 @@ namespace ZR.CodeGenerator.Model /// 前端搜索表单html /// public string VueQueryFormHtml { get; set; } - /// - /// vue js方法 - /// - public string VueJsMethod { get; set; } + /// /// vue 添加、编辑表单规则 /// @@ -64,32 +43,12 @@ namespace ZR.CodeGenerator.Model /// 查询条件 /// public string QueryCondition { get; set; } = ""; - ///// - ///// 查询属性 - ///// - //public string QueryProperty { get; set; } - /// - /// vue data内容 - /// - public string VueDataContent { get; set; } - /// - /// vue mounted 方法 - /// - public string MountedMethod { get; set; } - /// - /// views、js文件名 - /// - public string ViewsFileName { get; set; } - /// - /// 上传前js - /// - public string VueBeforeUpload { get; set; } /// /// 上传URL data /// - public string VueUploadUrl { get; set; } - //public bool UploadImage{ get; set; } + //public string VueUploadUrl { get; set; } + public int UploadFile { get; set; } = 0; public string Author { get; set; } public string AddTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd"); } diff --git a/ZR.Common/Tools.cs b/ZR.Common/Tools.cs index b33d9e6..1215a39 100644 --- a/ZR.Common/Tools.cs +++ b/ZR.Common/Tools.cs @@ -14,6 +14,7 @@ namespace ZR.Common public static long[] SpitLongArrary(string str) { if (string.IsNullOrEmpty(str)) { return Array.Empty(); } + str = str.TrimStart(',').TrimEnd(','); string[] strIds = str.Split(',', (char)StringSplitOptions.RemoveEmptyEntries); long[] infoIdss = Array.ConvertAll(strIds, s => long.Parse(s)); return infoIdss; diff --git a/ZR.Model/System/Generate/GenTableColumn.cs b/ZR.Model/System/Generate/GenTableColumn.cs index 2d256b5..689ec4e 100644 --- a/ZR.Model/System/Generate/GenTableColumn.cs +++ b/ZR.Model/System/Generate/GenTableColumn.cs @@ -25,6 +25,14 @@ namespace ZR.Model.System.Generate public string ColumnType { get; set; } public string CsharpType { get; set; } public string CsharpField { get; set; } + [SugarColumn(IsIgnore = true)] + public string CsharpField2 + { + get + { + return CsharpField.Substring(0, 1).ToLower() + CsharpField[1..]; + } + } /// /// 是否主键(1是) /// @@ -61,7 +69,7 @@ namespace ZR.Model.System.Generate /// /// 字典类型 /// - public string DictType { get; set; } + public string DictType { get; set; } = ""; #region 额外字段 [SugarColumn(IsIgnore = true)] @@ -70,7 +78,7 @@ namespace ZR.Model.System.Generate get { string[] arr = new string[] { "int", "long" }; - return (!IsRequired &&(arr.Any(f => f.Contains(CsharpType))) || typeof(DateTime).Name == CsharpType) ? "?" : ""; + return (!IsRequired && (arr.Any(f => f.Contains(CsharpType))) || typeof(DateTime).Name == CsharpType) ? "?" : ""; } } ///