Browse Source

数据权限变更接口

wyfilcn 1 year ago
parent
commit
2a958147f2
41 changed files with 734 additions and 39 deletions
  1. BIN
      .vs/DataControlMod/DesignTimeBuild/.dtbcache.v2
  2. BIN
      .vs/DataControlMod/FileContentIndex/14267b85-0ed6-483a-993f-d3b5efb5c53b.vsidx
  3. BIN
      .vs/DataControlMod/FileContentIndex/335cf8dd-9a7e-496f-bb6a-7f1b79df5315.vsidx
  4. BIN
      .vs/DataControlMod/FileContentIndex/51bce136-615e-40f0-abb9-f324db32adad.vsidx
  5. BIN
      .vs/DataControlMod/FileContentIndex/5ba358fa-74d7-460f-833e-07c36ed1752f.vsidx
  6. BIN
      .vs/DataControlMod/FileContentIndex/a769be6f-7978-4dde-8fc9-35090bd7797b.vsidx
  7. BIN
      .vs/DataControlMod/FileContentIndex/af794e3e-8017-4327-bf4d-d2cdab04c277.vsidx
  8. BIN
      .vs/DataControlMod/FileContentIndex/dcf45f98-078b-43f5-8eb3-071be523fdf0.vsidx
  9. BIN
      .vs/DataControlMod/FileContentIndex/de4c4c91-121e-45da-af0e-9c9f1ecd08e9.vsidx
  10. BIN
      .vs/DataControlMod/v17/.futdcache.v2
  11. BIN
      .vs/DataControlMod/v17/.suo
  12. BIN
      .vs/ProjectEvaluation/datacontrolmod.metadata.v6.1
  13. BIN
      .vs/ProjectEvaluation/datacontrolmod.projects.v6.1
  14. 170 13
      DataControlMod/Controllers/InputDataModifyController.cs
  15. 151 0
      DataControlMod/Controllers/OutputDataModifyController.cs
  16. 8 0
      DataControlMod/DataControlMod.csproj
  17. 12 0
      DataControlMod/Entity/FilterEntity.cs
  18. 11 0
      DataControlMod/Entity/InputData.cs
  19. 29 0
      DataControlMod/Entity/OutputData.cs
  20. 0 18
      DataControlMod/Entity/datasourceinfo.cs
  21. 10 3
      DataControlMod/Program.cs
  22. 6 1
      DataControlMod/appsettings.json
  23. 66 0
      DataControlMod/bin/Debug/net6.0/DataControlMod.deps.json
  24. BIN
      DataControlMod/bin/Debug/net6.0/DataControlMod.dll
  25. BIN
      DataControlMod/bin/Debug/net6.0/DataControlMod.pdb
  26. BIN
      DataControlMod/bin/Debug/net6.0/Microsoft.AspNetCore.JsonPatch.dll
  27. BIN
      DataControlMod/bin/Debug/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll
  28. BIN
      DataControlMod/bin/Debug/net6.0/Newtonsoft.Json.Bson.dll
  29. 5 1
      DataControlMod/bin/Debug/net6.0/appsettings.json
  30. 4 0
      DataControlMod/obj/DataControlMod.csproj.nuget.dgspec.json
  31. BIN
      DataControlMod/obj/Debug/net6.0/DataControlMod.assets.cache
  32. BIN
      DataControlMod/obj/Debug/net6.0/DataControlMod.csproj.AssemblyReference.cache
  33. 1 1
      DataControlMod/obj/Debug/net6.0/DataControlMod.csproj.CoreCompileInputs.cache
  34. 63 0
      DataControlMod/obj/Debug/net6.0/DataControlMod.csproj.FileListAbsolute.txt
  35. BIN
      DataControlMod/obj/Debug/net6.0/DataControlMod.dll
  36. 1 1
      DataControlMod/obj/Debug/net6.0/DataControlMod.genruntimeconfig.cache
  37. BIN
      DataControlMod/obj/Debug/net6.0/DataControlMod.pdb
  38. BIN
      DataControlMod/obj/Debug/net6.0/ref/DataControlMod.dll
  39. BIN
      DataControlMod/obj/Debug/net6.0/refint/DataControlMod.dll
  40. 192 0
      DataControlMod/obj/project.assets.json
  41. 5 1
      DataControlMod/obj/project.nuget.cache

BIN
.vs/DataControlMod/DesignTimeBuild/.dtbcache.v2


BIN
.vs/DataControlMod/FileContentIndex/14267b85-0ed6-483a-993f-d3b5efb5c53b.vsidx


BIN
.vs/DataControlMod/FileContentIndex/335cf8dd-9a7e-496f-bb6a-7f1b79df5315.vsidx


BIN
.vs/DataControlMod/FileContentIndex/51bce136-615e-40f0-abb9-f324db32adad.vsidx


BIN
.vs/DataControlMod/FileContentIndex/5ba358fa-74d7-460f-833e-07c36ed1752f.vsidx


BIN
.vs/DataControlMod/FileContentIndex/a769be6f-7978-4dde-8fc9-35090bd7797b.vsidx


BIN
.vs/DataControlMod/FileContentIndex/af794e3e-8017-4327-bf4d-d2cdab04c277.vsidx


BIN
.vs/DataControlMod/FileContentIndex/dcf45f98-078b-43f5-8eb3-071be523fdf0.vsidx


BIN
.vs/DataControlMod/FileContentIndex/de4c4c91-121e-45da-af0e-9c9f1ecd08e9.vsidx


BIN
.vs/DataControlMod/v17/.futdcache.v2


BIN
.vs/DataControlMod/v17/.suo


