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

View File

@@ -1,9 +1,6 @@
using System; using Furion.DependencyInjection;
using System.Collections.Generic; using Yi.Framework.Infrastructure.Ddd.Repositories;
using System.Linq; using Yi.Framework.Module.WebFirstManager.Entities;
using System.Text;
using System.Threading.Tasks;
using Furion.DependencyInjection;
using Yi.Framework.Module.WebFirstManager.Handler; using Yi.Framework.Module.WebFirstManager.Handler;
namespace Yi.Framework.Module.WebFirstManager.Domain namespace Yi.Framework.Module.WebFirstManager.Domain
@@ -13,12 +10,37 @@ namespace Yi.Framework.Module.WebFirstManager.Domain
/// </summary> /// </summary>
public class TemplateManager : ITransient public class TemplateManager : ITransient
{ {
public ITemplateHandler TemplateVar { get; set; } private IEnumerable<ITemplateHandler> _templateHandlers;
private IRepository<TemplateEntity> _repository;
private IRepository<FieldEntity> _fieldRepository;
public string Replate(string templateStr, string templateVar, string tableName) 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.Text;
using System.Threading.Tasks; 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.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Furion.DependencyInjection;
namespace Yi.Framework.Module.WebFirstManager.Handler namespace Yi.Framework.Module.WebFirstManager.Handler
{ {
internal class FieldTemplateHandler : TemplateHandlerBase, ITemplateHandler internal class FieldTemplateHandler : TemplateHandlerBase, ITemplateHandler,ISingleton
{ {
public string Invoker(string str) public string Invoker(string str)
{ {

View File

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

View File

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

View File

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

View File

@@ -10,7 +10,16 @@ namespace Yi.Framework.Module.WebFirstManager.Handler
public class TemplateHandlerBase public class TemplateHandlerBase
{ {
protected TableEntity Table { get; set; } protected TableEntity Table { get; set; }
protected List<FieldEntity> Fields { 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 Microsoft.AspNetCore.Mvc;
using Yi.Framework.Infrastructure.Ddd.Repositories; using Yi.Framework.Infrastructure.Ddd.Repositories;
using Yi.Framework.Infrastructure.Ddd.Services; using Yi.Framework.Infrastructure.Ddd.Services;
using Yi.Framework.Module.WebFirstManager.Domain;
using Yi.Framework.Module.WebFirstManager.Dtos.WebFirst; using Yi.Framework.Module.WebFirstManager.Dtos.WebFirst;
using Yi.Framework.Module.WebFirstManager.Entities; using Yi.Framework.Module.WebFirstManager.Entities;
@@ -18,34 +19,52 @@ namespace Yi.Framework.Module.WebFirstManager.Impl
[ApiDescriptionSettings("WebFirstManager")] [ApiDescriptionSettings("WebFirstManager")]
public class WebFirstService : ApplicationService, IWebFirstService, IDynamicApiController, ITransient public class WebFirstService : ApplicationService, IWebFirstService, IDynamicApiController, ITransient
{ {
private IRepository<TemplateEntity> _repository; private IRepository<TableEntity> _tableRepository;
private IRepository<TemplateVarEntity> _varRepository; private TemplateManager _templateManager;
public WebFirstService(IRepository<TemplateEntity> repository, IRepository<TemplateVarEntity> varRepository) public WebFirstService(IRepository<TableEntity> tableRepository, TemplateManager templateManager)
{ {
_repository = repository; _tableRepository = tableRepository;
_varRepository = varRepository; _templateManager = templateManager;
} }
/// <summary> /// <summary>
/// 一键构建 /// 一键构建生成代码
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task PostBuildAsync() public async Task PostBuildCodeAsync()
{ {
//获取全部模板 //获取全部
var templates = await _repository.GetListAsync(); var tables = await _tableRepository.GetListAsync();
var varTemps = await _varRepository.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> <DocumentationFile>Yi.Framework.Module.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Compile Remove="WebFirstManager\Dtos\TemplateVar\**" />
<EmbeddedResource Remove="WebFirstManager\Dtos\TemplateVar\**" />
<None Remove="WebFirstManager\Dtos\TemplateVar\**" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Remove="ImageSharp\HeiCaptcha\fonts\Candara.ttf" /> <None Remove="ImageSharp\HeiCaptcha\fonts\Candara.ttf" />
<None Remove="ImageSharp\HeiCaptcha\fonts\impact.ttf" /> <None Remove="ImageSharp\HeiCaptcha\fonts\impact.ttf" />
@@ -35,9 +41,7 @@
<ItemGroup> <ItemGroup>
<Folder Include="DictionaryManager\" /> <Folder Include="DictionaryManager\" />
<Folder Include="WebFirstManager\Dtos\Template\" />
<Folder Include="WebFirstManager\Dtos\Table\" /> <Folder Include="WebFirstManager\Dtos\Table\" />
<Folder Include="WebFirstManager\Dtos\TemplateVar\" />
</ItemGroup> </ItemGroup>

View File

@@ -546,27 +546,30 @@
生成路径 生成路径
</summary> </summary>
</member> </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"> <member name="T:Yi.Framework.Module.WebFirstManager.Impl.FieldService">
<summary> <summary>
字段管理 字段管理
</summary> </summary>
</member> </member>
<member name="M:Yi.Framework.Module.WebFirstManager.Impl.WebFirstService.PostBuildAsync"> <member name="M:Yi.Framework.Module.WebFirstManager.Impl.WebFirstService.PostBuildCodeAsync">
<summary> <summary>
一键构建 一键构建生成代码
</summary> </summary>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:Yi.Framework.Module.WeChat.IWeChatManager.Code2SessionAsync(Yi.Framework.Module.WeChat.Model.Code2SessionInput)">
<summary> <summary>
获取用户openid 获取用户openid