From fbcd004b7ea282105c6fd02a31cfa42a0d31c069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Wed, 4 Jan 2023 13:40:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=84=E4=B8=AA=E6=9C=A8?= =?UTF-8?q?=E5=9D=97=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ERP/SupplierController.cs | 3 +- .../Controllers/StudentController.cs | 3 +- .../Abstract/ModelTemplateProvider.cs | 116 ++++++++++++++++++ .../Abstract/ProgramTemplateProvider.cs | 23 ++-- .../Const/TemplateConst.cs | 19 ++- .../Yi.Framework.Template/Program.cs | 29 +++-- .../Provider/Server/ConstTemplateProvider.cs | 19 +++ .../Server/ControllerTemplateProvider.cs | 19 +++ .../CreateUpdateInputTemplateProvider.cs | 20 +++ .../Server/GetListOutputTemplateProvider.cs | 20 +++ .../{ => Server}/IServceTemplateProvider.cs | 8 +- .../Server/ProfileTemplateProvider.cs | 19 +++ .../{ => Server}/ServceTemplateProvider.cs | 8 +- .../Provider/Site/ApiTemplateProvider.cs | 19 +++ .../Template/Server/ConstTemplate.txt | 12 ++ .../Template/Server/ControllerTemplate.txt | 81 ++++++++++++ .../Server/CreateUpdateInputTemplate.txt | 15 +++ .../Template/Server/GetListOutputTemplate.txt | 14 +++ .../{ => Server}/IServiceTemplate.txt | 0 .../Template/Server/ProfileTemplate.txt | 20 +++ .../Template/{ => Server}/ServiceTemplate.txt | 0 .../Template/Site/ApiTemplate.txt | 45 +++++++ .../Yi.Framework.Template.csproj | 26 +++- 23 files changed, 505 insertions(+), 33 deletions(-) create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Abstract/ModelTemplateProvider.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs rename Yi.Framework.Net6/Yi.Framework.Template/Provider/{ => Server}/IServceTemplateProvider.cs (54%) create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs rename Yi.Framework.Net6/Yi.Framework.Template/Provider/{ => Server}/ServceTemplateProvider.cs (54%) create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ConstTemplate.txt create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ControllerTemplate.txt create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Template/Server/CreateUpdateInputTemplate.txt create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Template/Server/GetListOutputTemplate.txt rename Yi.Framework.Net6/Yi.Framework.Template/Template/{ => Server}/IServiceTemplate.txt (100%) create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ProfileTemplate.txt rename Yi.Framework.Net6/Yi.Framework.Template/Template/{ => Server}/ServiceTemplate.txt (100%) create mode 100644 Yi.Framework.Net6/Yi.Framework.Template/Template/Site/ApiTemplate.txt diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/SupplierController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/SupplierController.cs index 1bfad73e..1a10baf5 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/SupplierController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/SupplierController.cs @@ -1,5 +1,4 @@ -using Brick.IFServer.Controllers; -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using Yi.Framework.Common.Models; using Yi.Framework.DtoModel.ERP.Supplier; using Yi.Framework.Interface.ERP; diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/StudentController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/StudentController.cs index 6417b387..b436afe9 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/StudentController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/StudentController.cs @@ -1,10 +1,9 @@ - using Microsoft.AspNetCore.Mvc; using Yi.Framework.Common.Models; using Yi.Framework.DtoModel.RABC.Student; using Yi.Framework.Interface.RABC; -namespace Brick.IFServer.Controllers +namespace Yi.Framework.ApiMicroservice.Controllers.ERP { [ApiController] [Route("[controller]")] diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ModelTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ModelTemplateProvider.cs new file mode 100644 index 00000000..a6f3ef05 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ModelTemplateProvider.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Abstract +{ + public abstract class ModelTemplateProvider : ProgramTemplateProvider + { + + public ModelTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + AddIgnoreEntityField("Id", "TenantId"); + } + + private string entityPath; + + /// + /// 实体路径,该类生成需要实体与模板两个同时构建成 + /// + public string EntityPath + { + get => this.entityPath; + set + { + value = value!.Replace(TemplateConst.EntityName, EntityName); + value = value.Replace(TemplateConst.ModelName, ModelName); + this.entityPath = value; + } + } + + + /// + /// 生成模板忽略实体字段 + /// + private List IgnoreEntityFields { get; set; } = new(); + + public override void Build() + { + if (BuildPath is null) + { + throw new ArgumentNullException(nameof(BuildPath)); + } + //模板信息 + var templateData = GetTemplateData(); + + //实体信息 + var enetityDatas = GetEntityData().ToList(); + + //获取全部属性字段 + for (var i = enetityDatas.Count() - 1; i >= 0; i--) + { + //不是字段属性直接删除跳过 + if (!enetityDatas[i].Contains("{ get; set; }")) + { + enetityDatas.RemoveAt(i); + continue; + } + //是字段属性,同时还包含忽略字段 + foreach (var IgnoreEntityField in IgnoreEntityFields) + { + if (enetityDatas[i].Contains(IgnoreEntityField)) + { + enetityDatas.RemoveAt(i); + continue; + } + } + } + + //拼接实体字段 + var entityFieldsbuild = string.Join("\r\n", enetityDatas); + + + //模板替换属性字段 + templateData = templateData.Replace(TemplateConst.EntityField, entityFieldsbuild); + + templateData = base.ReplaceTemplateDic(templateData); + + if (!Directory.Exists(Path.GetDirectoryName(BuildPath))) + { + Directory.CreateDirectory(Path.GetDirectoryName(BuildPath)!); + } + File.WriteAllText(BuildPath, templateData); + } + + /// + /// 获取实体信息 + /// + /// + /// + public virtual string[] GetEntityData() + { + if (TemplatePath is null) + { + throw new ArgumentNullException(nameof(entityPath)); + } + if (!File.Exists(entityPath)) + { + throw new FileNotFoundException($"请检查路径:{entityPath}\r\n未包含实体:{EntityName}"); + } + + return File.ReadAllLines(entityPath); + } + + /// + /// 添加忽略实体字段 + /// + /// + public void AddIgnoreEntityField(params string[] field) + { + IgnoreEntityFields.AddRange(field); + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ProgramTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ProgramTemplateProvider.cs index e86a14bc..8cad5e9a 100644 --- a/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ProgramTemplateProvider.cs +++ b/Yi.Framework.Net6/Yi.Framework.Template/Abstract/ProgramTemplateProvider.cs @@ -16,6 +16,8 @@ namespace Yi.Framework.Template.Abstract EntityName = entityName; base.AddTemplateDic(TemplateConst.EntityName, EntityName); base.AddTemplateDic(TemplateConst.ModelName, ModelName); + base.AddTemplateDic(TemplateConst.LowerEntityName, EntityName.Substring(0, 1).ToLower() + EntityName.Substring(1)); + base.AddTemplateDic(TemplateConst.LowerModelName, ModelName.ToLower()); } /// /// 实体名称 @@ -34,12 +36,22 @@ namespace Yi.Framework.Template.Abstract get => base.BuildPath; set { - value = value!.Replace(TemplateConst.EntityName, EntityName); - value = value.Replace(TemplateConst.ModelName, ModelName); + value = ReplaceTemplateDic(value!); + base.BuildPath = value; } } + public string ReplaceTemplateDic(string str) + { + foreach (var ky in TemplateDic) + { + str = str.Replace(ky.Key, ky.Value); + } + return str; + } + + public override void Build() { if (BuildPath is null) @@ -47,12 +59,9 @@ namespace Yi.Framework.Template.Abstract throw new ArgumentNullException(nameof(BuildPath)); } var templateData = GetTemplateData(); - foreach (var ky in TemplateDic) - { - templateData = templateData.Replace(ky.Key, ky.Value); - } + templateData = ReplaceTemplateDic(templateData); if (!Directory.Exists(Path.GetDirectoryName(BuildPath))) - { + { Directory.CreateDirectory(Path.GetDirectoryName(BuildPath)!); } File.WriteAllText(BuildPath, templateData); diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Const/TemplateConst.cs b/Yi.Framework.Net6/Yi.Framework.Template/Const/TemplateConst.cs index 02a6a6ca..5dc0ea9e 100644 --- a/Yi.Framework.Net6/Yi.Framework.Template/Const/TemplateConst.cs +++ b/Yi.Framework.Net6/Yi.Framework.Template/Const/TemplateConst.cs @@ -9,13 +9,28 @@ namespace Yi.Framework.Template.Const public class TemplateConst { /// - /// 模块名称 + /// 模块名称大写 /// public const string ModelName = "#ModelName#"; /// - /// 实体名称 + /// 模块名称小写 + /// + public const string LowerModelName = "#LowerModelName#"; + + /// + /// 实体名称大驼峰 /// public const string EntityName = "#EntityName#"; + + /// + /// 实体名称小驼峰 + /// + public const string LowerEntityName = "#LowerEntityName#"; + + /// + /// 实体字段 + /// + public const string EntityField = "#EntityField#"; } } diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Program.cs b/Yi.Framework.Net6/Yi.Framework.Template/Program.cs index cfe78381..0961099d 100644 --- a/Yi.Framework.Net6/Yi.Framework.Template/Program.cs +++ b/Yi.Framework.Net6/Yi.Framework.Template/Program.cs @@ -1,20 +1,31 @@ using Yi.Framework.Template; -using Yi.Framework.Template.Provider; +using Yi.Framework.Template.Provider.Server; +using Yi.Framework.Template.Provider.Site; TemplateFactory templateFactory = new(); //选择需要生成的模板提供者 string modelName = "ERP"; -string entityName = "Test"; +List entityNames =new (){ "Supplier", "Purchase", "PurchaseDetails" }; -templateFactory.CreateTemplateProviders((option) => +foreach (var entityName in entityNames) { - option.Add(new ServceTemplateProvider(modelName, entityName)); - option.Add(new IServceTemplateProvider(modelName, entityName)); -}); + templateFactory.CreateTemplateProviders((option) => + { + option.Add(new ServceTemplateProvider(modelName, entityName)); + option.Add(new IServceTemplateProvider(modelName, entityName)); + option.Add(new CreateUpdateInputTemplateProvider(modelName, entityName)); + option.Add(new GetListOutputTemplateProvider(modelName, entityName)); + option.Add(new ConstTemplateProvider(modelName, entityName)); + option.Add(new ProfileTemplateProvider(modelName, entityName)); + option.Add(new ControllerTemplateProvider(modelName, entityName)); + option.Add(new ApiTemplateProvider(modelName, entityName)); + }); + //开始构建模板 + templateFactory.BuildTemplate(); + Console.WriteLine($"Yi.Framework.Template:{entityName}构建完成!"); +} -//开始构建模板 -templateFactory.BuildTemplate(); -Console.WriteLine("Yi.Framework.Template模板生成完成!"); +Console.WriteLine("Yi.Framework.Template:模板全部生成完成!"); Console.ReadKey(); \ No newline at end of file diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs new file mode 100644 index 00000000..8cbed5bd --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ConstTemplateProvider.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Abstract; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Provider.Server +{ + internal class ConstTemplateProvider : ProgramTemplateProvider + { + public ConstTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\ConstConfig\{TemplateConst.EntityName}Const.cs"; + TemplatePath = $@"..\..\..\Template\Server\ConstTemplate.txt"; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs new file mode 100644 index 00000000..1ed12e25 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ControllerTemplateProvider.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Abstract; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Provider.Server +{ + public class ControllerTemplateProvider : ProgramTemplateProvider + { + public ControllerTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.ApiMicroservice\Controllers\{TemplateConst.ModelName}\{TemplateConst.EntityName}Controller.cs"; + TemplatePath = $@"..\..\..\Template\Server\ControllerTemplate.txt"; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs new file mode 100644 index 00000000..b808d7ef --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/CreateUpdateInputTemplateProvider.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Abstract; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Provider.Server +{ + public class CreateUpdateInputTemplateProvider : ModelTemplateProvider + { + public CreateUpdateInputTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\{TemplateConst.EntityName}CreateUpdateInput.cs"; + TemplatePath = $@"..\..\..\Template\Server\CreateUpdateInputTemplate.txt"; + EntityPath = $@"..\..\..\..\Yi.Framework.Model\{TemplateConst.ModelName}\Entitys\{TemplateConst.EntityName}Entity.cs"; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs new file mode 100644 index 00000000..fa6df140 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/GetListOutputTemplateProvider.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Abstract; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Provider.Server +{ + public class GetListOutputTemplateProvider : ModelTemplateProvider + { + public GetListOutputTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\{TemplateConst.EntityName}GetListOutput.cs"; + TemplatePath = $@"..\..\..\Template\Server\GetListOutputTemplate.txt"; + EntityPath = $@"..\..\..\..\Yi.Framework.Model\{TemplateConst.ModelName}\Entitys\{TemplateConst.EntityName}Entity.cs"; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/IServceTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs similarity index 54% rename from Yi.Framework.Net6/Yi.Framework.Template/Provider/IServceTemplateProvider.cs rename to Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs index 414b9d8d..fa53c8c6 100644 --- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/IServceTemplateProvider.cs +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/IServceTemplateProvider.cs @@ -6,14 +6,14 @@ using System.Threading.Tasks; using Yi.Framework.Template.Abstract; using Yi.Framework.Template.Const; -namespace Yi.Framework.Template.Provider +namespace Yi.Framework.Template.Provider.Server { public class IServceTemplateProvider : ProgramTemplateProvider { - public IServceTemplateProvider(string modelName, string entityName) : base( modelName,entityName) + public IServceTemplateProvider(string modelName, string entityName) : base(modelName, entityName) { - BuildPath = $@"..\..\..\Code\Yi.Framework.Interface\{TemplateConst.ModelName}\I{TemplateConst.EntityName}Service.cs"; - TemplatePath = $@"..\..\..\Template\IServiceTemplate.txt"; + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.Interface\{TemplateConst.ModelName}\I{TemplateConst.EntityName}Service.cs"; + TemplatePath = $@"..\..\..\Template\Server\IServiceTemplate.txt"; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs new file mode 100644 index 00000000..5211c537 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ProfileTemplateProvider.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Abstract; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Provider.Server +{ + public class ProfileTemplateProvider : ProgramTemplateProvider + { + public ProfileTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.DtoModel\{TemplateConst.ModelName}\{TemplateConst.EntityName}\MapperConfig\{TemplateConst.EntityName}Profile.cs"; + TemplatePath = $@"..\..\..\Template\Server\ProfileTemplate.txt"; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/ServceTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs similarity index 54% rename from Yi.Framework.Net6/Yi.Framework.Template/Provider/ServceTemplateProvider.cs rename to Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs index 9db4ae64..79a0695b 100644 --- a/Yi.Framework.Net6/Yi.Framework.Template/Provider/ServceTemplateProvider.cs +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Server/ServceTemplateProvider.cs @@ -6,14 +6,14 @@ using System.Threading.Tasks; using Yi.Framework.Template.Abstract; using Yi.Framework.Template.Const; -namespace Yi.Framework.Template.Provider +namespace Yi.Framework.Template.Provider.Server { public class ServceTemplateProvider : ProgramTemplateProvider { - public ServceTemplateProvider(string modelName, string entityName) : base( modelName,entityName) + public ServceTemplateProvider(string modelName, string entityName) : base(modelName, entityName) { - BuildPath = $@"..\..\..\Code\Yi.Framework.Service\{TemplateConst.ModelName}\{TemplateConst.EntityName}Service.cs"; - TemplatePath = $@"..\..\..\Template\ServiceTemplate.txt"; + BuildPath = $@"..\..\..\Code_Server\Yi.Framework.Service\{TemplateConst.ModelName}\{TemplateConst.EntityName}Service.cs"; + TemplatePath = $@"..\..\..\Template\Server\ServiceTemplate.txt"; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs new file mode 100644 index 00000000..8f3afb2e --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Provider/Site/ApiTemplateProvider.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Template.Abstract; +using Yi.Framework.Template.Const; + +namespace Yi.Framework.Template.Provider.Site +{ + public class ApiTemplateProvider : ProgramTemplateProvider + { + public ApiTemplateProvider(string modelName, string entityName) : base(modelName, entityName) + { + BuildPath = $@"..\..\..\Code_Site\src\api\{TemplateConst.ModelName}\{TemplateConst.LowerEntityName}Api.js"; + TemplatePath = $@"..\..\..\Template\Site\ApiTemplate.txt"; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ConstTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ConstTemplate.txt new file mode 100644 index 00000000..4c589964 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ConstTemplate.txt @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.DtoModel.#ModelName#.#EntityName#.ConstConfig +{ + public class #EntityName#Const + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ControllerTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ControllerTemplate.txt new file mode 100644 index 00000000..2951131e --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ControllerTemplate.txt @@ -0,0 +1,81 @@ +using Microsoft.AspNetCore.Mvc; +using Yi.Framework.Common.Models; +using Yi.Framework.DtoModel.#ModelName#.#EntityName#; +using Yi.Framework.Interface.#ModelName#; + +namespace Yi.Framework.ApiMicroservice.Controllers.#ModelName# +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class #EntityName#Controller : ControllerBase + { + private readonly ILogger<#EntityName#Controller> _logger; + private readonly I#EntityName#Service _#LowerEntityName#Service; + public #EntityName#Controller(ILogger<#EntityName#Controller> logger, I#EntityName#Service #LowerEntityName#Service) + { + _logger = logger; + _#LowerEntityName#Service = #LowerEntityName#Service; + } + + /// + /// 分页查 + /// + /// + [HttpGet] + public async Task PageList([FromQuery] #EntityName#CreateUpdateInput input, [FromQuery] PageParModel page) + { + var result = await _#LowerEntityName#Service.PageListAsync(input, page); + return Result.Success().SetData(result); + } + + /// + /// 单查 + /// + /// + [HttpGet] + [Route("{id}")] + public async Task GetById(long id) + { + var result = await _#LowerEntityName#Service.GetByIdAsync(id); + return Result.Success().SetData(result); + } + + /// + /// 增 + /// + /// + /// + [HttpPost] + public async Task Create(#EntityName#CreateUpdateInput input) + { + var result = await _#LowerEntityName#Service.CreateAsync(input); + return Result.Success().SetData(result); + } + + /// + /// 更 + /// + /// + /// + /// + [HttpPut] + [Route("{id}")] + public async Task Update(long id, #EntityName#CreateUpdateInput input) + { + var result = await _#LowerEntityName#Service.UpdateAsync(id, input); + return Result.Success().SetData(result); + } + + /// + /// 删 + /// + /// + /// + [HttpDelete] + public async Task Del(List ids) + { + await _#LowerEntityName#Service.DeleteAsync(ids); + return Result.Success(); + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/CreateUpdateInputTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/CreateUpdateInputTemplate.txt new file mode 100644 index 00000000..de35e69a --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/CreateUpdateInputTemplate.txt @@ -0,0 +1,15 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Model.Base; + +namespace Yi.Framework.DtoModel.#ModelName#.#EntityName# +{ + public class #EntityName#CreateUpdateInput : EntityDto + { +#EntityField# + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/GetListOutputTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/GetListOutputTemplate.txt new file mode 100644 index 00000000..52e3c644 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/GetListOutputTemplate.txt @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Model.Base; + +namespace Yi.Framework.DtoModel.#ModelName#.#EntityName# +{ + public class #EntityName#GetListOutput: EntityDto + { +#EntityField# + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/IServiceTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/IServiceTemplate.txt similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.Template/Template/IServiceTemplate.txt rename to Yi.Framework.Net6/Yi.Framework.Template/Template/Server/IServiceTemplate.txt diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ProfileTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ProfileTemplate.txt new file mode 100644 index 00000000..f545b835 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ProfileTemplate.txt @@ -0,0 +1,20 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Model.#ModelName#.Entitys; + +namespace Yi.Framework.DtoModel.#ModelName#.#EntityName#.MapperConfig +{ + public class Suppli#ModelName#rofile:Profile + { + public Suppli#ModelName#rofile() + { + CreateMap<#EntityName#CreateUpdateInput, #EntityName#Entity>(); + CreateMap<#EntityName#Entity, #EntityName#GetListOutput>(); + + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/ServiceTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ServiceTemplate.txt similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.Template/Template/ServiceTemplate.txt rename to Yi.Framework.Net6/Yi.Framework.Template/Template/Server/ServiceTemplate.txt diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Template/Site/ApiTemplate.txt b/Yi.Framework.Net6/Yi.Framework.Template/Template/Site/ApiTemplate.txt new file mode 100644 index 00000000..dc12e694 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Template/Template/Site/ApiTemplate.txt @@ -0,0 +1,45 @@ +import request from '@/utils/request' + +// 分页查询 +export function listData(query) { + return request({ + url: '/#LowerEntityName#/pageList', + method: 'get', + params: query + }) +} + +// id查询 +export function getData(code) { + return request({ + url: '/#LowerEntityName#/getById/' + code, + method: 'get' + }) +} + +// 新增 +export function addData(data) { + return request({ + url: '/#LowerEntityName#/create', + method: 'post', + data: data + }) +} + +// 修改 +export function updateData(id,data) { + return request({ + url: `/#LowerEntityName#/update/${id}`, + method: 'put', + data: data + }) +} + +// 删除 +export function delData(code) { + return request({ + url: '/#LowerEntityName#/del', + method: 'delete', + data:"string"==typeof(code)?[code]:code + }) +} diff --git a/Yi.Framework.Net6/Yi.Framework.Template/Yi.Framework.Template.csproj b/Yi.Framework.Net6/Yi.Framework.Template/Yi.Framework.Template.csproj index 82887671..49318819 100644 --- a/Yi.Framework.Net6/Yi.Framework.Template/Yi.Framework.Template.csproj +++ b/Yi.Framework.Net6/Yi.Framework.Template/Yi.Framework.Template.csproj @@ -7,22 +7,42 @@ Exe + - - + Always - + Always + + Always + + + Always + + + Always + + + Always + + + + Always + + + + Always +