BIN
.vs/ProjectEvaluation/datacontrolmod.metadata.v6.1


BIN
.vs/ProjectEvaluation/datacontrolmod.projects.v6.1


+ 170 - 13
DataControlMod/Controllers/InputDataModifyController.cs

@@ -1,35 +1,192 @@
-using Dapper;
+using Dapper;
+using DataControlMod.Common;
 using Microsoft.AspNetCore.Mvc;
-using MySqlX.XDevAPI.Common;
 using Newtonsoft.Json;
-using PullChargeData.Entity;
+using Newtonsoft.Json.Linq;
 using PullChargeData.Helper;
 using System.Data;
+using static System.Net.Mime.MediaTypeNames;
+using System.Text;
+using DataControlMod.Entity;
 
 namespace DataControlMod.Controllers
 {
     [ApiController]
-    [Route("[controller]")]
-    public class InputDataModifyController : ControllerBase
+    [Route("newOpenApi/[action]")]
+    public class InputDataModifyController:ControllerBase
     {
-        private readonly ILogger<InputDataModifyController> _logger;
+        private readonly ILogger<OutputDataModifyController> _logger;
+        private readonly IHttpClientFactory _httpClientFactory;
 
-        public InputDataModifyController(ILogger<InputDataModifyController> logger)
+        public InputDataModifyController(ILogger<OutputDataModifyController> logger, IHttpClientFactory httpClientFactory)
         {
             _logger = logger;
+            _httpClientFactory = httpClientFactory;
         }
 
-        [HttpPost(Name = "newOpenApi/search")]
-        public dynamic ExamApi(dynamic inputData)
+        [HttpPost]
+        public async Task<JObject> DataChange([FromHeader] string token, dynamic inputData)
         {
+            //获取用户查询数据权限
+            var inputObj = JsonConvert.DeserializeObject(inputData.ToString());
+            var user_id = inputObj.user_id;
+            var auth_id = inputObj.auth_id;
             using (IDbConnection conn = DapperHelper.MySqlConnection())
             {
-                string sql = "select * from datasourceinfo";
+                string sql = $@"SELECT 
+                                    ur.user_id,
+	                                group_concat(rad.new_col_condition SEPARATOR ' and ') as new_col_condition,
+	                                group_concat(rad.edit_row_condition SEPARATOR ' and ') as edit_row_condition,
+	                                group_concat(rad.edit_col_condition SEPARATOR ' and ') as edit_col_condition,
+	                                group_concat(rad.delete_row_condition SEPARATOR ' and ') as delete_row_condition
+                                FROM
+	                                t_user_role ur,
+	                                t_auth auth,
+	                                t_role_auth ra
+                                LEFT JOIN t_role_auth_data rad on rad.role_id = ra.role_id and rad.auth_id = ra.auth_id
+                                WHERE
+	                                ur.role_id = ra.role_id 
+	                                AND ra.auth_id = auth.auth_id 
+	                                AND ur.user_id = @user_id
+                                    AND (not isnull(query_row_condition) or not isnull(query_col_conditon))
+	                                AND auth.auth_id = @auth_id";
                 var dynamicParams = new DynamicParameters();
-                var result = conn.Query<datasourceinfo>(sql, dynamicParams).ToList();
+                dynamicParams.Add("user_id", user_id.ToString());
+                dynamicParams.Add("auth_id", auth_id.ToString());
 
-                return result;
+                var result = conn.Query(sql, dynamicParams).FirstOrDefault();
+
+                if (result.user_id != null)
+                {
+                    var dataContent = inputObj.dataContent;
+                    var eventVal = inputObj["event"].ToString();
+
+
+                    var queryCol = result.query_col_condition == null ? null : result.query_col_condition.ToString();
+                    string[] queryColArr = queryCol.Split(",");
+                    List<string> queryColList = queryColArr.Cast<string>().ToList();
+
+                    var queryRow = result.query_row_condition == null ? null : result.query_row_condition.ToString();
+                    string[] queryRowArr = queryRow.Split(" and ");
+                    List<string> queryRowListTmp = queryRowArr.Cast<string>().ToList();
+                    var queryRowList = new Dictionary<string, dynamic>();
+                    foreach (var item in queryRowListTmp)
+                    {
+                        queryRowList.Add(item.Split("=")[0], item.Split("=")[1]);
+                    }
+
+
+                    var removeList = new List<string>();
+                    var filterItem = new List<JObject>();
+                    if (eventVal == "1")
+                    {
+                        if (!string.IsNullOrEmpty(queryCol))
+                        {
+                            foreach (var item in dataContent)
+                            {
+                                foreach(var itemChild in item)
+                                {
+                                    var tmp = queryColList.Exists(col => col == itemChild.Name);
+                                    if (!tmp)
+                                    {
+                                        removeList.Add(itemChild.Name);
+                                    }
+                                }
+                                foreach(var itemName in removeList)
+                                {
+                                    item.Remove(itemName);
+                                }
+                            }
+                        }
+                    }
+                    else if(eventVal == "2")
+                    {
+
+                        if (!string.IsNullOrEmpty(queryCol))
+                        {
+                            foreach (var item in dataContent)
+                            {
+                                foreach (var itemChild in item)
+                                {
+                                    var tmp = queryColList.Exists(col => col == itemChild.Name);
+                                    if (!tmp)
+                                    {
+                                        removeList.Add(itemChild.Name);
+                                    }
+                                }
+                                foreach (var itemName in removeList)
+                                {
+                                    item.Remove(itemName);
+                                }
+                            }
+                        }
+
+                        if (!string.IsNullOrEmpty(queryRow))
+                        {
+                            foreach (var item in dataContent.filter)
+                            {
+                                foreach (var queryItem in queryRowList)
+                                {
+                                    var queryKey = queryItem.Key;
+                                    var newFilter = new filterEntity();
+                                    newFilter.left = "(";
+                                    newFilter.right = ")";
+                                    newFilter.connector = "and";
+                                    newFilter.comparator = "=";
+                                    newFilter.column = queryItem.Key;
+                                    newFilter.value = queryItem.Value;
+
+                                    filterItem.Add(JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(newFilter)));
+                                }
+                            }
+                        }
+
+                        dataContent.filter.AddRange(filterItem);
+                    }
+                    else if(eventVal == "3")
+                    {
+                        if (!string.IsNullOrEmpty(queryRow))
+                        {
+                            foreach (var item in dataContent.filter)
+                            {
+                                foreach (var queryItem in queryRowList)
+                                {
+                                    var queryKey = queryItem.Key;
+                                    var newFilter = new filterEntity();
+                                    newFilter.left = "(";
+                                    newFilter.right = ")";
+                                    newFilter.connector = "and";
+                                    newFilter.comparator = "=";
+                                    newFilter.column = queryItem.Key;
+                                    newFilter.value = queryItem.Value;
+
+                                    filterItem.Add(JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(newFilter)));
+                                }
+                            }
+                        }
+
+                        dataContent.filter.AddRange(filterItem);
+                    }
+
+                }
+
+                //读取底座接口配置
+                var uri_db2 = AppSettingsHelper.App("DB2", "set1");
+                var method_db2 = AppSettingsHelper.App("DB2", "set1_datachange_method");
+
+                //配置httpClient请求底座接口
+                HttpClient httpClient = _httpClientFactory.CreateClient();
+                httpClient.BaseAddress = new Uri(uri_db2);
+                var inputBody = new StringContent(JsonConvert.SerializeObject(inputObj), Encoding.UTF8, Application.Json);
+                var httpResponseMessage = await httpClient.PostAsync(method_db2, inputBody);
+
+                //处理返回值
+                httpResponseMessage.EnsureSuccessStatusCode();
+                var rtnStr = await httpResponseMessage.Content.ReadAsStringAsync();
+                var rtnObj = JsonConvert.DeserializeObject<dynamic>(rtnStr.ToString());
+
+                return rtnObj;
             }
         }
     }
