using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.IO.Compression;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using CoreCms.Net.Model.ViewModels.Basics;
|
using DotLiquid;
|
using SqlSugar;
|
|
namespace CoreCms.Net.CodeGenerator
|
{
|
/// <summary>
|
/// 自动生成代码
|
/// </summary>
|
public static class GeneratorCodeHelper
|
{
|
|
/// <summary>
|
/// 单表生成对应数据
|
/// </summary>
|
/// <param name="tableName">表名称</param>
|
/// <param name="tableDescription">表说明</param>
|
/// <param name="columns">表字段</param>
|
public static byte[] CodeGenerator(string tableName, string tableDescription, List<DbColumnInfo> columns, string fileType, bool isVue = false)
|
{
|
//ModelClassName
|
//ModelName
|
//ModelFields Name Comment
|
var dt = DateTime.Now;
|
byte[] data;
|
var obj = new
|
{
|
ModelCreateTime = dt,
|
ModelName = tableName,
|
ModelDescription = tableDescription,
|
ModelClassName = tableName,
|
ModelFields = columns.Select(r => new
|
{
|
r.DbColumnName,
|
r.ColumnDescription,
|
r.DataType,
|
r.DecimalDigits,
|
r.DefaultValue,
|
r.IsIdentity,
|
r.IsNullable,
|
r.IsPrimarykey,
|
//Length = (r.DataType == "nvarchar" && r.Length > 0) ? r.Length / 2 : r.Length,
|
r.Length,
|
r.PropertyName,
|
r.PropertyType,
|
r.Scale,
|
r.TableId,
|
r.TableName,
|
r.Value
|
}).ToArray()
|
};
|
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
|
using (MemoryStream ms = new MemoryStream())
|
{
|
using (ZipArchive zip = new ZipArchive(ms, ZipArchiveMode.Create, false))
|
{
|
string file;
|
string result;
|
Template template;
|
|
switch (fileType)
|
{
|
case "AllFiles":
|
//Controller
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Controllers.Controller.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry4 = zip.CreateEntry("Controller/" + tableName + "Controller.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry4.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//IRespository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.IRepository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IRepository/I" + tableName + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Respository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.Repository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Repository/" + tableName + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
//IServices
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.IServices.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IServices/I" + tableName + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Services
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.Services.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Services/" + tableName + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
//Model
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.DbModel.Model.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Entity/" + tableName + ".cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 生成layUI 前端代码
|
if (isVue == false)
|
{
|
CodeGeneratorForLayUI(obj, tableName, zip);
|
}
|
// 生成 vue 前端代码
|
else
|
{
|
CodeGeneratorForVue(obj, tableName, zip);
|
}
|
|
break;
|
case "EntityFiles":
|
//Model
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.DbModel.Model.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Entity/" + tableName + ".cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
break;
|
case "ServicesFiles":
|
//IServices
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.IServices.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IServices/I" + tableName + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Services
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.Services.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Services/" + tableName + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
break;
|
case "ViewFiles":
|
|
if (isVue == false)
|
{
|
CodeGeneratorForLayUI(obj, tableName, zip);
|
}
|
else
|
{
|
CodeGeneratorForVue(obj, tableName, zip);
|
}
|
break;
|
case "InterFaceFiles":
|
//IRespository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.IRepository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IRepository/I" + tableName + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Respository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.Repository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Repository/" + tableName + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
break;
|
}
|
}
|
data = ms.ToArray();
|
}
|
return data;
|
}
|
|
/// <summary>
|
/// 生成整个数据库文件
|
/// </summary>
|
/// <param name="tableName">表名称</param>
|
/// <param name="tableDescription">表说明</param>
|
/// <param name="columns">表字段</param>
|
public static byte[] CodeGeneratorAll(List<DbTableInfoAndColumns> dbModels, string fileType, bool isVue = false)
|
{
|
//ModelClassName
|
//ModelName
|
//ModelFields Name Comment
|
byte[] data;
|
|
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
|
using (MemoryStream ms = new MemoryStream())
|
{
|
using (ZipArchive zip = new ZipArchive(ms, ZipArchiveMode.Create, false))
|
{
|
string file;
|
string result;
|
Template template;
|
|
foreach (var item in dbModels)
|
{
|
var obj = new
|
{
|
ModelName = item.Name,
|
ModelDescription = item.Description,
|
ModelClassName = item.Name,
|
ModelFields = item.columns.Select(r => new
|
{
|
r.DbColumnName,
|
r.ColumnDescription,
|
r.DataType,
|
r.DecimalDigits,
|
r.DefaultValue,
|
r.IsIdentity,
|
r.IsNullable,
|
r.IsPrimarykey,
|
Length = (r.DataType == "nvarchar" && r.Length > 0) ? r.Length / 2 : r.Length,
|
r.PropertyName,
|
r.PropertyType,
|
r.Scale,
|
r.TableId,
|
r.TableName,
|
r.Value
|
}).ToArray()
|
};
|
|
switch (fileType)
|
{
|
case "AllFiles":
|
//Controller
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Controllers.Controller.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry4 = zip.CreateEntry("Controller/" + item.Name + "Controller.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry4.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//IRespository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.IRepository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IRepository/I" + item.Name + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Respository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.Repository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Repository/" + item.Name + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
//IServices
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.IServices.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IServices/I" + item.Name + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Services
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.Services.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Services/" + item.Name + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
//Model
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.DbModel.Model.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Entity/" + item.Name + ".cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 生成
|
if (isVue == false)
|
{
|
CodeGeneratorForLayUI(obj, item.Name, zip);
|
}
|
else
|
{
|
CodeGeneratorForVue(obj, item.Name, zip);
|
}
|
break;
|
case "EntityFiles":
|
//Model
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.DbModel.Model.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Entity/" + item.Name + ".cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
break;
|
case "ServicesFiles":
|
//IServices
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.IServices.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IServices/I" + item.Name + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Services
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Services.Services.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Services/" + item.Name + "Services.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
break;
|
case "ViewFiles":
|
|
if (isVue == false)
|
{
|
CodeGeneratorForLayUI(obj, item.Name, zip);
|
}
|
else
|
{
|
CodeGeneratorForVue(obj, item.Name, zip);
|
}
|
break;
|
case "InterFaceFiles":
|
//IRespository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.IRepository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IRepository/I" + item.Name + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Respository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.Repository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Repository/" + item.Name + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
break;
|
}
|
}
|
|
|
}
|
data = ms.ToArray();
|
}
|
return data;
|
}
|
|
public static void CodeGeneratorForLayUI(object obj, string tableName, ZipArchive zip)
|
{
|
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
|
string file;
|
string result;
|
Template template;
|
//CreateHtml
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/create.html");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//EditHtml
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/edit.html");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
//DetailsHtml
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/details.html");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
//IndexHtml
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/index.html");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
}
|
|
// 生成vue 前端代码
|
public static void CodeGeneratorForVue(object obj, string tableName, ZipArchive zip)
|
{
|
// 前端页面
|
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
|
string file;
|
string result;
|
Template template;
|
//CreateHtml
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Index.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/index.vue");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 创建页面路由
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.PageRouter.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/router.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 导出页面路由
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.PageRouterIndex.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/index.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 创建路由
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Router.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("router.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 前端接口模型
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Model.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("models/" + tableName + "/index.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 前端服务(Service)
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Service.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("services/" + tableName + "Service/index.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 前端 服务端调用的API 地址
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Api.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("services/" + tableName + "Service/api.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 前端 数据状态
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Store.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("store/modules/" + tableName + "/index.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 前端 数据状态管理默认导出index
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.StoreModulesIndex.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("store/modules/index.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 创建数据表达配置
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.FormSchema.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/form-schema.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 创建查看详情配置
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.DetailConfig.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/detail-config.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
|
// 创建表格搜索字段配置
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.SearchField.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/search-field.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
// 创建表格字段配置
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.TableConfig.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/table-config.ts");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
}
|
|
public static void CodeGeneratorForInterFaceFiles(object obj, string tableName, ZipArchive zip)
|
{
|
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
|
string file;
|
string result;
|
Template template;
|
//IRespository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.IRepository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry3 = zip.CreateEntry("IRepository/I" + tableName + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
//Respository
|
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.Repository.tpl"), Encoding.UTF8))
|
{
|
file = reader.ReadToEnd();
|
template = Template.Parse(file);
|
result = template.Render(Hash.FromAnonymousObject(obj));
|
ZipArchiveEntry entry1 = zip.CreateEntry("Repository/" + tableName + "Repository.cs");
|
using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
|
{
|
entryStream.Write(result);
|
}
|
}
|
}
|
}
|
}
|