diff --git a/common/Tnb.Common/Models/DObject.cs b/common/Tnb.Common/Models/DObject.cs index eea73a8a..f26eb227 100644 --- a/common/Tnb.Common/Models/DObject.cs +++ b/common/Tnb.Common/Models/DObject.cs @@ -17,6 +17,21 @@ public class DObject : Dictionary { } + /// + /// 添加字典 + /// + /// 以.号分隔的多级路径 + /// + public void AddRange(Dictionary? dicts) + { + if (dicts == null) return; + foreach (var item in dicts) + { + this[item.Key] = item.Value; + } + } + + /// /// 将平面结构转换为树形嵌套结构 /// diff --git a/request.http b/request.http index 32cf24b5..eea74a8c 100644 --- a/request.http +++ b/request.http @@ -17,7 +17,7 @@ origin=password&code=&account=admin&login_type=&jnpf_ticket=&socialsOptions.IsCu @vmid=30060151588373 ### 获取一条数据 -GET {{host}}/api/tnb/vengine/{{vmid}}/get?whcode=007 +GET {{host}}/api/tnb/vengine/{{vmid}}/get?whcode=007&q={"whcode":">>002"} Authorization: {{token}} ### 获取多条数据 diff --git a/visualdev/Tnb.Vengine/Domain/VengineDto.cs b/visualdev/Tnb.Vengine/Domain/VengineDto.cs index 15807e7d..42536884 100644 --- a/visualdev/Tnb.Vengine/Domain/VengineDto.cs +++ b/visualdev/Tnb.Vengine/Domain/VengineDto.cs @@ -6,6 +6,7 @@ using JNPF.Common.Security; using Mapster; using Microsoft.AspNetCore.Http; +using Newtonsoft.Json; using Tnb.Core; namespace Tnb.Vengine.Domain; @@ -44,16 +45,22 @@ public class VmGetInput : VmBaseInput public void LoadFromHttpContext(HttpContext? context) { if (context == null) return; + var qStr = context.Request.Query["q"].ToString(); + if (!string.IsNullOrEmpty(qStr)) + { + var arg = JsonConvert.DeserializeObject(qStr); + q.AddRange(arg); + } string[] filter = new string[] { "id", "q", "o" }; foreach (var item in context.Request.Query.Where(a => !filter.Contains(a.Key))) { if (item.Value.Count > 1) { - q.Add(item.Key, item.Value.ToArray()); + q[item.Key] = item.Value.ToArray(); } else { - q.Add(item.Key, item.Value.ToString()); + q[item.Key] = item.Value.ToString(); } } } @@ -101,16 +108,22 @@ public class VmQueryInput : VmBaseInput public void LoadFromHttpContext(HttpContext? context) { if (context == null) return; + var qStr = context.Request.Query["q"].ToString(); + if (!string.IsNullOrEmpty(qStr)) + { + var arg = JsonConvert.DeserializeObject(qStr); + q.AddRange(arg); + } string[] filter = new string[] { "pnum", "psize", "sort", "k", "q", "o" }; foreach (var item in context.Request.Query.Where(a => !filter.Contains(a.Key))) { if (item.Value.Count > 1) { - q.Add(item.Key, item.Value.ToArray()); + q[item.Key] = item.Value.ToArray(); } else { - q.Add(item.Key, item.Value.ToString()); + q[item.Key] = item.Value.ToString(); } } }