-}
+}

+ 151 - 0
DataControlMod/Controllers/OutputDataModifyController.cs

@@ -0,0 +1,151 @@
+using Dapper;
+using DataControlMod.Common;
+using DataControlMod.Entity;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Net.Http.Headers;
+using MySqlX.XDevAPI.Common;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using PullChargeData.Helper;
+using System.Data;
+using System.Net.Http;
+using System.Text;
+using System.Linq;
+using static System.Net.Mime.MediaTypeNames;
+
+namespace DataControlMod.Controllers
+{
+    [ApiController]
+    [Route("newOpenApi/[action]")]
+    public class OutputDataModifyController : ControllerBase
+    {
+        private readonly ILogger<OutputDataModifyController> _logger;
+        private readonly IHttpClientFactory _httpClientFactory;
+
+        public OutputDataModifyController(ILogger<OutputDataModifyController> logger, IHttpClientFactory httpClientFactory)
+        {
+            _logger = logger;
+            _httpClientFactory = httpClientFactory;
+        }
+
+        [HttpPost]
+        public async Task<JObject> search([FromHeader] string token, dynamic inputData)
+        {
+            //读取底座接口配置
+            var uri_db2 = AppSettingsHelper.App("DB2", "set1");
+            var method_db2 = AppSettingsHelper.App("DB2", "set1_query_method");
+
+            //配置httpClient请求底座接口
+            HttpClient httpClient = _httpClientFactory.CreateClient();
+            httpClient.BaseAddress = new Uri(uri_db2);
+            var inputBody = new StringContent(inputData.ToString(),Encoding.UTF8,Application.Json);
+            var httpResponseMessage = await httpClient.PostAsync(method_db2, inputBody);
+            //处理返回值
+            httpResponseMessage.EnsureSuccessStatusCode();
+            var rtnStr = await httpResponseMessage.Content.ReadAsStringAsync();
+            var rtnObj = JsonConvert.DeserializeObject<dynamic>(rtnStr.ToString());
+            //获取用户查询数据权限
+            var inputObj = JsonConvert.DeserializeObject(inputData.ToString());
+            var user_id = inputObj.user_id;
+            var auth_id = inputObj.auth_id;
+            using (IDbConnection conn = DapperHelper.MySqlConnection())
+            {
+                string sql = $@"SELECT 
+                                    ur.user_id,
+	                                group_concat(rad.query_row_condition SEPARATOR ' and ') as query_row_condition,
+	                                group_concat(rad.query_col_conditon SEPARATOR ' and ') as query_col_condition,
+	                                group_concat(rad.new_col_condition SEPARATOR ' and ') as new_col_condition,
+	                                group_concat(rad.edit_row_condition SEPARATOR ' and ') as edit_row_condition,
+	                                group_concat(rad.edit_col_condition SEPARATOR ' and ') as edit_col_condition,
+	                                group_concat(rad.delete_row_condition SEPARATOR ' and ') as delete_row_condition
+                                FROM
+	                                t_user_role ur,
+	                                t_auth auth,
+	                                t_role_auth ra
+                                LEFT JOIN t_role_auth_data rad on rad.role_id = ra.role_id and rad.auth_id = ra.auth_id
+                                WHERE
+	                                ur.role_id = ra.role_id 
+	                                AND ra.auth_id = auth.auth_id 
+	                                AND ur.user_id = @user_id
+                                    AND (not isnull(query_row_condition) or not isnull(query_col_conditon))
+	                                AND auth.auth_id = @auth_id";
+                var dynamicParams = new DynamicParameters();
+                dynamicParams.Add("user_id", user_id.ToString());
+                dynamicParams.Add("auth_id", auth_id.ToString());
+
+                var result = conn.Query(sql, dynamicParams).FirstOrDefault();
+
+                if (result.user_id != null)
+                {
+                    var queryRow = result.query_row_condition == null ? null : result.query_row_condition.ToString();
+                    string[] queryRowArr = queryRow.Split(" and ");
+                    List<string> queryRowListTmp = queryRowArr.Cast<string>().ToList();
+                    var queryRowList = new Dictionary<string, dynamic>();
+                    foreach(var item  in queryRowListTmp) { 
+                        queryRowList.Add(item.Split("=")[0], item.Split("=")[1]);
+                        //if (item.IndexOf(">=") >= 0)
+                        //{
+                        //    queryRowList.Add(item.Split(">=")[0], item.Split(">=")[1]);
+                        //}
+                        //else if(item.IndexOf("=") >= 0){
+                        //    queryRowList.Add(item.Split("=")[0], item.Split("=")[1]);
+                        //}
+                    }
+                    //var queryT = queryRow.Replace(" and ", ",");
+                    var queryCol = result.query_col_condition == null ? null : result.query_col_condition.ToString();
+                    string[] queryColArr = queryCol.Split(",");
+                    List<string> queryColList = queryColArr.Cast<string>().ToList();
+
+                    //根据用户数据权限过滤已获取的数据
+                    var removeList = new List<string>();
+                    var removeItem = new List<JObject>();
+                    foreach (var item in rtnObj.returnData.listValues)
+                    {
+                        if (!string.IsNullOrEmpty(queryRow))
+                        {
+                            foreach(var queryItem in queryRowList)
+                            {
+                                var queryKey = queryItem.Key;
+                                var queryValue = queryItem.Value.ToString().Replace("'","");
+
+                                if (item[queryKey] != queryValue)
+                                {
+                                    removeItem.Add(item);
+                                }
+                            }
+                        }
+                    }
+                    foreach(var remove in removeItem)
+                    {
+                        rtnObj.returnData.listValues.Remove(remove);
+                    }
+
+
+                    foreach (var item in rtnObj.returnData.listValues)
+                    {
+                        if (!string.IsNullOrEmpty(queryCol))
+                        {
+                            foreach (var itemChild in item)
+                            {
+                                var tmp = queryColList.Exists(col => col == itemChild.Name);
+                                if (!tmp)
+                                {
+                                    removeList.Add(itemChild.Name);
+                                }
+                            }
+                            foreach (var itemName in removeList)
+                            {
+                                item.Remove(itemName);
+                            }
+
+                            var ttt = item;
+                        }
+                    }
+                }
+
+                return rtnObj;
+
+            }
+        }
+    }
+}

