优化代码生成

This commit is contained in:
不做码农 2023-03-01 18:23:29 +08:00
parent 55b997e58b
commit 21e523a821
8 changed files with 51 additions and 57 deletions

View File

@ -4,8 +4,8 @@ using Infrastructure.Enums;
using Infrastructure.Model; using Infrastructure.Model;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using ${options.ModelsNamespace}.Dto; using ${options.DtosNamespace};
using ${options.ModelsNamespace}.Models; using ${options.ModelsNamespace}.${options.SubNamespace};
using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service; using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service;
using ${options.ApiControllerNamespace}.Extensions; using ${options.ApiControllerNamespace}.Extensions;
using ${options.ApiControllerNamespace}.Filters; using ${options.ApiControllerNamespace}.Filters;

View File

@ -1,14 +1,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json; //using ${options.ModelsNamespace}.${options.SubNamespace};
using ${options.ModelsNamespace}.Dto;
using ${options.ModelsNamespace}.Models;
$if(replaceDto.ShowBtnExport) $if(replaceDto.ShowBtnExport)
using MiniExcelLibs.Attributes; using MiniExcelLibs.Attributes;
$end $end
namespace ${options.DtosNamespace}.Dto namespace ${options.DtosNamespace}
{ {
/// <summary> /// <summary>
/// ${genTable.FunctionName}查询对象 /// ${genTable.FunctionName}查询对象

View File

@ -1,7 +1,7 @@
using System; using System;
using ${options.ModelsNamespace}; using ${options.BaseNamespace}Model;
using ${options.ModelsNamespace}.Dto; using ${options.DtosNamespace};
using ${options.ModelsNamespace}.Models; using ${options.ModelsNamespace}.${options.SubNamespace};
using System.Collections.Generic; using System.Collections.Generic;
namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service
@ -22,7 +22,8 @@ $end
int Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm); int Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm);
int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm); int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm);
$if(replaceDto.ShowBtnTruncate)
void Truncate${replaceDto.ModelTypeName}(); void Truncate${replaceDto.ModelTypeName}();
$end
} }
} }

View File

@ -2,7 +2,7 @@
using SqlSugar; using SqlSugar;
using System.Collections.Generic; using System.Collections.Generic;
namespace ${options.ModelsNamespace}.Models namespace ${options.ModelsNamespace}.${options.SubNamespace}
{ {
/// <summary> /// <summary>
/// ${genTable.FunctionName},数据实体对象 /// ${genTable.FunctionName},数据实体对象

View File

@ -1,7 +1,5 @@
using System; using Infrastructure.Attribute;
using Infrastructure.Attribute; using ${options.ModelsNamespace}.${options.SubNamespace};
using ${options.RepositoriesNamespace}.System;
using ${options.ModelsNamespace}.Models;
namespace ${options.RepositoriesNamespace} namespace ${options.RepositoriesNamespace}
{ {

View File

@ -1,10 +1,10 @@
using System; using System;
using SqlSugar; using SqlSugar;
using Infrastructure.Attribute; using Infrastructure.Attribute;
using ${options.ModelsNamespace}; using ${options.BaseNamespace}Model;
using ${options.ModelsNamespace}.Dto; using ${options.DtosNamespace};
using ${options.ModelsNamespace}.Models; using ${options.ModelsNamespace}.${options.SubNamespace};
using ${options.IRepositoriesNamespace}; using ${options.RepositoriesNamespace};
using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service; using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service;
using System.Linq; using System.Linq;
$if(genTable.TplCategory == "tree") $if(genTable.TplCategory == "tree")
@ -120,7 +120,7 @@ ${end}
//return response; //return response;
return Update(model, true); return Update(model, true);
} }
$if(replaceDto.ShowBtnTruncate)
/// <summary> /// <summary>
/// 清空${genTable.FunctionName} /// 清空${genTable.FunctionName}
/// </summary> /// </summary>
@ -129,6 +129,7 @@ ${end}
{ {
Truncate(); Truncate();
} }
$end
#endregion #endregion
} }
} }

