修改模板

This commit is contained in:
izory 2021-09-12 19:57:50 +08:00
parent 47bc6d5ed9
commit baec8f0a91
3 changed files with 58 additions and 63 deletions

View File

@ -22,90 +22,90 @@ namespace ZRAdmin.Controllers
/// </summary> /// </summary>
[Verify] [Verify]
[Route("bus/<#=ModelName#>")] [Route("bus/{ModelName}")]
public class <#=ControllerName#>Controller: BaseController public class {ControllerName}Controller: BaseController
{ {
/// <summary> /// <summary>
/// <#=FileName#>接口 /// {FileName}接口
/// </summary> /// </summary>
private readonly I<#=ServiceName#> _<#=ServiceName#>; private readonly I{ServiceName} _{ServiceName};
public <#=ControllerName#>Controller(I<#=ServiceName#> <#=ServiceName#>) public {ControllerName}Controller(I{ServiceName} {ServiceName})
{ {
_<#=ServiceName#> = <#=ServiceName#>; _{ServiceName} = {ServiceName};
} }
/// <summary> /// <summary>
/// 查询<#=FileName#>列表 /// 查询{FileName}列表
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpGet("list")] [HttpGet("list")]
[ActionPermissionFilter(Permission = "<#=Permission#>:list")] [ActionPermissionFilter(Permission = "{Permission}:list")]
public IActionResult Query([FromQuery] <#=ModelName#>QueryDto parm) public IActionResult Query([FromQuery] {ModelName}QueryDto parm)
{ {
//开始拼装查询条件 //开始拼装查询条件
var predicate = Expressionable.Create<<#=ModelName#>>(); var predicate = Expressionable.Create<{ModelName}>();
//TODO 搜索条件 //TODO 搜索条件
//predicate = predicate.And(m => m.Name.Contains(parm.Name)); //predicate = predicate.And(m => m.Name.Contains(parm.Name));
var response = _<#=ServiceName#>.GetPages(predicate.ToExpression(), parm); var response = _{ServiceName}.GetPages(predicate.ToExpression(), parm);
return SUCCESS(response); return SUCCESS(response);
} }
/// <summary> /// <summary>
/// 查询<#=FileName#>详情 /// 查询{FileName}详情
/// </summary> /// </summary>
/// <param name="{primaryKey}"></param> /// <param name="{primaryKey}"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("{{primaryKey}}")] [HttpGet("{{primaryKey}}")]
[ActionPermissionFilter(Permission = "<#=Permission#>:query")] [ActionPermissionFilter(Permission = "{Permission}:query")]
public IActionResult Get({KeyTypeName} {primaryKey}) public IActionResult Get({KeyTypeName} {primaryKey})
{ {
var response = _<#=ServiceName#>.GetId({primaryKey}); var response = _{ServiceName}.GetId({primaryKey});
return SUCCESS(response); return SUCCESS(response);
} }
/// <summary> /// <summary>
/// 添加<#=FileName#> /// 添加{FileName}
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[ActionPermissionFilter(Permission = "<#=Permission#>:add")] [ActionPermissionFilter(Permission = "{Permission}:add")]
[Log(Title = "<#=FileName#>添加", BusinessType = BusinessType.INSERT)] [Log(Title = "{FileName}添加", BusinessType = BusinessType.INSERT)]
public IActionResult Create([FromBody] <#=ModelName#>Dto parm) public IActionResult Create([FromBody] {ModelName}Dto parm)
{ {
if (parm == null) if (parm == null)
{ {
throw new CustomException("请求参数错误"); throw new CustomException("请求参数错误");
} }
//从 Dto 映射到 实体 //从 Dto 映射到 实体
var addModel = parm.Adapt<<#=ModelName#>>().ToCreate(); var addModel = parm.Adapt<{ModelName}>().ToCreate();
//addModel.CreateID = User.Identity.Name; //addModel.CreateID = User.Identity.Name;
return SUCCESS(_<#=ServiceName#>.Add(addModel)); return SUCCESS(_{ServiceName}.Add(addModel));
} }
/// <summary> /// <summary>
/// 更新<#=FileName#> /// 更新{FileName}
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
[ActionPermissionFilter(Permission = "<#=Permission#>:update")] [ActionPermissionFilter(Permission = "{Permission}:update")]
[Log(Title = "<#=FileName#>修改", BusinessType = BusinessType.UPDATE)] [Log(Title = "{FileName}修改", BusinessType = BusinessType.UPDATE)]
public IActionResult Update([FromBody] <#=ModelName#>Dto parm) public IActionResult Update([FromBody] {ModelName}Dto parm)
{ {
if (parm == null) if (parm == null)
{ {
throw new CustomException("请求实体不能为空"); throw new CustomException("请求实体不能为空");
} }
//从 Dto 映射到 实体 //从 Dto 映射到 实体
var updateModel = parm.Adapt<<#=ModelName#>>().ToCreate(); var updateModel = parm.Adapt<{ModelName}>().ToCreate();
//updateModel.CreateID = User.Identity.Name; //updateModel.CreateID = User.Identity.Name;
var response = _<#=ServiceName#>.Update(w => w.{primaryKey} == updateModel.{primaryKey}, it => new <#=ModelName#>() var response = _{ServiceName}.Update(w => w.{primaryKey} == updateModel.{primaryKey}, it => new {ModelName}()
{ {
//TODO 字段映射 //TODO 字段映射
{updateColumn} {updateColumn}
@ -115,18 +115,18 @@ namespace ZRAdmin.Controllers
} }
/// <summary> /// <summary>
/// 删除<#=FileName#> /// 删除{FileName}
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpDelete("{{primaryKey}}")] [HttpDelete("{{primaryKey}}")]
[ActionPermissionFilter(Permission = "<#=Permission#>:delete")] [ActionPermissionFilter(Permission = "{Permission}:delete")]
[Log(Title = "<#=FileName#>删除", BusinessType = BusinessType.DELETE)] [Log(Title = "{FileName}删除", BusinessType = BusinessType.DELETE)]
public IActionResult Delete({KeyTypeName} {primaryKey} = 0) public IActionResult Delete({KeyTypeName} {primaryKey} = 0)
{ {
if ({primaryKey} <= 0) { return OutputJson(ApiResult.Error($"删除失败Id 不能为空")); } if ({primaryKey} <= 0) { return OutputJson(ApiResult.Error($"删除失败Id 不能为空")); }
// 删除<#=FileName#> // 删除{FileName}
var response = _<#=ServiceName#>.Delete({primaryKey}); var response = _{ServiceName}.Delete({primaryKey});
return SUCCESS(response); return SUCCESS(response);
} }

View File

@ -223,18 +223,6 @@ export default {
} }
}); });
}, },
// 详情
handleView(row) {
this.open = true;
this.title = "详情";
// TODO 给表单赋值
this.form = {
content: row.content,
userId: row.userId,
name: row.name,
sortId: row.sortId,
};
}
}, },
}; };
</script> </script>

