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

View File

@ -23,6 +23,14 @@ public partial class Program
{ {
try 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; Assembly assembly = null;
if (args != null && args.Length > 0) if (args != null && args.Length > 0)
@ -33,15 +41,25 @@ public partial class Program
if (assembly == null) return; 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; ModelData modelData = null;
ToolInitConfig toolInitConfig = ToolInitConfig.GetInstance(); ToolInitConfig toolInitConfig = ToolInitConfig.GetInstance();
string template = null; string template = null;
string outputText = null; string outputText = null;
string outputFileName = null; string outputFileName = null;
string logFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log\\log.txt");
ClassInfo[] dataInfos = RazorEngineHelper.PackTypeScriptClassInfo(assembly); 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) foreach (var item in dataInfos)
{ {
modelData = new ModelData(); modelData = new ModelData();
@ -77,6 +95,10 @@ public partial class Program
ClassInfo[] classInfos = RazorEngineHelper.PackIServiceClassInfo(assembly); 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) foreach (var item in classInfos)
{ {
@ -94,9 +116,21 @@ public partial class Program
modelData.ClassInfos = new ClassInfo[] { item }; modelData.ClassInfos = new ClassInfo[] { item };
modelData.NamespaceObject = toolInitConfig.NamespaceObjects.Where(x => x.TemplateType == "Controller" && x.Assembly == Path.GetFileNameWithoutExtension(assembly.Location)).FirstOrDefault(); 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; if (modelData.NamespaceObject == null) continue;
outputFileName = Path.Combine(modelData.NamespaceObject.OutFilePath, item.ClassName.Replace("Service", "") + modelData.NamespaceObject.FileNameSuffix); 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; if (string.IsNullOrEmpty(outputFileName)) continue;
template = File.ReadAllText(Path.Combine(toolInitConfig.TemplatePath, modelData.NamespaceObject.TemplateFileName)); template = File.ReadAllText(Path.Combine(toolInitConfig.TemplatePath, modelData.NamespaceObject.TemplateFileName));

View File

@ -2,7 +2,7 @@
"profiles": { "profiles": {
"CodeGenerator": { "CodeGenerator": {
"commandName": "Project", "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"
} }
} }
} }