+ 8 - 0
DataControlMod/DataControlMod.csproj

@@ -6,8 +6,16 @@
     <ImplicitUsings>enable</ImplicitUsings>
   </PropertyGroup>
 
+  <ItemGroup>
+    <Compile Remove="HttpClientHelper\**" />
+    <Content Remove="HttpClientHelper\**" />
+    <EmbeddedResource Remove="HttpClientHelper\**" />
+    <None Remove="HttpClientHelper\**" />
+  </ItemGroup>
+
   <ItemGroup>
     <PackageReference Include="Dapper" Version="2.0.143" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.19" />
     <PackageReference Include="MySql.Data" Version="8.0.33" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />

+ 12 - 0
DataControlMod/Entity/FilterEntity.cs

@@ -0,0 +1,12 @@
+namespace DataControlMod.Entity
+{
+    public class filterEntity
+    {
+        public string left { get; set; }
+        public string right { get; set; }
+        public string column { get; set; }
+        public string comparator { get; set; }
+        public string value { get; set; }
+        public string connector { get; set; }
+    }
+}

+ 11 - 0
DataControlMod/Entity/InputData.cs

@@ -0,0 +1,11 @@
+namespace DataControlMod.Entity
+{
+    public class InputData
+    {
+        public int id { get; set; }
+        public List<string> dataContent { get; set; }
+        public int pageSize { get; set; }
+        public string user_id { get; set; }
+        public string auth_id { get; set; }
+    }
+}

+ 29 - 0
DataControlMod/Entity/OutputData.cs

@@ -0,0 +1,29 @@
+namespace DataControlMod.Entity
+{
+    public class OutputData
+    {
+        public string library_id { get; set; }
+        public string code { get; set; }
+
+        public int execTime { get; set; }
+
+        public returnData returnData { get; set; }
+
+    }
+    public class returnData
+    {
+        public string submitID { get; set; }
+        public int needPage { get; set; }
+        public List<columnSet> columnSet { get; set; }
+        public List<listValue> listValue { get; set; }
+
+    }
+    public class listValue
+    {
+
+    }
+    public class columnSet
+    {
+
+    }
+}

+ 0 - 18
DataControlMod/Entity/datasourceinfo.cs

@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PullChargeData.Entity
-{
-    public class datasourceinfo
-    {
-        public int dataSourceID { get; set; }
-        public string dataSourceName { get; set; }
-        public string connectConfig { get; set; }
-        public string className { get; set; }
-        public string filePath { get; set; }
-
-    }
-}

