2024-02-16 15:40:13 +08:00
|
|
|
|
using Volo.Abp.Domain.Services;
|
2024-02-16 21:06:34 +08:00
|
|
|
|
using Yi.Framework.CodeGen.Domain.Entities;
|
|
|
|
|
|
using Yi.Framework.CodeGen.Domain.Handlers;
|
2024-02-16 15:40:13 +08:00
|
|
|
|
using Yi.Framework.SqlSugarCore.Abstractions;
|
|
|
|
|
|
|
2024-02-16 21:06:34 +08:00
|
|
|
|
namespace Yi.Framework.CodeGen.Domain.Managers
|
2024-02-16 15:40:13 +08:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 代码文件领域服务,与代码文件生成相关,web to code
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class CodeFileManager : DomainService
|
|
|
|
|
|
{
|
|
|
|
|
|
private IEnumerable<ITemplateHandler> _templateHandlers;
|
2024-05-22 14:35:08 +08:00
|
|
|
|
private ISqlSugarRepository<TemplateAggregateRoot> _repository;
|
2024-02-16 15:40:13 +08:00
|
|
|
|
private ISqlSugarRepository<FieldEntity> _fieldRepository;
|
2024-05-22 14:35:08 +08:00
|
|
|
|
public CodeFileManager(IEnumerable<ITemplateHandler> templateHandlers, ISqlSugarRepository<FieldEntity> fieldRepository, ISqlSugarRepository<TemplateAggregateRoot> repository)
|
2024-02-16 15:40:13 +08:00
|
|
|
|
{
|
|
|
|
|
|
_templateHandlers = templateHandlers;
|
|
|
|
|
|
_repository = repository;
|
|
|
|
|
|
_fieldRepository = fieldRepository;
|
|
|
|
|
|
}
|
|
|
|
|
|
public async Task BuildWebToCodeAsync(TableAggregateRoot tableEntity)
|
|
|
|
|
|
{
|
|
|
|
|
|
var templates = await _repository.GetListAsync();
|
|
|
|
|
|
foreach (var template in templates)
|
|
|
|
|
|
{
|
|
|
|
|
|
var handledTempalte = new HandledTemplate();
|
|
|
|
|
|
handledTempalte.TemplateStr = template.TemplateStr;
|
|
|
|
|
|
handledTempalte.BuildPath = template.BuildPath;
|
|
|
|
|
|
foreach (var templateHandler in _templateHandlers)
|
|
|
|
|
|
{
|
|
|
|
|
|
templateHandler.SetTable(tableEntity);
|
|
|
|
|
|
handledTempalte = templateHandler.Invoker(handledTempalte.TemplateStr, handledTempalte.BuildPath);
|
|
|
|
|
|
}
|
|
|
|
|
|
await BuildToFileAsync(handledTempalte);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task BuildToFileAsync(HandledTemplate handledTemplate)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!Directory.Exists(Path.GetDirectoryName(handledTemplate.BuildPath)))
|
|
|
|
|
|
{
|
|
|
|
|
|
Directory.CreateDirectory(Path.GetDirectoryName(handledTemplate.BuildPath));
|
|
|
|
|
|
}
|
|
|
|
|
|
await File.WriteAllTextAsync(handledTemplate.BuildPath, handledTemplate.TemplateStr);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|