This commit is contained in:
owenchen 2026-05-19 10:56:43 +08:00
parent e42f28ed4e
commit c16793b17b
3 changed files with 226 additions and 109 deletions

View File

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<ToolInitConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TemplatePath>D:\NET8\Templates</TemplatePath>
<CurrentAssembly>CloudBuilder.Hr</CurrentAssembly>
<Using>@using CloudBuilder.CodeGenerator.Config;
<TemplatePath>D:\NET8\Templates</TemplatePath>
<CurrentAssembly>CloudBuilder.AI</CurrentAssembly>
<Using>
@using CloudBuilder.CodeGenerator.Config;
@using CloudBuilder.CodeGenerator.Data;
@using CloudBuilder.CodeGenerator.Entity;
@using CloudBuilder.Core.Application.Builders;
@ -13,108 +14,190 @@
@using Microsoft.Extensions.DependencyInjection;
@using System.Data;
@using System;
@using System.Reflection;</Using>
<NamespaceObjects>
<NamespaceObject>
<TemplateType>Request</TemplateType>
<TemplateFileName>Request.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Request\Security</OutFilePath>
<Assembly>CloudBuilder.Request</Assembly>
<Namespace>CloudBuilder.Request.Security</Namespace>
<FileNameSuffix>Request.auto.cs</FileNameSuffix>
<FileNamePrefix />
</NamespaceObject>
<NamespaceObject>
<TemplateType>Entity</TemplateType>
<TemplateFileName>IEntity.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Entity</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>Entity.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>IEntityKey</TemplateType>
<TemplateFileName>IEntityKey.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Entity</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>EntityKey.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>IService</TemplateType>
<TemplateFileName>IService.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Service</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>Service.auto.cs</FileNameSuffix>
<FileNamePrefix>I</FileNamePrefix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Permission</TemplateType>
<TemplateFileName>Permission.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Policy</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>PermissionPolicy.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>RegistEntity</TemplateType>
<TemplateFileName>RegistEntity.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Entity</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>RegistEntity.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>SearchCriteria</TemplateType>
<TemplateFileName>SearchCriteria.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\SearchCriteria</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>SearchCriteria.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Service</TemplateType>
<TemplateFileName>Service.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security.Service</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>Service.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>TypeScript</TemplateType>
<TemplateFileName>TypeScript.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\WebVue\src\data\auto</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>.ts</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Controller</TemplateType>
<TemplateFileName>Controller.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Web.Entry\Controllers\Security</OutFilePath>
<Assembly>CloudBuilder.Security.Service</Assembly>
<Namespace>CloudBuilder.Web.Entry.Controllers.Security</Namespace>
<FileNameSuffix>Controller.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>TypeScriptService</TemplateType>
<TemplateFileName>TypeScriptService.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\WebVue\src\service\security</OutFilePath>
<Assembly>CloudBuilder.Security.Service</Assembly>
<Namespace>CloudBuilder.Web.Entry.Controllers.Security</Namespace>
<FileNameSuffix>.ts</FileNameSuffix>
</NamespaceObject>
</NamespaceObjects>
<AssemblyReferences>
<AssemblyReference>
<AssemblyFileName>D:\MAFAI\CloudBuilder\CloudBuilder.Security.Service\bin\Debug\net8.0\CloudBuilder.Security.Service.dll</AssemblyFileName>
</AssemblyReference>
<AssemblyReference>
<AssemblyFileName>D:\MAFAI\CloudBuilder\CloudBuilder.Security\bin\Debug\net8.0\CloudBuilder.Security.dll</AssemblyFileName>
</AssemblyReference>
</AssemblyReferences>
<ExculdePropertyTypes>
<string>Dictionary</string>
</ExculdePropertyTypes>
@using System.Reflection;
</Using>
<NamespaceObjects>
<NamespaceObject>
<TemplateType>Request</TemplateType>
<TemplateFileName>Request.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Request\Security</OutFilePath>
<Assembly>CloudBuilder.Request</Assembly>
<Namespace>CloudBuilder.Request.Security</Namespace>
<FileNameSuffix>Request.auto.cs</FileNameSuffix>
<FileNamePrefix />
</NamespaceObject>
<NamespaceObject>
<TemplateType>Entity</TemplateType>
<TemplateFileName>IEntity.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI\Entity</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>Entity.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>IEntityKey</TemplateType>
<TemplateFileName>IEntityKey.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI\Entity</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>EntityKey.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>IService</TemplateType>
<TemplateFileName>IService.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI\Service</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>Service.auto.cs</FileNameSuffix>
<FileNamePrefix>I</FileNamePrefix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Permission</TemplateType>
<TemplateFileName>Permission.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI\Policy</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>PermissionPolicy.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>RegistEntity</TemplateType>
<TemplateFileName>RegistEntity.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI\Entity</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>RegistEntity.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>SearchCriteria</TemplateType>
<TemplateFileName>SearchCriteria.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI\SearchCriteria</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>SearchCriteria.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Service</TemplateType>
<TemplateFileName>Service.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.AI.Service</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>Service.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>TypeScript</TemplateType>
<TemplateFileName>TypeScript.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\WebVue\src\data\auto</OutFilePath>
<Assembly>CloudBuilder.AI</Assembly>
<Namespace>CloudBuilder.AI</Namespace>
<FileNameSuffix>.ts</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Controller</TemplateType>
<TemplateFileName>Controller.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Web.Entry\Controllers\Ai</OutFilePath>
<Assembly>CloudBuilder.AI.Service</Assembly>
<Namespace>CloudBuilder.Web.Entry.Controllers.Ai</Namespace>
<FileNameSuffix>Controller.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>TypeScriptService</TemplateType>
<TemplateFileName>TypeScriptService.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\WebVue\src\service\Ai</OutFilePath>
<Assembly>CloudBuilder.AI.Service</Assembly>
<Namespace>CloudBuilder.Web.Entry.Controllers.Ai</Namespace>
<FileNameSuffix>.ts</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Entity</TemplateType>
<TemplateFileName>IEntity.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Entity</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>Entity.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>IEntityKey</TemplateType>
<TemplateFileName>IEntityKey.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Entity</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>EntityKey.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>IService</TemplateType>
<TemplateFileName>IService.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Service</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>Service.auto.cs</FileNameSuffix>
<FileNamePrefix>I</FileNamePrefix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Permission</TemplateType>
<TemplateFileName>Permission.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Policy</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>PermissionPolicy.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>RegistEntity</TemplateType>
<TemplateFileName>RegistEntity.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\Entity</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>RegistEntity.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>SearchCriteria</TemplateType>
<TemplateFileName>SearchCriteria.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security\SearchCriteria</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>SearchCriteria.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Service</TemplateType>
<TemplateFileName>Service.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Security.Service</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>Service.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>TypeScript</TemplateType>
<TemplateFileName>TypeScript.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\WebVue\src\data\auto</OutFilePath>
<Assembly>CloudBuilder.Security</Assembly>
<Namespace>CloudBuilder.Security</Namespace>
<FileNameSuffix>.ts</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>Controller</TemplateType>
<TemplateFileName>Controller.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\CloudBuilder\CloudBuilder.Web.Entry\Controllers\Security</OutFilePath>
<Assembly>CloudBuilder.Security.Service</Assembly>
<Namespace>CloudBuilder.Web.Entry.Controllers.Security</Namespace>
<FileNameSuffix>Controller.auto.cs</FileNameSuffix>
</NamespaceObject>
<NamespaceObject>
<TemplateType>TypeScriptService</TemplateType>
<TemplateFileName>TypeScriptService.cshtml</TemplateFileName>
<OutFilePath>D:\MAFAI\WebVue\src\service\security</OutFilePath>
<Assembly>CloudBuilder.Security.Service</Assembly>
<Namespace>CloudBuilder.Web.Entry.Controllers.Security</Namespace>
<FileNameSuffix>.ts</FileNameSuffix>
</NamespaceObject>
</NamespaceObjects>
<AssemblyReferences>
<AssemblyReference>
<AssemblyFileName>D:\MAFAI\CloudBuilder\CloudBuilder.Security.Service\bin\Debug\net8.0\CloudBuilder.Security.Service.dll</AssemblyFileName>
</AssemblyReference>
<AssemblyReference>
<AssemblyFileName>D:\MAFAI\CloudBuilder\CloudBuilder.Security\bin\Debug\net8.0\CloudBuilder.Security.dll</AssemblyFileName>
</AssemblyReference>
</AssemblyReferences>
<ExculdePropertyTypes>
<string>Dictionary</string>
</ExculdePropertyTypes>
</ToolInitConfig>

