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
{
///
/// 自动生成代码
///
public static class GeneratorCodeHelper
{
///
/// 单表生成对应数据
///
/// 表名称
/// 表说明
/// 表字段
public static byte[] CodeGenerator(string tableName, string tableDescription, List 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;
}
///
/// 生成整个数据库文件
///
/// 表名称
/// 表说明
/// 表字段
public static byte[] CodeGeneratorAll(List 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);
}
}
}
}
}