代码生成预览新增加vue版本判断

This commit is contained in:
不做码农
2022-04-27 11:33:55 +08:00
parent 07d206f6ff
commit 58bee3074b
6 changed files with 627 additions and 45 deletions

View File

@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ZR.CodeGenerator
namespace ZR.CodeGenerator
{
public class CodeGenerateOption
{

View File

@@ -38,6 +38,8 @@ namespace ZR.CodeGenerator
_option.ServicesNamespace = _option.BaseNamespace + "Service";
_option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi";
dto.VueParentPath = dto.VueVersion == 3 ? "ZRAdmin-vue" : "ZR.Vue";
dto.GenOptions = _option;
string PKName = "Id";
@@ -71,16 +73,23 @@ namespace ZR.CodeGenerator
replaceDto.PKType = PKType;
replaceDto.FistLowerPk = PKName.FirstLowerCase();
InitJntTemplate(dto, replaceDto);
replaceDto.VueViewListHtml = GenerateVueTableList();
replaceDto.VueQueryFormHtml = GenerateVueQueryForm();
replaceDto.VueViewFormHtml = GenerateCurdForm();
GenerateModels(replaceDto, dto);
GenerateRepository(replaceDto, dto);
GenerateService(replaceDto, dto);
GenerateControllers(replaceDto, dto);
GenerateVueViews(replaceDto, dto);
GenerateVue3Views(replaceDto, dto);
if (dto.VueVersion == 3)
{
GenerateVue3Views(replaceDto, dto);
}
else
{
replaceDto.VueViewListHtml = GenerateVueTableList();
replaceDto.VueQueryFormHtml = GenerateVueQueryForm();
replaceDto.VueViewFormHtml = GenerateCurdForm();
GenerateVueViews(replaceDto, dto);
}
GenerateVueJs(replaceDto, dto);
GenerateSql(replaceDto, dto);
@@ -88,6 +97,7 @@ namespace ZR.CodeGenerator
foreach (var item in dto.GenCodes)
{
item.Path = Path.Combine(dto.GenCodePath, item.Path);
FileHelper.WriteAndSave(item.Path, item.Content);
}
}
@@ -104,8 +114,8 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate("TplModel.txt");
var tplDto = FileHelper.ReadJtTemplate("TplDto.txt");
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
string fullPathDto = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
string fullPath = Path.Combine(_option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
string fullPathDto = Path.Combine(_option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, tpl.Render()));
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPathDto, tplDto.Render()));
@@ -120,7 +130,7 @@ namespace ZR.CodeGenerator
{
var tpl = FileHelper.ReadJtTemplate("TplRepository.txt");
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
var fullPath = Path.Combine(_option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result));
}
@@ -135,8 +145,8 @@ namespace ZR.CodeGenerator
var result = tpl.Render();
var result2 = tpl2.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
var fullPath2 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
var fullPath = Path.Combine(_option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
var fullPath2 = Path.Combine(_option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result));
generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, result2));
@@ -151,7 +161,7 @@ namespace ZR.CodeGenerator
tpl.Set("QueryCondition", replaceDto.QueryCondition);
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
var fullPath = Path.Combine(_option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result));
}
@@ -180,7 +190,7 @@ namespace ZR.CodeGenerator
tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result));
}
@@ -191,29 +201,24 @@ namespace ZR.CodeGenerator
/// <param name="generateDto"></param>
private static void GenerateVue3Views(ReplaceDto replaceDto, GenerateDto generateDto)
{
string fileName = string.Empty;
switch (generateDto.GenTable.TplCategory)
string fileName = generateDto.GenTable.TplCategory switch
{
//case "tree":
// fileName = "TplTreeVue.txt";
// break;
case "crud":
fileName = "Vue.txt";
break;
"tree" => "TreeVue.txt",
"crud" => "Vue.txt",
//case "select":
// fileName = "TplVueSelect.txt";
// break;
default:
fileName = "Vue.txt";
break;
}
_ => "Vue.txt",
};
fileName = Path.Combine("v3", fileName);
var tpl = FileHelper.ReadJtTemplate(fileName);
tpl.Set("treeCode", generateDto.GenTable?.TreeCode?.ToString()?.FirstLowerCase());
tpl.Set("treeName", generateDto.GenTable.TreeName?.ToString()?.FirstLowerCase());
tpl.Set("treeParentCode", generateDto.GenTable.TreeParentCode?.ToString()?.FirstLowerCase());
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZRAdmin-vue", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
//Console.WriteLine(result);
generateDto.GenCodes.Add(new GenCode(16, "vue3.vue", fullPath, result));
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result));
}
/// <summary>
/// 生成vue页面api
@@ -226,11 +231,19 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt");
var result = tpl.Render();
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), generateDto.GenTable.BusinessName.FirstUpperCase() + ".js");
string fileName;
if (generateDto.VueVersion == 3)
{
fileName = generateDto.GenTable.BusinessName.ToLower() + ".js";
}
else
{
fileName = generateDto.GenTable.BusinessName.FirstUpperCase() + ".js";
}
string fullPath = Path.Combine(generateDto.VueParentPath, "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), fileName);
generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result));
string fullPathV3 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZRAdmin-vue", "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), generateDto.GenTable.BusinessName.ToLower() + ".js");
generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPathV3, result));
}
/// <summary>
@@ -255,7 +268,7 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt");
tpl.Set("parentId", generateDto.GenTable.ParentMenuId ?? 0);
var result = tpl.Render();
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "sql", generateDto.GenTable.BusinessName + ".sql");
string fullPath = Path.Combine(generateDto.GenCodePath, "sql", generateDto.GenTable.BusinessName + ".sql");
generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result));
}
@@ -278,7 +291,7 @@ namespace ZR.CodeGenerator
{
var tpl = FileHelper.ReadJtTemplate("TableList.txt");
var result = tpl.Render();
//Console.WriteLine(result);
return result;
}
/// <summary>
@@ -289,7 +302,6 @@ namespace ZR.CodeGenerator
{
var tpl = FileHelper.ReadJtTemplate("CurdForm.txt");
var result = tpl.Render();
//Console.WriteLine(result);
return result;
}
#endregion
@@ -339,7 +351,15 @@ namespace ZR.CodeGenerator
/// <returns></returns>
public static string FirstLowerCase(string str)
{
return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..];
try
{
return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..];
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return "";
}
}
/// <summary>
@@ -493,7 +513,7 @@ namespace ZR.CodeGenerator
/// <param name="replaceDto"></param>
private static void InitJntTemplate(GenerateDto dto, ReplaceDto replaceDto)
{
//Engine.Current.Clean();
Engine.Current.Clean();
dto.GenTable.Columns = dto.GenTable.Columns.OrderBy(x => x.Sort).ToList();
bool showCustomInput = dto.GenTable.Columns.Any(f => f.HtmlType.Equals(GenConstants.HTML_CUSTOM_INPUT, StringComparison.OrdinalIgnoreCase));
//jnt模板引擎全局变量

View File

@@ -5,6 +5,10 @@ namespace ZR.CodeGenerator.Model
{
public class GenerateDto
{
/// <summary>
/// vue版本
/// </summary>
public int VueVersion { get; set; }
public long TableId { get; set; }
/// <summary>
/// 是否预览代码
@@ -28,7 +32,7 @@ namespace ZR.CodeGenerator.Model
/// <summary>
/// 代码生成路径
/// </summary>
public string GenCodePath { get; set; }
public string GenCodePath { get; set; } = string.Empty;
/// <summary>
/// 代码生成压缩包路径
/// </summary>
@@ -42,6 +46,10 @@ namespace ZR.CodeGenerator.Model
/// </summary>
public string GenType { get; set; }
public string GenPath { get; set; } = "";
/// <summary>
/// vue代码路径
/// </summary>
public string VueParentPath { get; set; }
#endregion
}