+ 10 - 3
DataControlMod/Program.cs

@@ -1,5 +1,7 @@
 using DataControlMod.Common;
 using Microsoft.Extensions.Options;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
 
 var builder = WebApplication.CreateBuilder(args);
 
@@ -9,10 +11,18 @@ builder.Services.AddControllers();
 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
 builder.Services.AddEndpointsApiExplorer();
 builder.Services.AddSwaggerGen();
+
+
 //读取配置文件
 IConfiguration configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
 //注入配置文件
 builder.Services.AddSingleton(new AppSettingsHelper(configuration));
+//注入HttpClient/HttpFactory
+builder.Services.AddHttpClient();
+//注入controller的JSON格式
+builder.Services.AddControllers().AddNewtonsoftJson();
+
+
 
 var app = builder.Build();
 
@@ -23,9 +33,6 @@ if (app.Environment.IsDevelopment())
     app.UseSwaggerUI();
 }
 
-
-
-
 app.UseAuthorization();
 
 app.MapControllers();

+ 6 - 1
DataControlMod/appsettings.json

@@ -1,6 +1,11 @@
 {
   "SQL": {
-    "mysql": "server=120.26.64.82;port=3306;database=ygm_center;uid=root;pwd=123@bigdata;"
+    "mysql": "server=120.26.64.82;port=3306;database=ygm_auth;uid=root;pwd=123@bigdata;"
+  },
+  "DB2": {
+    "set1": "http://120.26.64.82:8957/",
+    "set1_query_method": "/newOpenApi/search",
+    "set1_datachange_method": "/openApi/generalDataReception"
   },
   "Logging": {
     "LogLevel": {

+ 66 - 0
DataControlMod/bin/Debug/net6.0/DataControlMod.deps.json

@@ -9,6 +9,7 @@
       "DataControlMod/1.0.0": {
         "dependencies": {
           "Dapper": "2.0.143",
+          "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "6.0.19",
           "MySql.Data": "8.0.33",
           "Newtonsoft.Json": "13.0.3",
           "Swashbuckle.AspNetCore": "6.2.3"
@@ -62,6 +63,32 @@
           }
         }
       },
+      "Microsoft.AspNetCore.JsonPatch/6.0.19": {
+        "dependencies": {
+          "Microsoft.CSharp": "4.7.0",
+          "Newtonsoft.Json": "13.0.3"
+        },
+        "runtime": {
+          "lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll": {
+            "assemblyVersion": "6.0.19.0",
+            "fileVersion": "6.0.1923.31806"
+          }
+        }
+      },
+      "Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.19": {
+        "dependencies": {
+          "Microsoft.AspNetCore.JsonPatch": "6.0.19",
+          "Newtonsoft.Json": "13.0.3",
+          "Newtonsoft.Json.Bson": "1.0.2"
+        },
+        "runtime": {
+          "lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": {
+            "assemblyVersion": "6.0.19.0",
+            "fileVersion": "6.0.1923.31806"
+          }
+        }
+      },
+      "Microsoft.CSharp/4.7.0": {},
       "Microsoft.Extensions.ApiDescription.Server/3.0.0": {},
       "Microsoft.NETCore.Platforms/3.1.0": {},
       "Microsoft.NETCore.Targets/1.1.0": {},
@@ -148,6 +175,17 @@
           }
         }
       },
+      "Newtonsoft.Json.Bson/1.0.2": {
+        "dependencies": {
+          "Newtonsoft.Json": "13.0.3"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
+            "assemblyVersion": "1.0.0.0",
+            "fileVersion": "1.0.2.22727"
+          }
+        }
+      },
       "Portable.BouncyCastle/1.9.0": {
         "runtime": {
           "lib/netstandard2.0/BouncyCastle.Crypto.dll": {
@@ -427,6 +465,27 @@
       "path": "k4os.hash.xxhash/1.0.8",
       "hashPath": "k4os.hash.xxhash.1.0.8.nupkg.sha512"
     },
+    "Microsoft.AspNetCore.JsonPatch/6.0.19": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-TvBoWIX1kB5i4yHhtS4zWbD6O1X3dzEb3d79oJ+DxQm5iFkAX02SIcx60lPd+emkbFv1AZjrXP+dd+7Urtbrnw==",
+      "path": "microsoft.aspnetcore.jsonpatch/6.0.19",
+      "hashPath": "microsoft.aspnetcore.jsonpatch.6.0.19.nupkg.sha512"
+    },
+    "Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.19": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-OvVtiyawqio8BtX2SyqWraSvzn1pvpTJ6FMV5hmg1E62leAN6+t68vMfp6lE+G4WWyanHeOmhaTvm+7XM/t91g==",
+      "path": "microsoft.aspnetcore.mvc.newtonsoftjson/6.0.19",
+      "hashPath": "microsoft.aspnetcore.mvc.newtonsoftjson.6.0.19.nupkg.sha512"
+    },
+    "Microsoft.CSharp/4.7.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
+      "path": "microsoft.csharp/4.7.0",
+      "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
+    },
     "Microsoft.Extensions.ApiDescription.Server/3.0.0": {
       "type": "package",
       "serviceable": true,
@@ -476,6 +535,13 @@
       "path": "newtonsoft.json/13.0.3",
       "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
     },
