diff --git a/ZR.Admin.WebApi/Template/ControllersTemplate.txt b/ZR.Admin.WebApi/Template/ControllersTemplate.txt index 6d8d8b2..fb276b9 100644 --- a/ZR.Admin.WebApi/Template/ControllersTemplate.txt +++ b/ZR.Admin.WebApi/Template/ControllersTemplate.txt @@ -2,41 +2,40 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using ZR.Admin.WebApi.Filters; -using ZR.Admin.WebApi.Controllers; -using ZR.Service.Business; using SqlSugar; using Infrastructure; using Infrastructure.Attribute; using Infrastructure.Enums; using Infrastructure.Model; using Mapster; -using ZR.Admin.WebApi.Extensions; using {ModelsNamespace}.Dto; using {ModelsNamespace}.Models; +using {ServicesNamespace}.Business; +using {ApiControllerNamespace}.Extensions; +using {ApiControllerNamespace}.Filters; +using {ApiControllerNamespace}.Controllers; -namespace ZRAdmin.Controllers +namespace {ApiControllerNamespace}.Controllers { /// /// 代码自动生成 /// - [Verify] [Route("bus/{ModelName}")] - public class {ControllerName}Controller: BaseController + public class {ModelName}Controller: BaseController { /// - /// {FileName}接口 + /// {TableDesc}接口 /// - private readonly I{ServiceName} _{ServiceName}; + private readonly I{ModelName}Service _{ModelName}Service; - public {ControllerName}Controller(I{ServiceName} {ServiceName}) + public {ModelName}Controller(I{ModelName}Service {ModelName}Service) { - _{ServiceName} = {ServiceName}; + _{ModelName}Service = {ModelName}Service; } /// - /// 查询{FileName}列表 + /// 查询{TableDesc}列表 /// /// [HttpGet("list")] @@ -49,32 +48,32 @@ namespace ZRAdmin.Controllers //TODO 搜索条件 //predicate = predicate.And(m => m.Name.Contains(parm.Name)); - var response = _{ServiceName}.GetPages(predicate.ToExpression(), parm); + var response = _{ModelName}Service.GetPages(predicate.ToExpression(), parm); return SUCCESS(response); } /// - /// 查询{FileName}详情 + /// 查询{TableDesc}详情 /// - /// + /// /// - [HttpGet("{{primaryKey}}")] + [HttpGet("{{PrimaryKey}}")] [ActionPermissionFilter(Permission = "{Permission}:query")] - public IActionResult Get({KeyTypeName} {primaryKey}) + public IActionResult Get({KeyTypeName} {PrimaryKey}) { - var response = _{ServiceName}.GetId({primaryKey}); + var response = _{ModelName}Service.GetId({PrimaryKey}); return SUCCESS(response); } /// - /// 添加{FileName} + /// 添加{TableDesc} /// /// [HttpPost] [ActionPermissionFilter(Permission = "{Permission}:add")] - [Log(Title = "{FileName}添加", BusinessType = BusinessType.INSERT)] + [Log(Title = "{TableDesc}添加", BusinessType = BusinessType.INSERT)] public IActionResult Create([FromBody] {ModelName}Dto parm) { if (parm == null) @@ -85,16 +84,16 @@ namespace ZRAdmin.Controllers var addModel = parm.Adapt<{ModelName}>().ToCreate(); //addModel.CreateID = User.Identity.Name; - return SUCCESS(_{ServiceName}.Add(addModel)); + return SUCCESS(_{ModelName}Service.Add(addModel)); } /// - /// 更新{FileName} + /// 更新{TableDesc} /// /// [HttpPut] [ActionPermissionFilter(Permission = "{Permission}:update")] - [Log(Title = "{FileName}修改", BusinessType = BusinessType.UPDATE)] + [Log(Title = "{TableDesc}修改", BusinessType = BusinessType.UPDATE)] public IActionResult Update([FromBody] {ModelName}Dto parm) { if (parm == null) @@ -105,28 +104,27 @@ namespace ZRAdmin.Controllers var updateModel = parm.Adapt<{ModelName}>().ToCreate(); //updateModel.CreateID = User.Identity.Name; - var response = _{ServiceName}.Update(w => w.{primaryKey} == updateModel.{primaryKey}, it => new {ModelName}() + var response = _{ModelName}Service.Update(w => w.{PrimaryKey} == updateModel.{PrimaryKey}, it => new {ModelName}() { //TODO 字段映射 - {updateColumn} + {UpdateColumn} }); return SUCCESS(response); } /// - /// 删除{FileName} + /// 删除{TableDesc} /// /// - [HttpDelete("{{primaryKey}}")] + [HttpDelete("{{PrimaryKey}}")] [ActionPermissionFilter(Permission = "{Permission}:delete")] - [Log(Title = "{FileName}删除", BusinessType = BusinessType.DELETE)] - public IActionResult Delete({KeyTypeName} {primaryKey} = 0) + [Log(Title = "{TableDesc}删除", BusinessType = BusinessType.DELETE)] + public IActionResult Delete({KeyTypeName} {PrimaryKey} = 0) { - if ({primaryKey} <= 0) { return OutputJson(ApiResult.Error($"删除失败Id 不能为空")); } + if ({PrimaryKey} <= 0) { return OutputJson(ApiResult.Error($"删除失败Id 不能为空")); } - // 删除{FileName} - var response = _{ServiceName}.Delete({primaryKey}); + var response = _{ModelName}Service.Delete({PrimaryKey}); return SUCCESS(response); } diff --git a/ZR.Admin.WebApi/Template/VueJsTemplate.txt b/ZR.Admin.WebApi/Template/VueJsTemplate.txt index 719dfc7..36d1a40 100644 --- a/ZR.Admin.WebApi/Template/VueJsTemplate.txt +++ b/ZR.Admin.WebApi/Template/VueJsTemplate.txt @@ -4,11 +4,11 @@ * {ModelTypeDesc}分页查询 * @param {查询条件} data */ -export function list{ModelTypeName}(data) { +export function list{ModelTypeName}(query) { return request({ url: 'bus/{ModelTypeName}/list', method: 'get', - params: data, + params: query, }) } diff --git a/ZR.CodeGenerator/CodeGenerateTemplate.cs b/ZR.CodeGenerator/CodeGenerateTemplate.cs index e8c1796..fff483e 100644 --- a/ZR.CodeGenerator/CodeGenerateTemplate.cs +++ b/ZR.CodeGenerator/CodeGenerateTemplate.cs @@ -8,10 +8,18 @@ using ZR.CodeGenerator.CodeGenerator; namespace ZR.CodeGenerator { + /// + /// 代码生成模板 + /// public class CodeGenerateTemplate { #region Template + /// + /// 生成vuejs模板,目前只有上传文件方法 + /// + /// + /// public static string GetVueJsMethod(DbColumnInfo dbColumnInfo) { string columnName = CodeGeneratorTool.FirstLowerCase(dbColumnInfo.DbColumnName); diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 8667eab..6538bcd 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -35,19 +35,18 @@ namespace ZR.CodeGenerator /// public static void Generate(DbTableInfo dbTableInfo, GenerateDto dto) { - //_option.BaseNamespace = baseNamespace; + _option.BaseNamespace = "ZR."; //_option.TableList = listTable; _option.ReplaceTableNameStr = dto.replaceTableNameStr; - _option.DtosNamespace = "ZR.Model"; - _option.ModelsNamespace = "ZR.Model"; - _option.RepositoriesNamespace = "ZR.Repository"; - _option.IRepositoriesNamespace = "ZR.Repository"; - _option.IServicsNamespace = "ZR.Service"; - _option.ServicesNamespace = "ZR.Service"; - _option.ApiControllerNamespace = "ZR.Admin.WebApi"; - - CodeGeneraterService codeGeneraterService = new CodeGeneraterService(); + _option.DtosNamespace = _option.BaseNamespace + "Model"; + _option.ModelsNamespace = _option.BaseNamespace + "Model"; + _option.RepositoriesNamespace = _option.BaseNamespace + "Repository"; + _option.IRepositoriesNamespace = _option.BaseNamespace + "Repository"; + _option.IServicsNamespace = _option.BaseNamespace + "Service"; + _option.ServicesNamespace = _option.BaseNamespace + "Service"; + _option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi"; + CodeGeneraterService codeGeneraterService = new(); List listField = codeGeneraterService.GetColumnInfo(dto.dbName, dbTableInfo.Name); GenerateSingle(listField, dbTableInfo, dto); @@ -59,12 +58,10 @@ namespace ZR.CodeGenerator /// /// 表字段集合 /// 表信息 - /// 如果目标文件存在,是否覆盖。默认为false + /// public static void GenerateSingle(List listField, DbTableInfo tableInfo, GenerateDto dto) { - bool ifExsitedCovered = dto.coverd; var modelTypeName = GetModelClassName(tableInfo.Name);//表名对应C# 实体类名 - var modelTypeDesc = tableInfo.Description;//表描述 var primaryKey = "id";//主键 string keyTypeName = "int";//主键数据类型 @@ -115,30 +112,45 @@ namespace ZR.CodeGenerator vueViewEditFromRuleContent += CodeGenerateTemplate.GetFormRules(dbFieldInfo); InputDtoContent += CodeGenerateTemplate.GetDtoContent(dbFieldInfo); } + ReplaceDto replaceDto = new(); + replaceDto.KeyTypeName = keyTypeName; + replaceDto.PrimaryKey = primaryKey; + replaceDto.ModelTypeName = modelTypeName; + replaceDto.ModelProperty = modelContent; + replaceDto.TableName = tableInfo.Name; + replaceDto.TableDesc = tableInfo.Description; + replaceDto.InputDtoProperty = InputDtoContent; + replaceDto.updateColumn = updateColumn; + replaceDto.VueJsMethod = vueJsMethod; + replaceDto.VueViewEditFormContent = vueViewEditFromContent; + replaceDto.VueViewFormContent = vueViewFormContent; + replaceDto.VueViewEditFormRuleContent = vueViewEditFromRuleContent; + replaceDto.VueViewListContent = vueViewListContent; + if (dto.genFiles.Contains(1)) { - GenerateModels(_option.ModelsNamespace, modelTypeName, tableInfo.Name, modelContent, modelTypeDesc, keyTypeName, ifExsitedCovered); + GenerateModels(replaceDto, dto); } if (dto.genFiles.Contains(2)) { - GenerateInputDto(_option.ModelsNamespace, modelTypeName, modelTypeDesc, InputDtoContent, keyTypeName, ifExsitedCovered); + GenerateInputDto(replaceDto, dto); } if (dto.genFiles.Contains(3)) { - GenerateRepository(modelTypeName, modelTypeDesc, tableInfo.Name, keyTypeName, ifExsitedCovered); + GenerateRepository(replaceDto, dto); } if (dto.genFiles.Contains(4)) { - GenerateIService(_option.ModelsNamespace, modelTypeName, modelTypeDesc, keyTypeName, ifExsitedCovered); - GenerateService(_option.ModelsNamespace, modelTypeName, modelTypeDesc, keyTypeName, ifExsitedCovered); + GenerateIService(replaceDto, dto); + GenerateService(replaceDto, dto); } if (dto.genFiles.Contains(5)) { - GenerateControllers(modelTypeName, primaryKey, modelTypeDesc, keyTypeName, updateColumn, ifExsitedCovered); + GenerateControllers(replaceDto, dto); } if (dto.genFiles.Contains(6)) { - GenerateVueViews(modelTypeName, primaryKey, modelTypeDesc, vueViewListContent, vueViewFormContent, vueViewEditFromContent, vueViewEditFromBindContent, vueViewSaveBindContent, vueViewEditFromRuleContent, vueJsMethod, ifExsitedCovered); + GenerateVueViews(replaceDto, dto); } //GenerateIRepository(modelTypeName, modelTypeDesc, keyTypeName, ifExsitedCovered); //GenerateOutputDto(modelTypeName, modelTypeDesc, outputDtocontent, ifExsitedCovered); @@ -157,28 +169,28 @@ namespace ZR.CodeGenerator /// 数据库表实体内容 /// 主键数据类型 /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateModels(string modelsNamespace, string modelTypeName, string tableName, string modelContent, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false) + private static Tuple GenerateModels(ReplaceDto replaceDto, GenerateDto generateDto) { var parentPath = ".."; //../ZR.Model - var servicesPath = parentPath + "\\" + modelsNamespace + "\\Models\\"; + var servicesPath = parentPath + "\\" + _option.ModelsNamespace + "\\Models\\"; if (!Directory.Exists(servicesPath)) { Directory.CreateDirectory(servicesPath); } // ../ZR.Model/Models/User.cs - var fullPath = servicesPath + modelTypeName + ".cs"; + var fullPath = servicesPath + replaceDto.ModelTypeName + ".cs"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); var content = ReadTemplate("ModelTemplate.txt"); content = content - .Replace("{ModelsNamespace}", modelsNamespace) - .Replace("{ModelTypeName}", modelTypeName) - .Replace("{TableNameDesc}", modelTypeDesc) - .Replace("{KeyTypeName}", keyTypeName) - .Replace("{PropertyName}", modelContent) - .Replace("{TableName}", tableName); + .Replace("{ModelsNamespace}", _option.ModelsNamespace) + .Replace("{ModelTypeName}", replaceDto.ModelTypeName) + .Replace("{TableNameDesc}", replaceDto.TableDesc) + .Replace("{KeyTypeName}", replaceDto.KeyTypeName) + .Replace("{PropertyName}", replaceDto.ModelProperty) + .Replace("{TableName}", replaceDto.TableName); WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); } @@ -187,33 +199,29 @@ namespace ZR.CodeGenerator /// /// 生成InputDto文件 /// - /// - /// - /// - /// - /// - /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateInputDto(string modelsNamespace, string modelTypeName, string modelTypeDesc, string modelContent, string keyTypeName, bool ifExsitedCovered = false) + /// + /// + private static Tuple GenerateInputDto(ReplaceDto replaceDto, GenerateDto generateDto) { var parentPath = ".."; - var servicesPath = parentPath + "\\" + modelsNamespace + "\\Dto\\"; + var servicesPath = parentPath + "\\" + _option.ModelsNamespace + "\\Dto\\"; if (!Directory.Exists(servicesPath)) { Directory.CreateDirectory(servicesPath); } // ../ZR.Model/Dto/User.cs - var fullPath = servicesPath + modelTypeName + "Dto.cs"; + var fullPath = servicesPath + replaceDto.ModelTypeName + "Dto.cs"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); ; var content = ReadTemplate("InputDtoTemplate.txt"); content = content .Replace("{DtosNamespace}", _option.DtosNamespace) - .Replace("{ModelsNamespace}", modelsNamespace) - .Replace("{TableNameDesc}", modelTypeDesc) - .Replace("{KeyTypeName}", keyTypeName) - .Replace("{PropertyName}", modelContent) - .Replace("{ModelTypeName}", modelTypeName); + .Replace("{ModelsNamespace}", _option.ModelsNamespace) + .Replace("{TableNameDesc}", replaceDto.TableDesc) + .Replace("{KeyTypeName}", replaceDto.KeyTypeName) + .Replace("{PropertyName}", replaceDto.InputDtoProperty) + .Replace("{ModelTypeName}", replaceDto.ModelTypeName); WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); } @@ -229,7 +237,7 @@ namespace ZR.CodeGenerator /// 表名 /// /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateRepository(string modelTypeName, string modelTypeDesc, string tableName, string keyTypeName, bool ifExsitedCovered = false) + private static Tuple GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto) { var parentPath = ".."; var repositoryPath = parentPath + "\\" + _option.RepositoriesNamespace + "\\Repositories\\"; @@ -237,18 +245,18 @@ namespace ZR.CodeGenerator { Directory.CreateDirectory(repositoryPath); } - var fullPath = repositoryPath + "\\" + modelTypeName + "Repository.cs"; + var fullPath = repositoryPath + "\\" + replaceDto.ModelTypeName + "Repository.cs"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); var content = ReadTemplate("RepositoryTemplate.txt"); content = content.Replace("{ModelsNamespace}", _option.ModelsNamespace) //.Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace) .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace) - .Replace("{ModelTypeName}", modelTypeName) - .Replace("{TableNameDesc}", modelTypeDesc) - .Replace("{TableName}", tableName) - .Replace("{KeyTypeName}", keyTypeName); + .Replace("{ModelTypeName}", replaceDto.ModelTypeName) + .Replace("{TableNameDesc}", replaceDto.TableDesc) + .Replace("{TableName}", replaceDto.TableName) + .Replace("{KeyTypeName}", replaceDto.KeyTypeName); WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); } @@ -259,12 +267,7 @@ namespace ZR.CodeGenerator /// /// 生成IService文件 /// - /// - /// - /// - /// - /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateIService(string modelsNamespace, string modelTypeName, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false) + private static Tuple GenerateIService(ReplaceDto replaceDto, GenerateDto generateDto) { var parentPath = ".."; var iServicesPath = parentPath + "\\" + _option.IServicsNamespace + "\\Business\\IBusService\\"; @@ -272,18 +275,18 @@ namespace ZR.CodeGenerator { Directory.CreateDirectory(iServicesPath); } - var fullPath = $"{iServicesPath}\\I{modelTypeName}Service.cs"; + var fullPath = $"{iServicesPath}\\I{replaceDto.ModelTypeName}Service.cs"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); var content = ReadTemplate("IServiceTemplate.txt"); - content = content.Replace("{ModelsNamespace}", modelsNamespace) - .Replace("{TableNameDesc}", modelTypeDesc) + content = content.Replace("{ModelsNamespace}", _option.ModelsNamespace) + .Replace("{TableNameDesc}", replaceDto.TableDesc) .Replace("{DtosNamespace}", _option.DtosNamespace) .Replace("{IServicsNamespace}", _option.IServicsNamespace) .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace) - .Replace("{ModelTypeName}", modelTypeName) - .Replace("{KeyTypeName}", keyTypeName); + .Replace("{ModelTypeName}", replaceDto.ModelTypeName) + .Replace("{KeyTypeName}", replaceDto.KeyTypeName); WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); } @@ -291,12 +294,7 @@ namespace ZR.CodeGenerator /// /// 生成Service文件 /// - /// - /// - /// - /// - /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateService(string modelsNamespace, string modelTypeName, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false) + private static Tuple GenerateService(ReplaceDto replaceDto, GenerateDto generateDto) { var parentPath = ".."; var servicesPath = parentPath + "\\" + _option.ServicesNamespace + "\\Business\\"; @@ -304,20 +302,20 @@ namespace ZR.CodeGenerator { Directory.CreateDirectory(servicesPath); } - var fullPath = servicesPath + modelTypeName + "Service.cs"; + var fullPath = servicesPath + replaceDto.ModelTypeName + "Service.cs"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); var content = ReadTemplate("ServiceTemplate.txt"); content = content .Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace) .Replace("{DtosNamespace}", _option.DtosNamespace) .Replace("{IServicsNamespace}", _option.IServicsNamespace) - .Replace("{TableNameDesc}", modelTypeDesc) - .Replace("{ModelsNamespace}", modelsNamespace) + .Replace("{TableNameDesc}", replaceDto.TableDesc) + .Replace("{ModelsNamespace}", _option.ModelsNamespace) .Replace("{ServicesNamespace}", _option.ServicesNamespace) - .Replace("{ModelTypeName}", modelTypeName) - .Replace("{KeyTypeName}", keyTypeName); + .Replace("{ModelTypeName}", replaceDto.ModelTypeName) + .Replace("{KeyTypeName}", replaceDto.KeyTypeName); WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); } @@ -328,12 +326,7 @@ namespace ZR.CodeGenerator /// /// 生成控制器ApiControllers文件 /// - /// 实体类型名称 - /// 主键 - /// 实体描述 - /// - /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateControllers(string modelTypeName, string primaryKey, string modelTypeDesc, string keyTypeName, string updateColumn, bool ifExsitedCovered = false) + private static Tuple GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) { var parentPath = ".."; var servicesPath = parentPath + "\\" + _option.ApiControllerNamespace + "\\Controllers\\business\\"; @@ -341,22 +334,21 @@ namespace ZR.CodeGenerator { Directory.CreateDirectory(servicesPath); } - var fullPath = servicesPath + modelTypeName + "Controller.cs"; + var fullPath = servicesPath + replaceDto.ModelTypeName + "Controller.cs"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); var content = ReadTemplate("ControllersTemplate.txt"); content = content - //.Replace("{DtosNamespace}", _option.DtosNamespace) - .Replace("{ControllerName}", modelTypeName) + .Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace) + .Replace("{ServicesNamespace}", _option.ServicesNamespace) .Replace("{ModelsNamespace}", _option.ModelsNamespace) - .Replace("{FileName}", modelTypeDesc) - .Replace("{ServiceName}", modelTypeName + "Service") - .Replace("{ModelName}", modelTypeName) - .Replace("{Permission}", modelTypeName.ToLower()) - .Replace("{primaryKey}", primaryKey) - .Replace("{updateColumn}", updateColumn) - .Replace("{KeyTypeName}", keyTypeName); + .Replace("{TableDesc}", replaceDto.TableDesc) + .Replace("{ModelName}", replaceDto.ModelTypeName) + .Replace("{Permission}", replaceDto.ModelTypeName.ToLower()) + .Replace("{PrimaryKey}", replaceDto.PrimaryKey) + .Replace("{UpdateColumn}", replaceDto.updateColumn) + .Replace("{KeyTypeName}", replaceDto.KeyTypeName); WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); } @@ -365,55 +357,45 @@ namespace ZR.CodeGenerator #region 生成Vue页面 /// /// 生成Vue页面 - /// - /// 类名 - /// 表/类描述 - /// - /// - /// - /// - /// - /// - /// 如果目标文件存在,是否覆盖。默认为false - private static Tuple GenerateVueViews(string modelTypeName, string primaryKey, string modelTypeDesc, string vueViewListContent, string vueViewFromContent, string vueViewEditFromContent, string vueViewEditFromBindContent, string vueViewSaveBindContent, string vueViewEditFromRuleContent, string vueJsMethod, bool ifExsitedCovered = false) + private static Tuple GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto) { //var parentPath = "..\\CodeGenerate";//若要生成到项目中将路径改成 “..\\ZR.Vue\\src” var parentPath = "..\\ZR.Vue\\src"; - var servicesPath = parentPath + "\\views\\" + FirstLowerCase(modelTypeName); + var servicesPath = parentPath + "\\views\\" + FirstLowerCase(replaceDto.ModelTypeName); if (!Directory.Exists(servicesPath)) { Directory.CreateDirectory(servicesPath); } var fullPath = servicesPath + "\\" + "index.vue"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); ; var content = ReadTemplate("VueTemplate.txt"); content = content - .Replace("{fileClassName}", FirstLowerCase(modelTypeName)) - .Replace("{VueViewListContent}", vueViewListContent)//查询 table列 - .Replace("{VueViewFormContent}", vueViewFromContent)//添加、修改表单 - .Replace("{ModelTypeName}", modelTypeName) - .Replace("{Permission}", modelTypeName.ToLower()) - .Replace("{VueViewEditFormContent}", vueViewEditFromContent) - .Replace("{vueJsMethod}", vueJsMethod) + .Replace("{fileClassName}", FirstLowerCase(replaceDto.ModelTypeName)) + .Replace("{VueViewListContent}", replaceDto.VueViewListContent)//查询 table列 + .Replace("{VueViewFormContent}", replaceDto.VueViewFormContent)//添加、修改表单 + .Replace("{ModelTypeName}", replaceDto.ModelTypeName) + .Replace("{Permission}", replaceDto.ModelTypeName.ToLower()) + .Replace("{VueViewEditFormContent}", replaceDto.VueViewEditFormContent) + .Replace("{vueJsMethod}", replaceDto.VueJsMethod) //.Replace("{VueViewEditFromBindContent}", vueViewEditFromBindContent) //.Replace("{VueViewSaveBindContent}", vueViewSaveBindContent) - .Replace("{primaryKey}", FirstLowerCase(primaryKey)) - .Replace("{VueViewEditFormRuleContent}", vueViewEditFromRuleContent);//添加、修改表单验证规则 + .Replace("{primaryKey}", FirstLowerCase(replaceDto.PrimaryKey)) + .Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则 WriteAndSave(fullPath, content); //api js servicesPath = parentPath + "\\api\\"; Directory.CreateDirectory(servicesPath); - fullPath = servicesPath + "\\" + FirstLowerCase(modelTypeName) + ".js"; + fullPath = servicesPath + "\\" + FirstLowerCase(replaceDto.ModelTypeName) + ".js"; Console.WriteLine(fullPath); - if (File.Exists(fullPath) && !ifExsitedCovered) + if (File.Exists(fullPath) && !generateDto.coverd) return Tuple.Create(fullPath, ""); content = ReadTemplate("VueJsTemplate.txt"); content = content - .Replace("{ModelTypeName}", modelTypeName) - .Replace("{ModelTypeDesc}", modelTypeDesc); + .Replace("{ModelTypeName}", replaceDto.ModelTypeName) + .Replace("{ModelTypeDesc}", replaceDto.TableDesc); //.Replace("{fileClassName}", fileClassName) WriteAndSave(fullPath, content); return Tuple.Create(fullPath, content); diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs index 60399fc..161db2a 100644 --- a/ZR.CodeGenerator/Model/GenerateDto.cs +++ b/ZR.CodeGenerator/Model/GenerateDto.cs @@ -29,6 +29,9 @@ namespace ZR.CodeGenerator.Model /// 要生成的文件 /// public int[] genFiles { get; set; } + /// + /// 如果目标文件存在,是否覆盖。默认为false + /// public bool coverd { get; set; } = true; } } diff --git a/ZR.CodeGenerator/Model/ReplaceDto.cs b/ZR.CodeGenerator/Model/ReplaceDto.cs new file mode 100644 index 0000000..07f0c91 --- /dev/null +++ b/ZR.CodeGenerator/Model/ReplaceDto.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ZR.CodeGenerator.Model +{ + public class ReplaceDto + { + //public string ModelsNamespace { get; set; } + //public string DtosNamespace { get; set; } + //public string RepositoriesNamespace { get; set; } + //public string IRepositoriesNamespace { get; set; } + //public string IServicsNamespace { get; set; } + //public string ServicesNamespace { get; set; } + + /// + /// 主键字段 + /// + public string PrimaryKey { get; set; } + /// + /// 主键类型 + /// + public string KeyTypeName { get; set; } + /// + /// 控制器权限 + /// + public string Permission { get; set; } + /// + /// C#类名 + /// + public string ModelTypeName { get; set; } + /// + /// 数据库表名 + /// + public string TableName { get; set; } + /// + /// 表描述、说明 + /// + public string TableDesc { get; set; } + public string updateColumn { get; set; } + + + /// + /// 实体属性模板 + /// + public string ModelProperty { get; set; } + /// + /// 输入Dto模板 + /// + public string InputDtoProperty { get; set; } + + //vue、api + public string VueViewEditFormContent { get; set; } + public string VueViewListContent { get; set; } + public string VueViewFormContent { get; set; } + public string VueJsMethod { get; set; } + public string VueViewEditFormRuleContent { get; set; } + } +} diff --git a/ZR.Vue/src/router/index.js b/ZR.Vue/src/router/index.js index d0fd641..17b3536 100644 --- a/ZR.Vue/src/router/index.js +++ b/ZR.Vue/src/router/index.js @@ -44,7 +44,7 @@ export const constantRoutes = [ }, { path: '/demo', - component: (resolve) => require(['@/views/demo'], resolve), + component: (resolve) => require(['@/views/gift/index'], resolve), hidden: true }, { diff --git a/ZRAdmin.xml b/ZRAdmin.xml index fe02fe5..1e06da6 100644 --- a/ZRAdmin.xml +++ b/ZRAdmin.xml @@ -920,5 +920,46 @@ + + + 代码自动生成 + + + + + 接口 + + + + + 查询列表 + + + + + + 查询详情 + + + + + + + 添加 + + + + + + 更新 + + + + + + 删除 + + + diff --git a/document/admin-sqlserver.sql b/document/admin-sqlserver.sql index fbd395b..f7f556f 100644 Binary files a/document/admin-sqlserver.sql and b/document/admin-sqlserver.sql differ