View File

@ -23,6 +23,14 @@ public partial class Program
{
try
{
string logFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log\\log.txt");
if (!Directory.Exists(Path.GetDirectoryName(logFileName))) Directory.CreateDirectory(Path.GetDirectoryName(logFileName));
using (StreamWriter w = File.AppendText(logFileName))
{
w.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}]Start:");
}
Assembly assembly = null;
if (args != null && args.Length > 0)
@ -33,15 +41,25 @@ public partial class Program
if (assembly == null) return;
using (StreamWriter w = File.AppendText(logFileName))
{
w.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}]Succeed:" + assembly.FullName);
}
ModelData modelData = null;
ToolInitConfig toolInitConfig = ToolInitConfig.GetInstance();
string template = null;
string outputText = null;
string outputFileName = null;
string logFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log\\log.txt");
ClassInfo[] dataInfos = RazorEngineHelper.PackTypeScriptClassInfo(assembly);
using (StreamWriter w = File.AppendText(logFileName))
{
w.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}]PackTypeScriptClassInfo:" + dataInfos.Count());
}
foreach (var item in dataInfos)
{
modelData = new ModelData();
@ -77,6 +95,10 @@ public partial class Program
ClassInfo[] classInfos = RazorEngineHelper.PackIServiceClassInfo(assembly);
using (StreamWriter w = File.AppendText(logFileName))
{
w.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}]PackIServiceClassInfo:" + classInfos.Count());
}
foreach (var item in classInfos)
{
@ -94,9 +116,21 @@ public partial class Program
modelData.ClassInfos = new ClassInfo[] { item };
modelData.NamespaceObject = toolInitConfig.NamespaceObjects.Where(x => x.TemplateType == "Controller" && x.Assembly == Path.GetFileNameWithoutExtension(assembly.Location)).FirstOrDefault();
using (StreamWriter w = File.AppendText(logFileName))
{
w.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}]Controller:" + (modelData.NamespaceObject == null ? ("配置文件不存在【TemplateType、Assembly】" + Path.GetFileNameWithoutExtension(assembly.Location)) : modelData.NamespaceObject.OutFilePath));
}
if (modelData.NamespaceObject == null) continue;
outputFileName = Path.Combine(modelData.NamespaceObject.OutFilePath, item.ClassName.Replace("Service", "") + modelData.NamespaceObject.FileNameSuffix);
using (StreamWriter w = File.AppendText(logFileName))
{
w.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}]Controller:" + (string.IsNullOrEmpty(outputFileName) ? "空文件" : outputFileName));
}
if (string.IsNullOrEmpty(outputFileName)) continue;
template = File.ReadAllText(Path.Combine(toolInitConfig.TemplatePath, modelData.NamespaceObject.TemplateFileName));

View File

@ -2,7 +2,7 @@
"profiles": {
"CodeGenerator": {
"commandName": "Project",
"commandLineArgs": "D:\\MAFAI\\CloudBuilder\\CloudBuilder.Security.Service\\bin\\Debug\\net8.0\\CloudBuilder.Security.Service.dll"
"commandLineArgs": "D:\\MAFAI\\CloudBuilder\\CloudBuilder.Ai.Service\\bin\\Debug\\net8.0\\CloudBuilder.Ai.Service.dll"
}
}
}