+    "Newtonsoft.Json.Bson/1.0.2": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==",
+      "path": "newtonsoft.json.bson/1.0.2",
+      "hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512"
+    },
     "Portable.BouncyCastle/1.9.0": {
       "type": "package",
       "serviceable": true,

BIN
DataControlMod/bin/Debug/net6.0/DataControlMod.dll


BIN
DataControlMod/bin/Debug/net6.0/DataControlMod.pdb


BIN
DataControlMod/bin/Debug/net6.0/Microsoft.AspNetCore.JsonPatch.dll


BIN
DataControlMod/bin/Debug/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll


BIN
DataControlMod/bin/Debug/net6.0/Newtonsoft.Json.Bson.dll


+ 5 - 1
DataControlMod/bin/Debug/net6.0/appsettings.json

@@ -1,6 +1,10 @@
 {
   "SQL": {
-    "mysql": "server=120.26.64.82;port=3306;database=ygm_center;uid=root;pwd=123@bigdata;"
+    "mysql": "server=120.26.64.82;port=3306;database=ygm_auth;uid=root;pwd=123@bigdata;"
+  },
+  "DB2": {
+    "set1": "http://120.26.64.82:8957/",
+    "set1_method": "/newOpenApi/search"
   },
   "Logging": {
     "LogLevel": {

+ 4 - 0
DataControlMod/obj/DataControlMod.csproj.nuget.dgspec.json

@@ -49,6 +49,10 @@
               "target": "Package",
               "version": "[2.0.143, )"
             },
+            "Microsoft.AspNetCore.Mvc.NewtonsoftJson": {
+              "target": "Package",
+              "version": "[6.0.19, )"
+            },
             "MySql.Data": {
               "target": "Package",
               "version": "[8.0.33, )"

BIN
DataControlMod/obj/Debug/net6.0/DataControlMod.assets.cache


BIN
DataControlMod/obj/Debug/net6.0/DataControlMod.csproj.AssemblyReference.cache


+ 1 - 1
DataControlMod/obj/Debug/net6.0/DataControlMod.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-a50f3d493a80c93146b64e3fb28714c54265d136
+5d96307d3c722dd4eeaa0a3782dd88d5e64f58b6

+ 63 - 0
DataControlMod/obj/Debug/net6.0/DataControlMod.csproj.FileListAbsolute.txt

@@ -58,3 +58,66 @@ D:\work\code\dotnet_2022_demo\DataControlMod\DataControlMod\bin\Debug\net6.0\run
 D:\work\code\dotnet_2022_demo\DataControlMod\DataControlMod\bin\Debug\net6.0\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll
 D:\work\code\dotnet_2022_demo\DataControlMod\DataControlMod\bin\Debug\net6.0\runtimes\browser\lib\net6.0\System.Text.Encodings.Web.dll
 D:\work\code\dotnet_2022_demo\DataControlMod\DataControlMod\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\System.Windows.Extensions.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\appsettings.Development.json
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\DataControlMod.exe
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\appsettings.json
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\DataControlMod.deps.json
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\DataControlMod.runtimeconfig.json
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\DataControlMod.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\DataControlMod.pdb
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Dapper.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Google.Protobuf.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\K4os.Compression.LZ4.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\K4os.Compression.LZ4.Streams.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\K4os.Hash.xxHash.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Microsoft.OpenApi.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Microsoft.Win32.SystemEvents.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\MySql.Data.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Newtonsoft.Json.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\BouncyCastle.Crypto.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Swashbuckle.AspNetCore.Swagger.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Swashbuckle.AspNetCore.SwaggerGen.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Swashbuckle.AspNetCore.SwaggerUI.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Configuration.ConfigurationManager.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Drawing.Common.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.IO.Pipelines.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Security.Cryptography.ProtectedData.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Security.Permissions.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Text.Encodings.Web.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Text.Json.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\System.Windows.Extensions.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\Microsoft.Win32.SystemEvents.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win-x64\native\comerr64.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win-x64\native\gssapi64.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win-x64\native\k5sprt64.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win-x64\native\krb5_64.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win-x64\native\krbcc64.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\unix\lib\netcoreapp3.0\System.Drawing.Common.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\System.Drawing.Common.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\browser\lib\net6.0\System.Text.Encodings.Web.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\runtimes\win\lib\netcoreapp3.0\System.Windows.Extensions.dll
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.csproj.AssemblyReference.cache
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.GeneratedMSBuildEditorConfig.editorconfig
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.AssemblyInfoInputs.cache
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.AssemblyInfo.cs
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.csproj.CoreCompileInputs.cache
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.MvcApplicationPartsAssemblyInfo.cs
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.MvcApplicationPartsAssemblyInfo.cache
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets\msbuild.DataControlMod.Microsoft.AspNetCore.StaticWebAssets.props
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets\msbuild.build.DataControlMod.props
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets\msbuild.buildMultiTargeting.DataControlMod.props
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets\msbuild.buildTransitive.DataControlMod.props
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets.pack.json
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets.build.json
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\staticwebassets.development.json
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\scopedcss\bundle\DataControlMod.styles.css
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.csproj.CopyComplete
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.dll
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\refint\DataControlMod.dll
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.pdb
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\DataControlMod.genruntimeconfig.cache
+D:\work\code\DataControlMOD\DataControlMod\obj\Debug\net6.0\ref\DataControlMod.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Microsoft.AspNetCore.JsonPatch.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll
+D:\work\code\DataControlMOD\DataControlMod\bin\Debug\net6.0\Newtonsoft.Json.Bson.dll

BIN
DataControlMod/obj/Debug/net6.0/DataControlMod.dll


+ 1 - 1
DataControlMod/obj/Debug/net6.0/DataControlMod.genruntimeconfig.cache

@@ -1 +1 @@
-5d35ae8b98727c693689a0ee07c29bca0797d758
+9d5a44bebb909700ee6f081e507d37a3169f3002

BIN
DataControlMod/obj/Debug/net6.0/DataControlMod.pdb


BIN
DataControlMod/obj/Debug/net6.0/ref/DataControlMod.dll


BIN
DataControlMod/obj/Debug/net6.0/refint/DataControlMod.dll


+ 192 - 0
DataControlMod/obj/project.assets.json

@@ -72,6 +72,53 @@
           }
         }
       },
+      "Microsoft.AspNetCore.JsonPatch/6.0.19": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.CSharp": "4.7.0",
+          "Newtonsoft.Json": "13.0.1"
+        },
+        "compile": {
+          "lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll": {
+            "related": ".xml"
+          }
+        },
+        "runtime": {
+          "lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll": {
+            "related": ".xml"
+          }
+        }
+      },
+      "Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.19": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.AspNetCore.JsonPatch": "6.0.19",
+          "Newtonsoft.Json": "13.0.1",
+          "Newtonsoft.Json.Bson": "1.0.2"
+        },
+        "compile": {
+          "lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": {
+            "related": ".xml"
+          }
+        },
+        "runtime": {
+          "lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": {
+            "related": ".xml"
+          }
+        },
+        "frameworkReferences": [
+          "Microsoft.AspNetCore.App"
+        ]
+      },
+      "Microsoft.CSharp/4.7.0": {
+        "type": "package",
+        "compile": {
+          "ref/netcoreapp2.0/_._": {}
+        },
+        "runtime": {
+          "lib/netcoreapp2.0/_._": {}
+        }
+      },
       "Microsoft.Extensions.ApiDescription.Server/3.0.0": {
         "type": "package",
         "build": {
@@ -197,6 +244,22 @@
           }
         }
       },
