Files
Yi.Admin/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Handler/FieldTemplateHandler.cs

66 lines
2.0 KiB
C#
Raw Normal View History

2023-09-27 18:01:10 +08:00
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using System.Text;
2023-09-21 19:55:55 +08:00
using Furion.DependencyInjection;
2023-09-27 18:01:10 +08:00
using Yi.Framework.Module.WebFirstManager.Enums;
2023-09-21 00:04:55 +08:00
namespace Yi.Framework.Module.WebFirstManager.Handler
{
2023-09-22 10:25:05 +08:00
public class FieldTemplateHandler : TemplateHandlerBase, ITemplateHandler, ISingleton
2023-09-21 00:04:55 +08:00
{
2023-09-27 18:01:10 +08:00
public HandledTemplate Invoker(string str,string path)
2023-09-21 00:04:55 +08:00
{
2023-09-27 18:01:10 +08:00
var output= new HandledTemplate();
output.TemplateStr = str.Replace("@field", BuildFields());
output.BuildPath = path;
return output;
2023-09-21 00:04:55 +08:00
}
2023-09-22 10:25:05 +08:00
/// <summary>
/// 生成Fields
/// </summary>
/// <returns></returns>
public string BuildFields()
{
StringBuilder fieldStrs = new StringBuilder();
2023-09-24 00:42:09 +08:00
foreach (var field in Table.Fields)
2023-09-22 10:25:05 +08:00
{
2023-09-27 18:01:10 +08:00
var typeStr = typeof(FieldTypeEnum).GetFields().Where(x=> x.Name== field.FieldType.ToString())?.FirstOrDefault().GetCustomAttribute<DisplayAttribute>().Name;
if (typeStr is null)
{
continue;
}
2023-09-22 10:25:05 +08:00
var nameStr = field.Name;
//添加备注
2023-09-27 18:01:10 +08:00
if (!string.IsNullOrEmpty(field.Description))
2023-09-22 10:25:05 +08:00
{
2023-09-27 18:01:10 +08:00
var desStr = "/// <summary>\n" +
$"///{field.Description}\n" +
"/// </summary>\n";
2023-09-22 10:25:05 +08:00
fieldStrs.AppendLine(desStr);
}
//添加长度
if (field.Length != 0)
{
var lengthStr = $"[SugarColumn(Length ={field.Length})]";
fieldStrs.AppendLine(lengthStr);
}
//添加字段
var fieldStr = $"public {typeStr} {nameStr} {{ get; set; }}";
fieldStrs.AppendLine(fieldStr);
}
return fieldStrs.ToString();
}
2023-09-21 00:04:55 +08:00
}
}