From ccebc3dea1ced43d68e08ad74af0f1362d13197e Mon Sep 17 00:00:00 2001 From: PhilPan Date: Tue, 26 Sep 2023 17:55:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=92=BB=E5=8F=96=E4=B8=80?= =?UTF-8?q?=E5=AF=B9=E5=A4=9A=E5=AD=90=E8=A1=A8=E6=97=B6=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E4=BA=86=E5=AD=97=E6=AE=B5=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.Vengine/AppService/BaseAppService.cs | 20 ++++++++++++++++++- .../AppService/VengineAppService.cs | 16 +++++++-------- .../AppService/VengineAppServiceT.cs | 11 +++------- .../AppService/VmodelAppService.cs | 4 ++-- .../Tnb.Vengine/DataAccess/DataAccess.cs | 16 ++++++++++----- .../Tnb.Vengine/DataAccess/IDataAccess.cs | 2 +- visualdev/Tnb.Vengine/Domain/VengineDto.cs | 16 ++++++++++++++- visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs | 4 ++-- 8 files changed, 61 insertions(+), 28 deletions(-) diff --git a/visualdev/Tnb.Vengine/AppService/BaseAppService.cs b/visualdev/Tnb.Vengine/AppService/BaseAppService.cs index 9aa3ac9f..96f5268e 100644 --- a/visualdev/Tnb.Vengine/AppService/BaseAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/BaseAppService.cs @@ -3,8 +3,13 @@ // https://git.tuotong-tech.com/tnb/tnb.server // ///////////////////////////////////////////////////////////////////////////////// +using Aspose.Cells.Drawing; using JNPF.DependencyInjection; using JNPF.DynamicApiController; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Tnb.Core; +using Tnb.Vengine.Domain; namespace Tnb.Vengine.AppService; @@ -13,4 +18,17 @@ namespace Tnb.Vengine.AppService; /// public class BaseAppService : IDynamicApiController, ITransient { -} \ No newline at end of file +} + +//[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 100)] +//public class VTestAppService : BaseAppService +//{ +// /// +// /// 获取多条 数据列表 +// /// +// public async Task ListAsync(string vmid, [FromQuery] VmGetListInput input) +// { +// return new List(); +// } + +//} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/VengineAppService.cs b/visualdev/Tnb.Vengine/AppService/VengineAppService.cs index 59fd359a..26b70109 100644 --- a/visualdev/Tnb.Vengine/AppService/VengineAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/VengineAppService.cs @@ -43,7 +43,7 @@ public class VengineAppService : BaseAppService, IVengineAppService public async Task GetAsync(string vmid, [FromQuery]VmGetInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); - VmQueryInput arg = input.Adapt(); + VmListInput arg = input.Adapt(); if (input.id != null) { if (arg.q == null) arg.q = new DObject(); @@ -60,7 +60,7 @@ public class VengineAppService : BaseAppService, IVengineAppService public async Task GetListAsync(string vmid, [FromQuery] VmGetListInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); - VmQueryInput arg = input.Adapt(); + VmListInput arg = input.Adapt(); if (!string.IsNullOrEmpty(input.q)) { arg.q = input.q.ToObject(); @@ -72,8 +72,8 @@ public class VengineAppService : BaseAppService, IVengineAppService /// /// 获取多条 数据列表 /// - [HttpPost("api/[area]/[controller]/{vmid}/query")] - public async Task QueryAsync(string vmid, [FromBody] VmQueryInput input) + [HttpPost("api/[area]/[controller]/{vmid}/list")] + public async Task ListAsync(string vmid, [FromBody] VmListInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); var ls = await _dataAccess.QueryDataAsync(vm, input); @@ -130,7 +130,7 @@ public class VengineAppService : BaseAppService, IVengineAppService public async Task GetAsync(string areaCode, string vmCode, [FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); - VmQueryInput arg = input.Adapt(); + VmListInput arg = input.Adapt(); if (input.id != null) { if (arg.q == null) arg.q = new DObject(); @@ -147,7 +147,7 @@ public class VengineAppService : BaseAppService, IVengineAppService public async Task GetListAsync(string areaCode, string vmCode, [FromQuery] VmGetListInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); - VmQueryInput arg = input.Adapt(); + VmListInput arg = input.Adapt(); if (!string.IsNullOrEmpty(input.q)) { arg.q = input.q.ToObject(); @@ -159,8 +159,8 @@ public class VengineAppService : BaseAppService, IVengineAppService /// /// 获取多条 数据列表 /// - [HttpPost("api/{areaCode}/{vmCode}/query")] - public async Task QueryAsync(string areaCode, string vmCode, [FromBody] VmQueryInput input) + [HttpPost("api/{areaCode}/{vmCode}/list")] + public async Task ListAsync(string areaCode, string vmCode, [FromBody] VmListInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ls = await _dataAccess.QueryDataAsync(vm, input); diff --git a/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs b/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs index 223db491..bf3abee6 100644 --- a/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs +++ b/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs @@ -66,7 +66,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity public virtual async Task GetAsync([FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(); - VmQueryInput arg = input.Adapt(); + VmListInput arg = input.Adapt(); if (input.id != null) { if (arg.q == null) arg.q = new DObject(); @@ -83,12 +83,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity public virtual async Task GetListAsync([FromQuery] VmGetListInput input) { var vm = await GetVmodelAsync(); - VmQueryInput arg = input.Adapt(); - if (!string.IsNullOrEmpty(input.q)) - { - arg.q = input.q.ToObject(); - } - var ls = await _dataAccess.QueryDataAsync(vm, arg); + var ls = await _dataAccess.QueryDataAsync(vm, input.ToListInput()); return ls; } @@ -96,7 +91,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 获取多条 数据列表 /// [HttpPost] - public virtual async Task QueryAsync([FromBody] VmQueryInput input) + public virtual async Task ListAsync([FromBody] VmListInput input) { var vm = await GetVmodelAsync(); var ls = await _dataAccess.QueryDataAsync(vm, input); diff --git a/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs b/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs index 01523379..7ded486e 100644 --- a/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs @@ -71,9 +71,9 @@ public class VmodelAppService : VengineAppService, IVmodelAppService } [NonAction] - public override Task QueryAsync(VmQueryInput input) + public override Task ListAsync(VmListInput input) { - return base.QueryAsync(input); + return base.ListAsync(input); } /// diff --git a/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs b/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs index c45a70d1..79b070ca 100644 --- a/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs +++ b/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs @@ -184,7 +184,7 @@ public class DataAccess : IDataAccess, ITransient, IDisposable /// /// 查询数据 默认方法 /// - public async Task QueryDataAsync(Vmodel vm, VmQueryInput input) + public async Task QueryDataAsync(Vmodel vm, VmListInput input) { ISqlSugarClient db = GetSqlSugar(vm.dbCode); var query = db.Queryable().AS(vm.tableName, VmSelectProp.MAIN_ALIES); @@ -259,8 +259,10 @@ public class DataAccess : IDataAccess, ITransient, IDisposable { if (prop.navType == eNavigateType.OneToOne) { + //以 nav_prop的形式返回 var key = prop.navCode + "_" + prop.code; ret.Add(key, src[key]); + //以 nav.prop的形式返回 //if (!ret.ContainsKey(prop.navCode)) //{ // ret.Add(prop.navCode, new DObject()); @@ -280,10 +282,14 @@ public class DataAccess : IDataAccess, ITransient, IDisposable var navProp = vm.navProps.First(a => a.code == prop.navCode); if (navProp != null && navProp.naviModel != null && src.ContainsKey(navProp.refField)) { - VmQueryInput input = new VmQueryInput(); - input.q = new DObject(navProp.refField, src[navProp.refField]); - input.o = string.Join(',', selProps.Where(a => a.navCode == prop.navCode).Select(a => a.code)); - ret[prop.navCode] = (await QueryDataAsync(navProp.naviModel, input)).items; + VmListInput input = new VmListInput(); + var fkProp = navProp.naviModel.FieldCodeToPropCode(navProp.fkField); + if (!string.IsNullOrEmpty(fkProp)) + { + input.q = new DObject(fkProp, src[navProp.refField]); + input.o = string.Join(',', selProps.Where(a => a.navCode == prop.navCode).Select(a => a.code)); + ret[prop.navCode] = (await QueryDataAsync(navProp.naviModel, input)).items; + } } } else if (prop.navType == eNavigateType.ManyToMany) diff --git a/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs b/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs index f6230d52..c656443f 100644 --- a/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs +++ b/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs @@ -48,7 +48,7 @@ public interface IDataAccess : ITransient /// /// 查询数据 默认方法 /// - Task QueryDataAsync(Vmodel vm, VmQueryInput input); + Task QueryDataAsync(Vmodel vm, VmListInput input); //Task CreateDataAsync(VmCreateInput input); /// diff --git a/visualdev/Tnb.Vengine/Domain/VengineDto.cs b/visualdev/Tnb.Vengine/Domain/VengineDto.cs index e70da56f..d1d441bf 100644 --- a/visualdev/Tnb.Vengine/Domain/VengineDto.cs +++ b/visualdev/Tnb.Vengine/Domain/VengineDto.cs @@ -3,6 +3,8 @@ // https://git.tuotong-tech.com/tnb/tnb.server // ///////////////////////////////////////////////////////////////////////////////// +using JNPF.Common.Security; +using Mapster; using Tnb.Core; namespace Tnb.Vengine.Domain; @@ -64,12 +66,24 @@ public class VmGetListInput : VmBaseInput /// 输出字段 /// public string o { get; set; } = "*"; + + public VmListInput ToListInput() + { + VmListInput arg = this.Adapt(); + + if (!string.IsNullOrEmpty(q)) + { + arg.q = q.ToObject(); + } + + return arg; + } } /// /// 获取多条数据输入参数 /// -public class VmQueryInput : VmGetListInput +public class VmListInput : VmGetListInput { /// /// 查询条件 diff --git a/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs b/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs index e2442008..ed621466 100644 --- a/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs +++ b/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs @@ -15,11 +15,11 @@ public class VmodelMapper : IRegister { public void Register(TypeAdapterConfig config) { - config.ForType() + config.ForType() .Map(dest => dest.psize, src => 1) .Map(dest => dest.pnum, src => 0) .Map(dest => dest.q, src => string.IsNullOrEmpty(src.q) ? null : src.q.ToObject()); - config.ForType() + config.ForType() .Map(dest => dest.q, src => string.IsNullOrEmpty(src.q) ? null : src.q.ToObject()); config.ForType() .Map(dest => dest.code, src => src.DbColumnName.ToCamel())