View File

@ -18,10 +18,10 @@
/// 输入输出数据实体名称空间 /// 输入输出数据实体名称空间
/// </summary> /// </summary>
public string DtosNamespace { get; set; } public string DtosNamespace { get; set; }
/// <summary> ///// <summary>
/// 仓储接口命名空间 ///// 仓储接口命名空间
/// </summary> ///// </summary>
public string IRepositoriesNamespace { get; set; } //public string IRepositoriesNamespace { get; set; }
/// <summary> /// <summary>
/// 仓储实现名称空间 /// 仓储实现名称空间
/// </summary> /// </summary>

View File

@ -19,10 +19,6 @@ namespace ZR.CodeGenerator
public class CodeGeneratorTool public class CodeGeneratorTool
{ {
private static readonly string CodeTemplateDir = "CodeGenTemplate"; private static readonly string CodeTemplateDir = "CodeGenTemplate";
/// <summary>
/// 代码生成器配置
/// </summary>
private static CodeGenerateOption _option = new CodeGenerateOption();
/// <summary> /// <summary>
/// 代码生成器入口方法 /// 代码生成器入口方法
@ -30,26 +26,14 @@ namespace ZR.CodeGenerator
/// <param name="dto"></param> /// <param name="dto"></param>
public static void Generate(GenerateDto dto) public static void Generate(GenerateDto dto)
{ {
_option.BaseNamespace = dto.GenTable.BaseNameSpace;
_option.SubNamespace = dto.GenTable.ModuleName.FirstUpperCase();
_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";
var vuePath = AppSettings.GetConfig("gen:vuePath"); var vuePath = AppSettings.GetConfig("gen:vuePath");
dto.VueParentPath = dto.VueVersion == 3 ? "ZRAdmin-vue" : "ZR.Vue"; dto.VueParentPath = dto.VueVersion == 3 ? "ZRAdmin-vue" : "ZR.Vue";
if (!vuePath.IsEmpty()) if (!vuePath.IsEmpty())
{ {
dto.VueParentPath = vuePath; dto.VueParentPath = vuePath;
} }
dto.GenOptions = _option; dto.GenOptions = GenerateOption(dto.GenTable); ;
string PKName = "Id";
string PKType = "int";
ReplaceDto replaceDto = new() ReplaceDto replaceDto = new()
{ {
ModelTypeName = dto.GenTable.ClassName,//表名对应C# 实体类名 ModelTypeName = dto.GenTable.ClassName,//表名对应C# 实体类名
@ -61,6 +45,8 @@ namespace ZR.CodeGenerator
ShowBtnExport = dto.GenTable.Options.CheckedBtn.Any(f => f == 4), ShowBtnExport = dto.GenTable.Options.CheckedBtn.Any(f => f == 4),
ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5), ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5),
ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6), ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6),
PKName = "Id",
PKType = "int"
}; };
//循环表字段信息 //循环表字段信息
@ -68,8 +54,8 @@ namespace ZR.CodeGenerator
{ {
if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement) if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement)
{ {
PKName = dbFieldInfo.CsharpField; replaceDto.PKName = dbFieldInfo.CsharpField;
PKType = dbFieldInfo.CsharpType; replaceDto.PKType = dbFieldInfo.CsharpType;
} }
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD) || dbFieldInfo.HtmlType.Equals(GenConstants.HTML_FILE_UPLOAD)) if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD) || dbFieldInfo.HtmlType.Equals(GenConstants.HTML_FILE_UPLOAD))
{ {
@ -86,9 +72,7 @@ namespace ZR.CodeGenerator
dbFieldInfo.CsharpFieldFl = dbFieldInfo.CsharpField.FirstLowerCase(); dbFieldInfo.CsharpFieldFl = dbFieldInfo.CsharpField.FirstLowerCase();
} }
replaceDto.PKName = PKName; replaceDto.FistLowerPk = replaceDto.PKName.FirstLowerCase();
replaceDto.PKType = PKType;
replaceDto.FistLowerPk = PKName.FirstLowerCase();
InitJntTemplate(dto, replaceDto); InitJntTemplate(dto, replaceDto);
GenerateModels(replaceDto, dto); GenerateModels(replaceDto, dto);
@ -122,6 +106,23 @@ namespace ZR.CodeGenerator
} }
} }
private static CodeGenerateOption GenerateOption(GenTable genTable)
{
CodeGenerateOption _option = new()
{
BaseNamespace = genTable.BaseNameSpace,
SubNamespace = genTable.ModuleName.FirstUpperCase()
};
_option.DtosNamespace = _option.BaseNamespace + "Model.Dto";
_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";
return _option;
}
#region #region
/// <summary> /// <summary>
@ -134,8 +135,8 @@ namespace ZR.CodeGenerator
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, "TplModel.txt"); var tpl = JnHelper.ReadTemplate(CodeTemplateDir, "TplModel.txt");
var tplDto = JnHelper.ReadTemplate(CodeTemplateDir, "TplDto.txt"); var tplDto = JnHelper.ReadTemplate(CodeTemplateDir, "TplDto.txt");
string fullPath = Path.Combine(_option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs"); string fullPath = Path.Combine(generateDto.GenOptions.ModelsNamespace, "Models", generateDto.GenOptions.SubNamespace, replaceDto.ModelTypeName + ".cs");
string fullPathDto = Path.Combine(_option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs"); string fullPathDto = Path.Combine(generateDto.GenOptions.ModelsNamespace, "Dto", generateDto.GenOptions.SubNamespace, replaceDto.ModelTypeName + "Dto.cs");
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, tpl.Render())); generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, tpl.Render()));
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPathDto, tplDto.Render())); generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPathDto, tplDto.Render()));
@ -150,7 +151,7 @@ namespace ZR.CodeGenerator
{ {
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, "TplRepository.txt"); var tpl = JnHelper.ReadTemplate(CodeTemplateDir, "TplRepository.txt");
var result = tpl.Render(); var result = tpl.Render();
var fullPath = Path.Combine(_option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs"); var fullPath = Path.Combine(generateDto.GenOptions.RepositoriesNamespace, generateDto.GenOptions.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result)); generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result));
} }
@ -163,8 +164,8 @@ namespace ZR.CodeGenerator
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, "TplService.txt"); var tpl = JnHelper.ReadTemplate(CodeTemplateDir, "TplService.txt");
var tpl2 = JnHelper.ReadTemplate(CodeTemplateDir, "TplIService.txt"); var tpl2 = JnHelper.ReadTemplate(CodeTemplateDir, "TplIService.txt");
var fullPath = Path.Combine(_option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs"); var fullPath = Path.Combine(generateDto.GenOptions.ServicesNamespace, generateDto.GenOptions.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
var fullPath2 = Path.Combine(_option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs"); var fullPath2 = Path.Combine(generateDto.GenOptions.IServicsNamespace, generateDto.GenOptions.SubNamespace, $"I{generateDto.GenOptions.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, tpl.Render())); generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, tpl.Render()));
generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, tpl2.Render())); generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, tpl2.Render()));
@ -179,7 +180,7 @@ namespace ZR.CodeGenerator
tpl.Set("QueryCondition", replaceDto.QueryCondition); tpl.Set("QueryCondition", replaceDto.QueryCondition);
var result = tpl.Render(); var result = tpl.Render();
var fullPath = Path.Combine(_option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs"); var fullPath = Path.Combine(generateDto.GenOptions.ApiControllerNamespace, "Controllers", generateDto.GenOptions.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result)); generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result));
} }
@ -406,11 +407,6 @@ namespace ZR.CodeGenerator
return sTempDatatype; return sTempDatatype;
} }
public static bool IsNumber(string tableDataType)
{
string[] arr = new string[] { "int", "long" };
return arr.Any(f => f.Contains(GetCSharpDatatype(tableDataType)));
}
#endregion #endregion
#region #region