feat: 完善webfirst模板及表模块

This commit is contained in:
陈淳
2023-09-21 19:55:55 +08:00
parent 18eb3a7fbf
commit 710bb97cd3
13 changed files with 110 additions and 88 deletions

View File

@@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SqlSugar;
using Yi.Framework.Infrastructure.AspNetCore;
using Yi.Framework.Infrastructure.Sqlsugar;
using Yi.Framework.Module.Caching;
@@ -33,6 +34,6 @@ public class Startup : AppStartup
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var db= app.ApplicationServices.GetRequiredService<ISqlSugarClient>();
}
}

View File

@@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Furion.DependencyInjection;
using Furion.DependencyInjection;
using Yi.Framework.Infrastructure.Ddd.Repositories;
using Yi.Framework.Module.WebFirstManager.Entities;
using Yi.Framework.Module.WebFirstManager.Handler;
namespace Yi.Framework.Module.WebFirstManager.Domain
@@ -13,12 +10,37 @@ namespace Yi.Framework.Module.WebFirstManager.Domain
/// </summary>
public class TemplateManager : ITransient
{
public ITemplateHandler TemplateVar { get; set; }
public string Replate(string templateStr, string templateVar, string tableName)
private IEnumerable<ITemplateHandler> _templateHandlers;
private IRepository<TemplateEntity> _repository;
private IRepository<FieldEntity> _fieldRepository;
public TemplateManager(IEnumerable<ITemplateHandler> templateHandlers, IRepository<FieldEntity> fieldRepository, IRepository<TemplateEntity> repository)
{
return templateStr.Replace(templateVar, tableName);
_templateHandlers = templateHandlers;
_repository = repository;
_fieldRepository = fieldRepository;
}
public async Task HandlerAsync(TableEntity tableEntity)
{
var templates = await _repository.GetListAsync();
var fields = await _fieldRepository.GetListAsync();
foreach (var template in templates)
{
string templateStr = template.TemplateStr;
foreach (var templateHandler in _templateHandlers)
{
templateHandler.SetTable(tableEntity);
templateHandler.SetFields(fields);
templateStr = templateHandler.Invoker(templateStr);
}
await BuildToFileAsync(templateStr, template);
}
}
private async Task BuildToFileAsync(string str, TemplateEntity templateEntity)
{
await File.WriteAllTextAsync(str, templateEntity.BuildPath);
}
}

View File

@@ -4,9 +4,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.Module.WebFirstManager
namespace Yi.Framework.Module.WebFirstManager.Dtos.Template
{
public interface ITemplateVarService
public class TemplateDto
{
}
}

View File

@@ -1,27 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using Yi.Framework.Infrastructure.Ddd.Entities;
namespace Yi.Framework.Module.WebFirstManager.Entities
{
public class TemplateVarEntity : IEntity<long>
{
[SugarColumn( IsPrimaryKey = true)]
public long Id { get; set; }
/// <summary>
/// 变量名称
/// </summary>
public string Name { get; set; }=string.Empty;
/// <summary>
/// 变量值
/// </summary>
public string Value { get; set; } = string.Empty;
}
}

View File