+      "Newtonsoft.Json.Bson/1.0.2": {
+        "type": "package",
+        "dependencies": {
+          "Newtonsoft.Json": "12.0.1"
+        },
+        "compile": {
+          "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
+            "related": ".pdb;.xml"
+          }
+        },
+        "runtime": {
+          "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
+            "related": ".pdb;.xml"
+          }
+        }
+      },
       "Portable.BouncyCastle/1.9.0": {
         "type": "package",
         "compile": {
@@ -733,6 +796,109 @@
         "lib/netstandard2.1/K4os.Hash.xxHash.xml"
       ]
     },
+    "Microsoft.AspNetCore.JsonPatch/6.0.19": {
+      "sha512": "TvBoWIX1kB5i4yHhtS4zWbD6O1X3dzEb3d79oJ+DxQm5iFkAX02SIcx60lPd+emkbFv1AZjrXP+dd+7Urtbrnw==",
+      "type": "package",
+      "path": "microsoft.aspnetcore.jsonpatch/6.0.19",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net461/Microsoft.AspNetCore.JsonPatch.dll",
+        "lib/net461/Microsoft.AspNetCore.JsonPatch.xml",
+        "lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll",
+        "lib/net6.0/Microsoft.AspNetCore.JsonPatch.xml",
+        "lib/netstandard2.0/Microsoft.AspNetCore.JsonPatch.dll",
+        "lib/netstandard2.0/Microsoft.AspNetCore.JsonPatch.xml",
+        "microsoft.aspnetcore.jsonpatch.6.0.19.nupkg.sha512",
+        "microsoft.aspnetcore.jsonpatch.nuspec"
+      ]
+    },
+    "Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.19": {
+      "sha512": "OvVtiyawqio8BtX2SyqWraSvzn1pvpTJ6FMV5hmg1E62leAN6+t68vMfp6lE+G4WWyanHeOmhaTvm+7XM/t91g==",
+      "type": "package",
+      "path": "microsoft.aspnetcore.mvc.newtonsoftjson/6.0.19",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll",
+        "lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.xml",
+        "microsoft.aspnetcore.mvc.newtonsoftjson.6.0.19.nupkg.sha512",
+        "microsoft.aspnetcore.mvc.newtonsoftjson.nuspec"
+      ]
+    },
+    "Microsoft.CSharp/4.7.0": {
+      "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
+      "type": "package",
+      "path": "microsoft.csharp/4.7.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/netcore50/Microsoft.CSharp.dll",
+        "lib/netcoreapp2.0/_._",
+        "lib/netstandard1.3/Microsoft.CSharp.dll",
+        "lib/netstandard2.0/Microsoft.CSharp.dll",
+        "lib/netstandard2.0/Microsoft.CSharp.xml",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/uap10.0.16299/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "microsoft.csharp.4.7.0.nupkg.sha512",
+        "microsoft.csharp.nuspec",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/Microsoft.CSharp.dll",
+        "ref/netcore50/Microsoft.CSharp.xml",
+        "ref/netcore50/de/Microsoft.CSharp.xml",
+        "ref/netcore50/es/Microsoft.CSharp.xml",
+        "ref/netcore50/fr/Microsoft.CSharp.xml",
+        "ref/netcore50/it/Microsoft.CSharp.xml",
+        "ref/netcore50/ja/Microsoft.CSharp.xml",
+        "ref/netcore50/ko/Microsoft.CSharp.xml",
+        "ref/netcore50/ru/Microsoft.CSharp.xml",
+        "ref/netcore50/zh-hans/Microsoft.CSharp.xml",
+        "ref/netcore50/zh-hant/Microsoft.CSharp.xml",
+        "ref/netcoreapp2.0/_._",
+        "ref/netstandard1.0/Microsoft.CSharp.dll",
+        "ref/netstandard1.0/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/de/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/es/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/fr/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/it/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/ja/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/ko/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/ru/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml",
+        "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml",
+        "ref/netstandard2.0/Microsoft.CSharp.dll",
+        "ref/netstandard2.0/Microsoft.CSharp.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/uap10.0.16299/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "useSharedDesignerContext.txt",
+        "version.txt"
+      ]
+    },
     "Microsoft.Extensions.ApiDescription.Server/3.0.0": {
       "sha512": "LH4OE/76F6sOCslif7+Xh3fS/wUUrE5ryeXAMcoCnuwOQGT5Smw0p57IgDh/pHgHaGz/e+AmEQb7pRgb++wt0w==",
       "type": "package",
@@ -897,6 +1063,27 @@
         "packageIcon.png"
       ]
     },