View File

@ -272,7 +272,7 @@ namespace ZR.CodeGenerator
/// <param name="modelContent">数据库表实体内容</param> /// <param name="modelContent">数据库表实体内容</param>
/// <param name="keyTypeName">主键数据类型</param> /// <param name="keyTypeName">主键数据类型</param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateModels(string modelsNamespace, string modelTypeName, string tableName, string modelContent, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateModels(string modelsNamespace, string modelTypeName, string tableName, string modelContent, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false)
{ {
var parentPath = ".."; var parentPath = "..";
//../ZR.Model //../ZR.Model
@ -285,7 +285,7 @@ namespace ZR.CodeGenerator
var fullPath = servicesPath + modelTypeName + ".cs"; var fullPath = servicesPath + modelTypeName + ".cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, "");
var content = ReadTemplate("ModelTemplate.txt"); var content = ReadTemplate("ModelTemplate.txt");
content = content content = content
.Replace("{ModelsNamespace}", modelsNamespace) .Replace("{ModelsNamespace}", modelsNamespace)
@ -295,6 +295,7 @@ namespace ZR.CodeGenerator
.Replace("{PropertyName}", modelContent) .Replace("{PropertyName}", modelContent)
.Replace("{TableName}", tableName); .Replace("{TableName}", tableName);
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
@ -307,7 +308,7 @@ namespace ZR.CodeGenerator
/// <param name="modelContent"></param> /// <param name="modelContent"></param>
/// <param name="keyTypeName"></param> /// <param name="keyTypeName"></param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateInputDto(string modelsNamespace, string modelTypeName, string modelTypeDesc, string modelContent, string keyTypeName, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateInputDto(string modelsNamespace, string modelTypeName, string modelTypeDesc, string modelContent, string keyTypeName, bool ifExsitedCovered = false)
{ {
var parentPath = ".."; var parentPath = "..";
var servicesPath = parentPath + "\\" + modelsNamespace + "\\Dto\\"; var servicesPath = parentPath + "\\" + modelsNamespace + "\\Dto\\";
@ -319,7 +320,7 @@ namespace ZR.CodeGenerator
var fullPath = servicesPath + modelTypeName + "Dto.cs"; var fullPath = servicesPath + modelTypeName + "Dto.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, ""); ;
var content = ReadTemplate("InputDtoTemplate.txt"); var content = ReadTemplate("InputDtoTemplate.txt");
content = content content = content
.Replace("{DtosNamespace}", _option.DtosNamespace) .Replace("{DtosNamespace}", _option.DtosNamespace)
@ -329,6 +330,7 @@ namespace ZR.CodeGenerator
.Replace("{PropertyName}", modelContent) .Replace("{PropertyName}", modelContent)
.Replace("{ModelTypeName}", modelTypeName); .Replace("{ModelTypeName}", modelTypeName);
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
#endregion #endregion
@ -342,7 +344,7 @@ namespace ZR.CodeGenerator
/// <param name="tableName">表名</param> /// <param name="tableName">表名</param>
/// <param name="keyTypeName"></param> /// <param name="keyTypeName"></param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateRepository(string modelTypeName, string modelTypeDesc, string tableName, string keyTypeName, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateRepository(string modelTypeName, string modelTypeDesc, string tableName, string keyTypeName, bool ifExsitedCovered = false)
{ {
var parentPath = ".."; var parentPath = "..";
var repositoryPath = parentPath + "\\" + _option.RepositoriesNamespace + "\\Repositories\\"; var repositoryPath = parentPath + "\\" + _option.RepositoriesNamespace + "\\Repositories\\";
@ -353,7 +355,7 @@ namespace ZR.CodeGenerator
var fullPath = repositoryPath + "\\" + modelTypeName + "Repository.cs"; var fullPath = repositoryPath + "\\" + modelTypeName + "Repository.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, "");
var content = ReadTemplate("RepositoryTemplate.txt"); var content = ReadTemplate("RepositoryTemplate.txt");
content = content.Replace("{ModelsNamespace}", _option.ModelsNamespace) content = content.Replace("{ModelsNamespace}", _option.ModelsNamespace)
//.Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace) //.Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace)
@ -363,6 +365,7 @@ namespace ZR.CodeGenerator
.Replace("{TableName}", tableName) .Replace("{TableName}", tableName)
.Replace("{KeyTypeName}", keyTypeName); .Replace("{KeyTypeName}", keyTypeName);
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
#endregion #endregion
@ -376,7 +379,7 @@ namespace ZR.CodeGenerator
/// <param name="modelTypeDesc"></param> /// <param name="modelTypeDesc"></param>
/// <param name="keyTypeName"></param> /// <param name="keyTypeName"></param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateIService(string modelsNamespace, string modelTypeName, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateIService(string modelsNamespace, string modelTypeName, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false)
{ {
var parentPath = ".."; var parentPath = "..";
var iServicesPath = parentPath + "\\" + _option.IServicsNamespace + "\\Business\\IBusService\\"; var iServicesPath = parentPath + "\\" + _option.IServicsNamespace + "\\Business\\IBusService\\";
@ -387,7 +390,7 @@ namespace ZR.CodeGenerator
var fullPath = $"{iServicesPath}\\I{modelTypeName}Service.cs"; var fullPath = $"{iServicesPath}\\I{modelTypeName}Service.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, "");
var content = ReadTemplate("IServiceTemplate.txt"); var content = ReadTemplate("IServiceTemplate.txt");
content = content.Replace("{ModelsNamespace}", modelsNamespace) content = content.Replace("{ModelsNamespace}", modelsNamespace)
.Replace("{TableNameDesc}", modelTypeDesc) .Replace("{TableNameDesc}", modelTypeDesc)
@ -397,6 +400,7 @@ namespace ZR.CodeGenerator
.Replace("{ModelTypeName}", modelTypeName) .Replace("{ModelTypeName}", modelTypeName)
.Replace("{KeyTypeName}", keyTypeName); .Replace("{KeyTypeName}", keyTypeName);
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
/// <summary> /// <summary>
@ -407,7 +411,7 @@ namespace ZR.CodeGenerator
/// <param name="modelTypeDesc"></param> /// <param name="modelTypeDesc"></param>
/// <param name="keyTypeName"></param> /// <param name="keyTypeName"></param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateService(string modelsNamespace, string modelTypeName, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateService(string modelsNamespace, string modelTypeName, string modelTypeDesc, string keyTypeName, bool ifExsitedCovered = false)
{ {
var parentPath = ".."; var parentPath = "..";
var servicesPath = parentPath + "\\" + _option.ServicesNamespace + "\\Business\\"; var servicesPath = parentPath + "\\" + _option.ServicesNamespace + "\\Business\\";
@ -418,7 +422,7 @@ namespace ZR.CodeGenerator
var fullPath = servicesPath + modelTypeName + "Service.cs"; var fullPath = servicesPath + modelTypeName + "Service.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, "");
var content = ReadTemplate("ServiceTemplate.txt"); var content = ReadTemplate("ServiceTemplate.txt");
content = content content = content
.Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace) .Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace)
@ -430,6 +434,7 @@ namespace ZR.CodeGenerator
.Replace("{ModelTypeName}", modelTypeName) .Replace("{ModelTypeName}", modelTypeName)
.Replace("{KeyTypeName}", keyTypeName); .Replace("{KeyTypeName}", keyTypeName);
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
#endregion #endregion
@ -443,7 +448,7 @@ namespace ZR.CodeGenerator
/// <param name="modelTypeDesc">实体描述</param> /// <param name="modelTypeDesc">实体描述</param>
/// <param name="keyTypeName"></param> /// <param name="keyTypeName"></param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateControllers(string modelTypeName, string primaryKey, string modelTypeDesc, string keyTypeName, string updateColumn, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateControllers(string modelTypeName, string primaryKey, string modelTypeDesc, string keyTypeName, string updateColumn, bool ifExsitedCovered = false)
{ {
var parentPath = ".."; var parentPath = "..";
var servicesPath = parentPath + "\\" + _option.ApiControllerNamespace + "\\Controllers\\business\\"; var servicesPath = parentPath + "\\" + _option.ApiControllerNamespace + "\\Controllers\\business\\";
@ -454,20 +459,21 @@ namespace ZR.CodeGenerator
var fullPath = servicesPath + modelTypeName + "Controller.cs"; var fullPath = servicesPath + modelTypeName + "Controller.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, "");
var content = ReadTemplate("ControllersTemplate.txt"); var content = ReadTemplate("ControllersTemplate.txt");
content = content content = content
//.Replace("{DtosNamespace}", _option.DtosNamespace) //.Replace("{DtosNamespace}", _option.DtosNamespace)
.Replace("<#=ControllerName#>", modelTypeName) .Replace("{ControllerName}", modelTypeName)
.Replace("{ModelsNamespace}", _option.ModelsNamespace) .Replace("{ModelsNamespace}", _option.ModelsNamespace)
.Replace("<#=FileName#>", modelTypeDesc) .Replace("{FileName}", modelTypeDesc)
.Replace("<#=ServiceName#>", modelTypeName + "Service") .Replace("{ServiceName}", modelTypeName + "Service")
.Replace("<#=ModelName#>", modelTypeName) .Replace("{ModelName}", modelTypeName)
.Replace("<#=Permission#>", modelTypeName.ToLower()) .Replace("{Permission}", modelTypeName.ToLower())
.Replace("{primaryKey}", primaryKey) .Replace("{primaryKey}", primaryKey)
.Replace("{updateColumn}", updateColumn) .Replace("{updateColumn}", updateColumn)
.Replace("{KeyTypeName}", keyTypeName); .Replace("{KeyTypeName}", keyTypeName);
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
#endregion #endregion
@ -484,7 +490,7 @@ namespace ZR.CodeGenerator
/// <param name="vueViewSaveBindContent"></param> /// <param name="vueViewSaveBindContent"></param>
/// <param name="vueViewEditFromRuleContent"></param> /// <param name="vueViewEditFromRuleContent"></param>
/// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param> /// <param name="ifExsitedCovered">如果目标文件存在是否覆盖。默认为false</param>
private static void GenerateVueViews(string modelTypeName, string primaryKey, string modelTypeDesc, string vueViewListContent, string vueViewFromContent, string vueViewEditFromContent, string vueViewEditFromBindContent, string vueViewSaveBindContent, string vueViewEditFromRuleContent, bool ifExsitedCovered = false) private static Tuple<string, string> GenerateVueViews(string modelTypeName, string primaryKey, string modelTypeDesc, string vueViewListContent, string vueViewFromContent, string vueViewEditFromContent, string vueViewEditFromBindContent, string vueViewSaveBindContent, string vueViewEditFromRuleContent, bool ifExsitedCovered = false)
{ {
//var parentPath = "..\\CodeGenerate";//若要生成到项目中将路径改成 “..\\ZR.Vue\\src” //var parentPath = "..\\CodeGenerate";//若要生成到项目中将路径改成 “..\\ZR.Vue\\src”
var parentPath = "..\\ZR.Vue\\src"; var parentPath = "..\\ZR.Vue\\src";
@ -496,7 +502,7 @@ namespace ZR.CodeGenerator
var fullPath = servicesPath + "\\" + "index.vue"; var fullPath = servicesPath + "\\" + "index.vue";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, ""); ;
var content = ReadTemplate("VueTemplate.txt"); var content = ReadTemplate("VueTemplate.txt");
content = content content = content
.Replace("{fileClassName}", FirstLowerCase(modelTypeName)) .Replace("{fileClassName}", FirstLowerCase(modelTypeName))
@ -517,13 +523,14 @@ namespace ZR.CodeGenerator
fullPath = servicesPath + "\\" + FirstLowerCase(modelTypeName) + ".js"; fullPath = servicesPath + "\\" + FirstLowerCase(modelTypeName) + ".js";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !ifExsitedCovered) if (File.Exists(fullPath) && !ifExsitedCovered)
return; return Tuple.Create(fullPath, "");
content = ReadTemplate("VueJsTemplate.txt"); content = ReadTemplate("VueJsTemplate.txt");
content = content content = content
.Replace("{ModelTypeName}", modelTypeName) .Replace("{ModelTypeName}", modelTypeName)
.Replace("{ModelTypeDesc}", modelTypeDesc); .Replace("{ModelTypeDesc}", modelTypeDesc);
//.Replace("{fileClassName}", fileClassName) //.Replace("{fileClassName}", fileClassName)
WriteAndSave(fullPath, content); WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
} }
#endregion #endregion