@@ -3,10 +3,11 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Furion.DependencyInjection;
namespace Yi.Framework.Module.WebFirstManager.Handler
{
internal class FieldTemplateHandler : TemplateHandlerBase, ITemplateHandler
internal class FieldTemplateHandler : TemplateHandlerBase, ITemplateHandler,ISingleton
{
public string Invoker(string str)
{

View File

@@ -3,11 +3,15 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Module.WebFirstManager.Entities;
namespace Yi.Framework.Module.WebFirstManager.Handler
{
public interface ITemplateHandler
{
void SetTable(TableEntity table);
void SetFields(List<FieldEntity> fields);
string Invoker(string str);
}
}

View File

@@ -4,10 +4,11 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EasyTool;
using Furion.DependencyInjection;
namespace Yi.Framework.Module.WebFirstManager.Handler
{
internal class ModelTemplateHandler : TemplateHandlerBase, ITemplateHandler
internal class ModelTemplateHandler : TemplateHandlerBase, ITemplateHandler, ISingleton
{
public string Invoker(string str)
{

View File

@@ -3,10 +3,11 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Furion.DependencyInjection;
namespace Yi.Framework.Module.WebFirstManager.Handler
{
internal class NameSpaceTemplateHandler : TemplateHandlerBase, ITemplateHandler
internal class NameSpaceTemplateHandler : TemplateHandlerBase, ITemplateHandler, ISingleton
{
public string Invoker(string str)
{

View File

@@ -10,7 +10,16 @@ namespace Yi.Framework.Module.WebFirstManager.Handler
public class TemplateHandlerBase
{
protected TableEntity Table { get; set; }
protected List<FieldEntity> Fields { get; set; }
public void SetTable(TableEntity table)
{
Table = table;
}
public void SetFields(List<FieldEntity> fields)
{
Fields = fields;
}
}
}

View File

@@ -1,16 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Microsoft.AspNetCore.Mvc;
namespace Yi.Framework.Module.WebFirstManager.Impl
{
[ApiDescriptionSettings("WebFirstManager")]
public class TemplateVarService: ITemplateVarService, IDynamicApiController, ITransient
{
}
}

View File

@@ -10,6 +10,7 @@ using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Microsoft.AspNetCore.Mvc;
using Yi.Framework.Infrastructure.Ddd.Repositories;
using Yi.Framework.Infrastructure.Ddd.Services;
using Yi.Framework.Module.WebFirstManager.Domain;
using Yi.Framework.Module.WebFirstManager.Dtos.WebFirst;
using Yi.Framework.Module.WebFirstManager.Entities;
@@ -18,34 +19,52 @@ namespace Yi.Framework.Module.WebFirstManager.Impl
[ApiDescriptionSettings("WebFirstManager")]
public class WebFirstService : ApplicationService, IWebFirstService, IDynamicApiController, ITransient
{
private IRepository<TemplateEntity> _repository;
private IRepository<TemplateVarEntity> _varRepository;
public WebFirstService(IRepository<TemplateEntity> repository, IRepository<TemplateVarEntity> varRepository)
private IRepository<TableEntity> _tableRepository;
private TemplateManager _templateManager;
public WebFirstService(IRepository<TableEntity> tableRepository, TemplateManager templateManager)
{
_repository = repository;
_varRepository = varRepository;
_tableRepository = tableRepository;
_templateManager = templateManager;
}
/// <summary>
/// 一键构建
/// 一键构建生成代码
/// </summary>
/// <returns></returns>
public async Task PostBuildAsync()
public async Task PostBuildCodeAsync()
{
//获取全部模板
var templates = await _repository.GetListAsync();
var varTemps = await _varRepository.GetListAsync();
//获取全部
var tables = await _tableRepository.GetListAsync();
foreach (var table in tables)
{
await BuildSingleTableAsync(table);
}
}
private async Task BuildSingleAsync(TemplateEntity template, List<TemplateVarEntity> templateVars)
/// <summary>
/// 一键构建生成表
/// </summary>
/// <returns></returns>
public async Task PostBuildTableAsync()
{
foreach (var tempVar in templateVars)
template.TemplateStr.Replace(tempVar.Value, "model");
}
/// <summary>
/// 每次去构建一张表的数据
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
private async Task BuildSingleTableAsync(TableEntity table)
{
await _templateManager.HandlerAsync(table);
}
}
}

View File

@@ -7,6 +7,12 @@
<DocumentationFile>Yi.Framework.Module.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Remove="WebFirstManager\Dtos\TemplateVar\**" />
<EmbeddedResource Remove="WebFirstManager\Dtos\TemplateVar\**" />
<None Remove="WebFirstManager\Dtos\TemplateVar\**" />
</ItemGroup>
<ItemGroup>
<None Remove="ImageSharp\HeiCaptcha\fonts\Candara.ttf" />
<None Remove="ImageSharp\HeiCaptcha\fonts\impact.ttf" />
@@ -35,9 +41,7 @@
<ItemGroup>
<Folder Include="DictionaryManager\" />
<Folder Include="WebFirstManager\Dtos\Template\" />
<Folder Include="WebFirstManager\Dtos\Table\" />
<Folder Include="WebFirstManager\Dtos\TemplateVar\" />
</ItemGroup>

View File

@@ -546,27 +546,30 @@
生成路径
</summary>
</member>
<member name="P:Yi.Framework.Module.WebFirstManager.Entities.TemplateVarEntity.Name">
<summary>
变量名称
</summary>
</member>
<member name="P:Yi.Framework.Module.WebFirstManager.Entities.TemplateVarEntity.Value">
<summary>
变量值
</summary>
</member>
<member name="T:Yi.Framework.Module.WebFirstManager.Impl.FieldService">
<summary>
字段管理
</summary>
</member>
<member name="M:Yi.Framework.Module.WebFirstManager.Impl.WebFirstService.PostBuildAsync">
<member name="M:Yi.Framework.Module.WebFirstManager.Impl.WebFirstService.PostBuildCodeAsync">
<summary>
一键构建
一键构建生成代码
</summary>
<returns></returns>
</member>
<member name="M:Yi.Framework.Module.WebFirstManager.Impl.WebFirstService.PostBuildTableAsync">
<summary>
一键构建生成表
</summary>
<returns></returns>
</member>
<member name="M:Yi.Framework.Module.WebFirstManager.Impl.WebFirstService.BuildSingleTableAsync(Yi.Framework.Module.WebFirstManager.Entities.TableEntity)">
<summary>
每次去构建一张表的数据
</summary>
<param name="table"></param>
<returns></returns>
</member>
<member name="M:Yi.Framework.Module.WeChat.IWeChatManager.Code2SessionAsync(Yi.Framework.Module.WeChat.Model.Code2SessionInput)">
<summary>
获取用户openid