优化代码生成
This commit is contained in:
parent
55b997e58b
commit
21e523a821
@ -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;
|
||||||
|
|||||||
@ -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}查询对象
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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},数据实体对象
|
||||||
|
|||||||
@ -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}
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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>
|
||||||
|
|||||||
@ -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 初始化信息
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user