+    "Newtonsoft.Json.Bson/1.0.2": {
+      "sha512": "QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==",
+      "type": "package",
+      "path": "newtonsoft.json.bson/1.0.2",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "LICENSE.md",
+        "lib/net45/Newtonsoft.Json.Bson.dll",
+        "lib/net45/Newtonsoft.Json.Bson.pdb",
+        "lib/net45/Newtonsoft.Json.Bson.xml",
+        "lib/netstandard1.3/Newtonsoft.Json.Bson.dll",
+        "lib/netstandard1.3/Newtonsoft.Json.Bson.pdb",
+        "lib/netstandard1.3/Newtonsoft.Json.Bson.xml",
+        "lib/netstandard2.0/Newtonsoft.Json.Bson.dll",
+        "lib/netstandard2.0/Newtonsoft.Json.Bson.pdb",
+        "lib/netstandard2.0/Newtonsoft.Json.Bson.xml",
+        "newtonsoft.json.bson.1.0.2.nupkg.sha512",
+        "newtonsoft.json.bson.nuspec"
+      ]
+    },
     "Portable.BouncyCastle/1.9.0": {
       "sha512": "eZZBCABzVOek+id9Xy04HhmgykF0wZg9wpByzrWN7q8qEI0Qen9b7tfd7w8VA3dOeesumMG7C5ZPy0jk7PSRHw==",
       "type": "package",
@@ -1993,6 +2180,7 @@
   "projectFileDependencyGroups": {
     "net6.0": [
       "Dapper >= 2.0.143",
+      "Microsoft.AspNetCore.Mvc.NewtonsoftJson >= 6.0.19",
       "MySql.Data >= 8.0.33",
       "Newtonsoft.Json >= 13.0.3",
       "Swashbuckle.AspNetCore >= 6.2.3"
@@ -2047,6 +2235,10 @@
             "target": "Package",
             "version": "[2.0.143, )"
           },
+          "Microsoft.AspNetCore.Mvc.NewtonsoftJson": {
+            "target": "Package",
+            "version": "[6.0.19, )"
+          },
           "MySql.Data": {
             "target": "Package",
             "version": "[8.0.33, )"

+ 5 - 1
DataControlMod/obj/project.nuget.cache

@@ -1,6 +1,6 @@
 {
   "version": 2,
-  "dgSpecHash": "QL7btLHYPswy4mVRW7TZhXBeUJY6MBiFfpDCZEQm9IlQ513xrAqag/t2c8niH/PPgMWOxSxhbZll/JDYt8Dfhw==",
+  "dgSpecHash": "TG6zau1TGGzbHS6SVP9UOPky73QZXQh2bZ/MFM1oC5SMSo1SVq+IpoWef0z+XGCXM7pS87Wl6DlmrWUH+A5EoQ==",
   "success": true,
   "projectFilePath": "D:\\work\\code\\DataControlMOD\\DataControlMod\\DataControlMod.csproj",
   "expectedPackageFiles": [
@@ -9,6 +9,9 @@
     "C:\\Users\\WYF\\.nuget\\packages\\k4os.compression.lz4\\1.3.5\\k4os.compression.lz4.1.3.5.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\k4os.compression.lz4.streams\\1.3.5\\k4os.compression.lz4.streams.1.3.5.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\k4os.hash.xxhash\\1.0.8\\k4os.hash.xxhash.1.0.8.nupkg.sha512",
+    "C:\\Users\\WYF\\.nuget\\packages\\microsoft.aspnetcore.jsonpatch\\6.0.19\\microsoft.aspnetcore.jsonpatch.6.0.19.nupkg.sha512",
+    "C:\\Users\\WYF\\.nuget\\packages\\microsoft.aspnetcore.mvc.newtonsoftjson\\6.0.19\\microsoft.aspnetcore.mvc.newtonsoftjson.6.0.19.nupkg.sha512",
+    "C:\\Users\\WYF\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\microsoft.extensions.apidescription.server\\3.0.0\\microsoft.extensions.apidescription.server.3.0.0.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\microsoft.netcore.platforms\\3.1.0\\microsoft.netcore.platforms.3.1.0.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512",
@@ -16,6 +19,7 @@
     "C:\\Users\\WYF\\.nuget\\packages\\microsoft.win32.systemevents\\4.7.0\\microsoft.win32.systemevents.4.7.0.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\mysql.data\\8.0.33\\mysql.data.8.0.33.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
+    "C:\\Users\\WYF\\.nuget\\packages\\newtonsoft.json.bson\\1.0.2\\newtonsoft.json.bson.1.0.2.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\portable.bouncycastle\\1.9.0\\portable.bouncycastle.1.9.0.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\swashbuckle.aspnetcore\\6.2.3\\swashbuckle.aspnetcore.6.2.3.nupkg.sha512",
     "C:\\Users\\WYF\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.2.3\\swashbuckle.aspnetcore.swagger.6.2.3.nupkg.sha512",