Explorar o código

JsonElement参数调整

zhouj1203@hotmail.com %!s(int64=4) %!d(string=hai) anos
pai
achega
f0964bbc42
Modificáronse 23 ficheiros con 823 adicións e 606 borrados
  1. 86 133
      TEAMModelOS/Controllers/Analysis/AchievementController.cs
  2. 1 1
      TEAMModelOS/Controllers/Core/AuthController.cs
  3. 15 14
      TEAMModelOS/Controllers/Core/BlobController.cs
  4. 4 4
      TEAMModelOS/Controllers/Core/CommonController.cs
  5. 53 40
      TEAMModelOS/Controllers/Exam/ExamController.cs
  6. 20 7
      TEAMModelOS/Controllers/Exam/ImportExerciseController.cs
  7. 21 8
      TEAMModelOS/Controllers/Exam/PaperController.cs
  8. 22 15
      TEAMModelOS/Controllers/School/ClassRoomController.cs
  9. 25 19
      TEAMModelOS/Controllers/School/ClassStudentController.cs
  10. 33 26
      TEAMModelOS/Controllers/School/CourseController.cs
  11. 19 12
      TEAMModelOS/Controllers/School/SchoolController.cs
  12. 37 24
      TEAMModelOS/Controllers/Student/StudentController.cs
  13. 54 41
      TEAMModelOS/Controllers/Syllabus/ItemInfoController.cs
  14. 39 26
      TEAMModelOS/Controllers/Syllabus/KnowledgeController.cs
  15. 34 15
      TEAMModelOS/Controllers/Syllabus/ResourceController.cs
  16. 23 10
      TEAMModelOS/Controllers/Syllabus/SyllabusController.cs
  17. 25 12
      TEAMModelOS/Controllers/Syllabus/VolumeController.cs
  18. 63 50
      TEAMModelOS/Controllers/Task/HomeworkController.cs
  19. 72 47
      TEAMModelOS/Controllers/Task/LearnController.cs
  20. 50 31
      TEAMModelOS/Controllers/Task/SurveyController.cs
  21. 42 29
      TEAMModelOS/Controllers/Task/VoteController.cs
  22. 25 18
      TEAMModelOS/Controllers/Teacher/CommentController.cs
  23. 60 24
      TEAMModelOS/Controllers/Teacher/SchoolUserController.cs

+ 86 - 133
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -17,6 +17,8 @@ using TEAMModelOS.SDK.Context.Exception;
 using TEAMModelOS.Service.Models;
 using TEAMModelOS.SDK.Helper.Network.HttpHelper;
 using TEAMModelOS.Service.Analysis.Implements;
+using OpenXmlPowerTools;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers.Analysis
 {
@@ -36,15 +38,21 @@ namespace TEAMModelOS.Controllers.Analysis
 
         }
         [HttpPost("Achievement")]
-        public async Task<BaseResponse> FindExam(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindExam(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             Dictionary<string, dynamic> info = new Dictionary<string, dynamic>();
             if (RedisHelper.Instance != null)
             {
 
-                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindExamRedis(request.@params, request.method); });
+                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + "Achievement",
+                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(dict)), timeoutSeconds, () => { return FindExamRedis(dict, "Achievement"); });
 
                 //数据从redis读取过后进行转换格式
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
@@ -52,7 +60,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             else
             {
-                info = await FindExamRedis(request.@params, request.method);
+                info = await FindExamRedis(dict, "Achievement");
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
             }
             return builder.build();
@@ -527,15 +535,21 @@ namespace TEAMModelOS.Controllers.Analysis
              return info;
          }*/
         [HttpPost("PointAnalysis")]
-        public async Task<BaseResponse> PointAnalysis(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> PointAnalysis(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Dictionary<string, dynamic>> info = new List<Dictionary<string, dynamic>>();
             if (RedisHelper.Instance != null)
             {
 
-                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindPointAnalysisRedis(request.@params, request.method); });
+                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + "PointAnalysis",
+                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(dict)), timeoutSeconds, () => { return FindPointAnalysisRedis(dict, "PointAnalysis"); });
 
                 //数据从redis读取过后进行转换格式
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
@@ -543,7 +557,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             else
             {
-                info = await FindPointAnalysisRedis(request.@params, request.method);
+                info = await FindPointAnalysisRedis(dict, "PointAnalysis");
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
             }
             return builder.build();
@@ -726,15 +740,21 @@ namespace TEAMModelOS.Controllers.Analysis
         }
 
         [HttpPost("ExerciseScatter")]
-        public async Task<BaseResponse> ExerciseScatter(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> ExerciseScatter(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Dictionary<string, dynamic>> info = new List<Dictionary<string, dynamic>>();
             if (RedisHelper.Instance != null)
             {
 
-                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindExerciseScatterRedis(request.@params, request.method); });
+                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + "ExerciseScatter",
+                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(dict)), timeoutSeconds, () => { return FindExerciseScatterRedis(dict, "ExerciseScatter"); });
 
                 //数据从redis读取过后进行转换格式
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
@@ -742,7 +762,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             else
             {
-                info = await FindExerciseScatterRedis(request.@params, request.method);
+                info = await FindExerciseScatterRedis(dict, "ExerciseScatter");
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
             }
             return builder.build();
@@ -1462,15 +1482,21 @@ namespace TEAMModelOS.Controllers.Analysis
         }
 
         [HttpPost("knowledgePoint")]
-        public async Task<BaseResponse> KnowledgePoint(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> KnowledgePoint(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             Dictionary<string, dynamic> info = new Dictionary<string, dynamic>();
             if (RedisHelper.Instance != null)
             {
 
-                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindKnowledgePointRedis(request.@params, request.method); });
+                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + "knowledgePoint",
+                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(dict)), timeoutSeconds, () => { return FindKnowledgePointRedis(dict, "knowledgePoint"); });
 
                 //数据从redis读取过后进行转换格式
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
@@ -1478,22 +1504,28 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             else
             {
-                info = await FindKnowledgePointRedis(request.@params, request.method);
+                info = await FindKnowledgePointRedis(dict, "knowledgePoint");
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
             }
             return builder.build();
         }
         [HttpPost("FindExamInfo")]
-        public async Task<BaseResponse> FindExamInfo(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindExamInfo(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             if (RedisHelper.Instance != null)
             {
                 try {
                     ///RedisHelper.Instance.CurrentSerialize = obj => System.Text.Json.JsonSerializer.Serialize(obj);
                    /// RedisHelper.Instance.CurrentDeserialize = (json, type) => System.Text.Json.JsonSerializer.Deserialize(json, type);
-                    List<ExamInfo> info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                    ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindExamInfoRedis(request.@params, request.method); });
+                    List<ExamInfo> info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + "FindExamInfo",
+                    ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(dict)), timeoutSeconds, () => { return FindExamInfoRedis(dict, "FindExamInfo"); });
                  
                     builder.Data(info);
                 } catch (Exception e) {
@@ -1502,7 +1534,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             else
             {
-                List<ExamInfo> info =  await FindExamInfoRedis(request.@params,request.method);
+                List<ExamInfo> info =  await FindExamInfoRedis(dict, "FindExamInfo");
                 builder.Data(info);
             }
             return builder.build();
@@ -1533,10 +1565,16 @@ namespace TEAMModelOS.Controllers.Analysis
         }
 
         [HttpPost("FindExamPaper")]
-        public BaseResponse FindExamPaper(JosnRequest<Dictionary<string, object>> request)
+        public BaseResponse FindExamPaper(JsonElement request)
         {
-            request.@params.TryGetValue("subjectCode", out object subjectCode);
-            request.@params.TryGetValue("code", out object code);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            dict.TryGetValue("subjectCode", out object subjectCode);
+            dict.TryGetValue("code", out object code);
             ResponseBuilder builder = ResponseBuilder.custom();
             /*if (RedisHelper.Instance != null)
             {
@@ -1587,28 +1625,23 @@ namespace TEAMModelOS.Controllers.Analysis
             }
         }
         [HttpPost("FindExamAnswer")]
-        public async Task<BaseResponse> FindExamAnswer(JosnRequest<Dictionary<string, object>> request)
+        public BaseResponse FindExamAnswer(JsonElement request)
         {
-            request.@params.TryGetValue("subjectCode", out object subjectCode);
-            request.@params.TryGetValue("code", out object code);
-            ResponseBuilder builder = ResponseBuilder.custom();
-            if (RedisHelper.Instance != null)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
             {
-
-                            List<ExamAnswer> info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                                ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindExamAnswerRedis(request.@params, request.method); });
-                            builder.Data(info);
-
-                        }
-                        else
-                        {
-                            List<ExamAnswer> info = await FindExamAnswerRedis(request.@params, request.method);
-                            builder.Data(info);
-                        }
-            if (RedisHelper.Exists(CacheCosmosPrefix + ""))
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            dict.TryGetValue("subjectCode", out object subjectCode);
+            dict.TryGetValue("code", out object code);
+            ResponseBuilder builder = ResponseBuilder.custom();
+            List<ExamAnswer> exams = new List<ExamAnswer>();
+            if (RedisHelper.Exists(CacheCosmosPrefix + "examAnswer" + subjectCode.ToString()))
             {
-                List<ExamAnswer> info = RedisHelper.HGet<List<ExamAnswer>>(CacheCosmosPrefix + "examAnswer" + subjectCode.ToString(), ShaHashHelper.GetSHA1(code.ToString()));
-                builder.Data(info);
+                ExamAnswer exam = RedisHelper.HGet<ExamAnswer>(CacheCosmosPrefix + "examAnswer" + subjectCode.ToString(), ShaHashHelper.GetSHA1(code.ToString()));
+                exams.Add(exam);
+                builder.Data(exams);
             }
 
             return builder.build();
@@ -1665,15 +1698,21 @@ namespace TEAMModelOS.Controllers.Analysis
             }
         }
         [HttpPost("HomeStatistics")]
-        public async Task<BaseResponse> HomeStatistics(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> HomeStatistics(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Dictionary<string, dynamic>> info = new List<Dictionary<string, dynamic>>();
             if (RedisHelper.Instance != null)
             {
 
-                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + request.method,
-                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(request.@params)), timeoutSeconds, () => { return FindHomeStatisticsRedis(request.@params, request.method); });
+                info = await RedisHelper.CacheShellAsync(CacheCosmosPrefix + "HomeStatistics",
+                   ShaHashHelper.GetSHA1(JsonNetHelper.ToJson(dict)), timeoutSeconds, () => { return FindHomeStatisticsRedis(dict, "HomeStatistics"); });
 
                 //数据从redis读取过后进行转换格式
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
@@ -1681,7 +1720,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             else
             {
-                info = await FindHomeStatisticsRedis(request.@params, request.method);
+                info = await FindHomeStatisticsRedis(dict, "HomeStatistics");
                 builder.Data(JsonApiHelper.FromApiJson<System.Text.Json.JsonElement>(info.ToJson()));
             }
             return builder.build();
@@ -1720,7 +1759,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 ExamInfo examInfo = group.ToList().OrderByDescending(e => e.createTime).ToList().FirstOrDefault();
                 newInfo.Add(examInfo);
             };
-            //newInfo.Select(e => e.type.Equals("union"));
+            //newInfo.Select(e => e.type.Equals("union")); 
             //List<ExamInfo> unionInfo = newInfo.Where(e => e.type.Equals("union")).ToList();
             //exams.GroupBy(e => e.conditions.period);
             //ExamInfo info = exams.OrderByDescending(e => e.createTime).ToList().FirstOrDefault();
@@ -2060,91 +2099,5 @@ namespace TEAMModelOS.Controllers.Analysis
                 throw new BizException(e.Message);
             }
         }
-
-        public async Task SaveRedisInfoAsync(Dictionary<string, object> eMap)
-        {
-            //说明 同学校、同类型考试数据
-            List<ExamInfo> exams = await azureCosmosDBRepository.FindByDict<ExamInfo>(eMap);
-            for (int i = 0; i < exams.Count; i++)
-            {
-                //List<ExamResult> examResults = new List<ExamResult>();
-                //Blob中获取文件并处理相关文件内容
-                /*if (dict.TryGetValue("urlBlob", out object urlBlob))
-                {
-                    string azureBlobSAS = System.Web.HttpUtility.UrlDecode((string)urlBlob, Encoding.UTF8);
-                }*/
-                List<ExamResult> simples = new List<ExamResult>();
-                List<ExamAnswer> answers = new List<ExamAnswer>();
-                List<Paper> papers = new List<Paper>();
-                if (exams[i].blobUrl.Count < 0) {
-                    throw new BizException("数据未上传", 400);
-                }
-                //(string, string) a = BlobUrlString(azureBlobSAS);
-                string sas = "?sv=2019-02-02&st=2020-08-04T07%3A45%3A24Z&se=2022-08-05T07%3A45%3A00Z&sr=c&sp=rl&sig=jA2sdItTVtzE3%2FKqXo77vObl18s905aDc8f61rSKAAM%3D";
-                List<string> url = new List<string> {
-                        "https://teammodelstorage.blob.core.chinacloudapi.cn/hbcn/exam/88924E4C-F00D-4A1D-B2C3-234F930F29D4fa9fa7c5-e956-4bed-b3db-71756ad2ffc9Subject_Math.json"
-                    };
-                for (int j = 0; j < url.Count; j++)
-                {
-                    //获取Blob文件内容
-                    string text = await HttpHelper.HttpGetAsync(url[j] + sas);
-                    Dictionary<string, object> json = text.FromApiJson<Dictionary<string, object>>();
-                    json.TryGetValue("examResult", out object examResult);
-                    json.TryGetValue("students", out object students);
-                    json.TryGetValue("paperInfo", out object paperInfo);
-                    json.TryGetValue("examAnswer", out object examAnswer);
-                    json.TryGetValue("classInfo", out object classInfo);
-                    json.TryGetValue("schoolInfo", out object schoolInfo);
-                    //json.TryGetValue("students", out object students);
-                    ExamResult result = JsonApiHelper.FromApiJson<ExamResult>(examResult.ToApiJson());
-                    ExamAnswer answer = JsonApiHelper.FromApiJson<ExamAnswer>(examAnswer.ToApiJson());
-                    Paper paper = JsonApiHelper.FromApiJson<Paper>(paperInfo.ToApiJson());
-                    List<Student> stu = JsonApiHelper.FromApiJson<List<Student>>(students.ToApiJson());
-                    List<Classroom> classroom = JsonApiHelper.FromApiJson<List<Classroom>>(classInfo.ToApiJson());
-                    School school = JsonApiHelper.FromApiJson<School>(schoolInfo.ToApiJson());
-                    simples.Add(result);
-                    answers.Add(answer);
-                    papers.Add(paper);
-                    //Redis处理考试结果数据集合
-                    if (RedisHelper.Instance != null)
-                    {
-                            await RedisHelper.HSetAsync(CacheCosmosPrefix + "examResult" + exams[i].conditions.subject[j], ShaHashHelper.GetSHA1(exams[i].examCode), result);
-                            await RedisHelper.ExpireAsync(CacheCosmosPrefix + "examResult" + exams[i].conditions.subject[j], timeoutSeconds);                       
-                            
-                            await RedisHelper.HSetAsync(CacheCosmosPrefix + "students" + exams[i].conditions.subject[j], ShaHashHelper.GetSHA1(exams[i].examCode), stu);
-                            await RedisHelper.ExpireAsync(CacheCosmosPrefix + "students" + exams[i].conditions.subject[j], timeoutSeconds);
-
-                       
-                            await RedisHelper.HSetAsync(CacheCosmosPrefix + "paperInfo" + exams[i].conditions.subject[j], ShaHashHelper.GetSHA1(exams[i].examCode), paper);
-                            await RedisHelper.ExpireAsync(CacheCosmosPrefix + "paperInfo" + exams[i].conditions.subject[j], timeoutSeconds);
-                        
-                            await RedisHelper.HSetAsync(CacheCosmosPrefix + "examAnswer" + exams[i].conditions.subject[j], ShaHashHelper.GetSHA1(exams[i].examCode), answer);
-                            await RedisHelper.ExpireAsync(CacheCosmosPrefix + "examAnswer" + exams[i].conditions.subject[j], timeoutSeconds);
-  
-                            await RedisHelper.HSetAsync(CacheCosmosPrefix + "classInfo" + exams[i].conditions.subject[j], ShaHashHelper.GetSHA1(exams[i].examCode), classroom);
-                            await RedisHelper.ExpireAsync(CacheCosmosPrefix + "classInfo" + exams[i].conditions.subject[j], timeoutSeconds);
-                       
-                            await RedisHelper.HSetAsync(CacheCosmosPrefix + "schoolInfo" + exams[i].conditions.subject[j], ShaHashHelper.GetSHA1(exams[i].examCode), school);
-                            await RedisHelper.ExpireAsync(CacheCosmosPrefix + "schoolInfo" + exams[i].conditions.subject[j], timeoutSeconds);
-                        
-                    }
-                }
-                if (RedisHelper.Instance != null)
-                {
-
-                        await RedisHelper.HSetAsync(CacheCosmosPrefix + "results", ShaHashHelper.GetSHA1(exams[i].examCode), simples);
-                        await RedisHelper.ExpireAsync(CacheCosmosPrefix + "results", timeoutSeconds);
-
-                 
-                        await RedisHelper.HSetAsync(CacheCosmosPrefix + "papers", ShaHashHelper.GetSHA1(exams[i].examCode), papers);
-                        await RedisHelper.ExpireAsync(CacheCosmosPrefix + "papers", timeoutSeconds);
-                   
-                        await RedisHelper.HSetAsync(CacheCosmosPrefix + "answers", ShaHashHelper.GetSHA1(exams[i].examCode), answers);
-                        await RedisHelper.ExpireAsync(CacheCosmosPrefix + "answers", timeoutSeconds);
-                    
-                }
-
-            }
-        }
     }
 }

+ 1 - 1
TEAMModelOS/Controllers/Core/AuthController.cs

@@ -44,7 +44,7 @@ namespace TEAMModelOS.Controllers
         }
 
         [HttpPost("validateIdToken")]
-        public BaseResponse ValidateIdToken(JosnRequest<string> request)
+        public BaseResponse ValidateIdToken(string request)
         {
             ResponseBuilder builder = new ResponseBuilder();
          //  bool b = CoreTokenExtensions.ValidateIdToken(request.@params, BaseConfigModel.Configuration["Option:IdTokenSalt"]);

+ 15 - 14
TEAMModelOS/Controllers/Core/BlobController.cs

@@ -33,13 +33,13 @@ namespace TEAMModelOS.Controllers.Core
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("blobSasR")]
-        public    BaseResponse  BlobSasR(JosnRequest<BlobSas> request)
+        public    BaseResponse  BlobSasR(BlobSas request)
         {
             ///返回金钥过期时间
             ResponseBuilder builder = new ResponseBuilder();
             // Dictionary<string, object> dict = await azureBlobDBRepository.GetBlobSasUri(request.@params,true);
            // dict.Add(d.Key, d.Value);
-            return builder.Data(  azureBlobDBRepository.GetContainerSasUri(request.@params, true)).build() ;
+            return builder.Data(  azureBlobDBRepository.GetContainerSasUri(request, true)).build() ;
         }
         /// <summary>
         /// 某个文件的上传SAS rcw权限
@@ -47,14 +47,14 @@ namespace TEAMModelOS.Controllers.Core
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("blobSasRCW")]
-        public async Task<BaseResponse> BlobSasRCW(JosnRequest<BlobSas> request)
+        public BaseResponse BlobSasRCW(BlobSas request)
         {
             ///返回金钥过期时间
             ResponseBuilder builder = new ResponseBuilder();
             // Dictionary<string,object> dict=  await azureBlobDBRepository.GetBlobSasUri(request.@params,false);
-         //   Dictionary<string, object> dict = ;
+            //   Dictionary<string, object> dict = ;
             //dict.Add(d.Key, d.Value);
-            return builder.Data(  azureBlobDBRepository.GetContainerSasUri(request.@params, false)).build();
+            return builder.Data(azureBlobDBRepository.GetContainerSasUri(request, false)).build();
         }
         /// <summary>
         /// 链接只读(读)
@@ -62,20 +62,21 @@ namespace TEAMModelOS.Controllers.Core
         /// <param name="azureBlobSASDto"></param>
         /// <returns></returns>
         [HttpPost("urlSasR")]
-        public async Task<BaseResponse> GetContainerSASRead(JosnRequest<string> azureBlobSASDto)
+        public BaseResponse GetContainerSASRead(string azureBlobSASDto)
         {
             ResponseBuilder responseBuilder = new ResponseBuilder();
-            string azureBlobSAS = azureBlobSASDto.@params;
+            string azureBlobSAS = azureBlobSASDto;
             (string, string) a = BlobUrlString(azureBlobSAS);
             string ContainerName = a.Item1;
             string BlobName = a.Item2;
             bool flg = IsBlobName(BlobName);
             if (flg)
             {
-                return responseBuilder.Data(  azureBlobDBRepository.GetBlobSasUriRead(ContainerName, BlobName)).build();
+                return responseBuilder.Data(azureBlobDBRepository.GetBlobSasUriRead(ContainerName, BlobName)).build();
             }
-            else {
-                return responseBuilder.Error(ResponseCode.PARAMS_ERROR,"文件名错误").build();
+            else
+            {
+                return responseBuilder.Error(ResponseCode.PARAMS_ERROR, "文件名错误").build();
             };
         }
         /// <summary>
@@ -84,10 +85,10 @@ namespace TEAMModelOS.Controllers.Core
         /// <param name="azureBlobSASDto"></param>
         /// <returns></returns>
         [HttpPost("getText")]
-        public async Task<BaseResponse> GetText(JosnRequest<string> request)
+        public async Task<BaseResponse> GetText(string request)
         {
             ResponseBuilder responseBuilder = new ResponseBuilder();
-            string azureBlobSAS = System.Web.HttpUtility.UrlDecode(request.@params, Encoding.UTF8);
+            string azureBlobSAS = System.Web.HttpUtility.UrlDecode(request, Encoding.UTF8);
             (string, string) a = BlobUrlString(azureBlobSAS);
             string ContainerName = a.Item1;
             string BlobName = a.Item2;
@@ -112,10 +113,10 @@ namespace TEAMModelOS.Controllers.Core
         /// <param name="azureBlobSASDto"></param>
         /// <returns></returns>
         [HttpPost("uploadText")]
-        public async Task<BaseResponse> UploadText(JosnRequest<string> request)
+        public async Task<BaseResponse> UploadText(string request)
         {
             ResponseBuilder responseBuilder = new ResponseBuilder();
-            return responseBuilder.Data(await azureBlobDBRepository.UploadFileByContainer("hbcn", request.@params, "exam", SnowflakeId.NextId() + ".json")).build();
+            return responseBuilder.Data(await azureBlobDBRepository.UploadFileByContainer("hbcn", request, "exam", SnowflakeId.NextId() + ".json")).build();
           
         }
         private static string ContainerUrlString(string sasUrl)

+ 4 - 4
TEAMModelOS/Controllers/Core/CommonController.cs

@@ -77,20 +77,20 @@ namespace TEAMModelOS.Controllers
         }
 
         [HttpPost("FindCollection")]
-        public async  Task<BaseResponse> FindCollection(JosnRequest<CommonQuery> request)
+        public async  Task<BaseResponse> FindCollection(CommonQuery request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<dynamic>  data =  await  azureCosmosDBRepository.FindByDict(request.@params.collectionName,request.@params.queryDict);
+            List<dynamic>  data =  await  azureCosmosDBRepository.FindByDict(request.collectionName,request.queryDict);
            // JsonElement json = JsonApiHelper.FromApiJson<JsonElement>( data.ToJson());
             return builder.Data(data).build();
         }
 
 
         [HttpPost("FindCount")]
-        public async Task<BaseResponse> FindCount(JosnRequest<CommonQuery> request)
+        public async Task<BaseResponse> FindCount(CommonQuery request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<dynamic> data = await  azureCosmosDBRepository.FindCountByDict(request.@params.collectionName, request.@params.queryDict);
+            List<dynamic> data = await  azureCosmosDBRepository.FindCountByDict(request.collectionName, request.queryDict);
             return builder.Data(data).build();
         }
     }

+ 53 - 40
TEAMModelOS/Controllers/Exam/ExamController.cs

@@ -11,7 +11,8 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models; 
 using TEAMModelOS.SDK.Context.Constant.Common;
 using TEAMModelOS.Service.Services.Learn.Implements;
- 
+using System.Text.Json;
+
 namespace TEAMModelOS.Controllers
 {
     [Route("api/[controller]")]
@@ -35,38 +36,38 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("save")]
-        public async Task<BaseResponse> Save(JosnRequest<ExamInfo> request)
+        public async Task<BaseResponse> Save(ExamInfo request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             
-            if (string.IsNullOrEmpty(request.@params.id))
+            if (string.IsNullOrEmpty(request.id))
             {
-                request.@params.id = SnowflakeId.NextId()+"";
-                request.@params.status = 100;
+                request.id = SnowflakeId.NextId()+"";
+                request.status = 100;
                 // await cosmosDBV3Repository.SaveOrUpdate(request.@params);
             }
-            if (request.@params.publish.Equals("0"))
+            if (request.publish.Equals("0"))
             {
-                request.@params.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
-                request.@params.status = 200;
+                request.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+                request.status = 200;
             }
-            else if (request.@params.publish.Equals("1"))
+            else if (request.publish.Equals("1"))
             {
                 //设定开始时间
                 string msgId = SnowflakeId.NextId() + "";
-                long SequenceNumber = await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.startTime, 200, msgId);
-                request.@params.sequenceNumber = SequenceNumber;
+                long SequenceNumber = await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.id, request.code, request.startTime, 200, msgId);
+                request.sequenceNumber = SequenceNumber;
             }
-            if (request.@params.status == 0)
+            if (request.status == 0)
             {
-                if (request.@params.startTime < new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds()) request.@params.status = 200;
-                else request.@params.status = 100;
+                if (request.startTime < new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds()) request.status = 200;
+                else request.status = 100;
             }
-            await cosmosDBV3Repository.SaveOrUpdate(request.@params);
+            await cosmosDBV3Repository.SaveOrUpdate(request);
             //设定结束时间
             string msgEndId = SnowflakeId.NextId() + "";
-            await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.endTime, 300, msgEndId);
-            return builder.Data(request.@params).build();
+            await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.id, request.code, request.endTime, 300, msgEndId);
+            return builder.Data(request).build();
         }
         /// <summary>
         /// 删除
@@ -74,11 +75,11 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> Delete(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            IdPk items = await cosmosDBV3Repository.DeleteAsync<ExamInfo>(request.@params.id, request.@params.pk);
-            await cosmosDBV3Repository.DeleteAll<Paper>(new Dictionary<string, object>() { { "code", request.@params.id } });
+            IdPk items = await cosmosDBV3Repository.DeleteAsync<ExamInfo>(request.id, request.pk);
+            await cosmosDBV3Repository.DeleteAll<Paper>(new Dictionary<string, object>() { { "code", request.id } });
             return builder.Data(items).build();
         }
         /// <summary>
@@ -87,12 +88,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string,object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0)
             {
-                return builder.Data(await cosmosDBV3Repository.FindByDict<ExamInfo>(request.@params)).build();
+                return builder.Data(await cosmosDBV3Repository.FindByDict<ExamInfo>(request)).build();
             }
             else {
                 return builder.build();
@@ -104,11 +111,11 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("marking")]
-        public async Task<BaseResponse> Marking(JosnRequest<ExamRecord> request)
+        public async Task<BaseResponse> Marking(ExamRecord request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             //判断是否每一个题目都有分数
-            List<ExamInfo> exams = await cosmosDBV3Repository.FindByDict<ExamInfo>(new Dictionary<string, object> { { "id", request.@params.examCode } });
+            List<ExamInfo> exams = await cosmosDBV3Repository.FindByDict<ExamInfo>(new Dictionary<string, object> { { "id", request.examCode } });
 
             if (exams.IsNotEmpty())
             {
@@ -117,7 +124,7 @@ namespace TEAMModelOS.Controllers
                 if ( examInfo.status == 300 &&
                    examInfo.endTime <= new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds())
                 {
-                    return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request.@params)).build();
+                    return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request)).build();
                 }
                 else
                 {
@@ -137,17 +144,17 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertAllRecord")]
-        public async Task<BaseResponse> upsertRecord(JosnRequest<List<ExamRecord>> request)
+        public async Task<BaseResponse> upsertRecord(List<ExamRecord> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.IsNotEmpty())
+            if (request.IsNotEmpty())
             {
                 //要先处理状态,判断卷子是否存在,并判断卷子归属的考试是否允许再次提交
-                List<ExamInfo> exams = await cosmosDBV3Repository.FindByDict<ExamInfo>(new Dictionary<string, object> { { "id", request.@params[0].examCode } });
+                List<ExamInfo> exams = await cosmosDBV3Repository.FindByDict<ExamInfo>(new Dictionary<string, object> { { "id", request[0].examCode } });
                 if (exams.IsNotEmpty())
                 {
                     
-                    return builder.Data(await cosmosDBV3Repository.SaveOrUpdateAll(request.@params)).build();
+                    return builder.Data(await cosmosDBV3Repository.SaveOrUpdateAll(request)).build();
                 }
                 else
                 {
@@ -165,11 +172,11 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertRecord")]
-        public async Task<BaseResponse> upsertRecord(JosnRequest<ExamRecord> request)
+        public async Task<BaseResponse> upsertRecord(ExamRecord request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             //要先处理状态,判断卷子是否存在,并判断卷子归属的考试是否允许再次提交
-            List<ExamInfo> exams=  await cosmosDBV3Repository.FindByDict<ExamInfo>(new Dictionary<string, object> { { "id", request.@params.examCode } });
+            List<ExamInfo> exams=  await cosmosDBV3Repository.FindByDict<ExamInfo>(new Dictionary<string, object> { { "id", request.examCode } });
             if (exams.IsNotEmpty())
             {
                 ExamInfo examInfo = exams[0];
@@ -177,7 +184,7 @@ namespace TEAMModelOS.Controllers
                 if (examInfo.startTime <= new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds() && examInfo.status == 200 &&
                    examInfo.endTime >= new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds())
                 {
-                    return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request.@params)).build();
+                    return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request)).build();
                 }
                 else
                 {
@@ -195,21 +202,27 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findSummaryRecord")]
-        public async Task<BaseResponse> findSummaryRecord(JosnRequest<Dictionary<string,object>> request)
+        public async Task<BaseResponse> findSummaryRecord(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             // 如果只有学生id则返回学生参加过的考试 只返回相关摘要信息
-            if (request.@params.Keys.Count == 1 && request.@params.ContainsKey("code"))
+            if (dict.Keys.Count == 1 && dict.ContainsKey("code"))
             {
                 List<string> props = new List<string> { "id", "code", "examCode", "status", "mark", "score" };
-                List<ExamRecord> examRecords = await cosmosDBV3Repository.FindByDict<ExamRecord>(request.@params, props);
+                List<ExamRecord> examRecords = await cosmosDBV3Repository.FindByDict<ExamRecord>(request, props);
                 return builder.Data(examRecords).Extend(new Dictionary<string, object> { { "props", props } }).build();
             }
             else {
-                if (request.@params.ContainsKey("examCode"))
+                if (dict.ContainsKey("examCode"))
                 {
                     List<string> props = new List<string> { "id", "code", "examCode", "status", "mark", "score" };
-                    List<ExamRecord> examRecords = await cosmosDBV3Repository.FindByDict<ExamRecord>(request.@params, props);
+                    List<ExamRecord> examRecords = await cosmosDBV3Repository.FindByDict<ExamRecord>(request, props);
                     return builder.Data(examRecords).Extend(new Dictionary<string, object> { { "props", props } }).build();
                 }
                 else {
@@ -223,10 +236,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findByIdPk")]
-        public async Task<BaseResponse> findByIdPk(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> findByIdPk(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            ExamRecord record = await cosmosDBV3Repository.FindByIdPk<ExamRecord>(request.@params.id,request.@params.pk);
+            ExamRecord record = await cosmosDBV3Repository.FindByIdPk<ExamRecord>(request.id,request.pk);
             if (record != null) {
                 //处理客观题自动阅卷
                 Paper paper = await cosmosDBV3Repository.FindByIdPk<Paper>(record.id, record.examCode);

+ 20 - 7
TEAMModelOS/Controllers/Exam/ImportExerciseController.cs

@@ -17,6 +17,7 @@ using TEAMModelOS.Dto;
 using System.IO;
 using System.Text;
 using TEAMModelOS.SDK.Helper.Common.JsonHelper;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -87,11 +88,17 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("AnalyzeHtml")]
-        public BaseResponse AnalyzeHtml(JosnRequest<Dictionary<string, object>> request)
+        public BaseResponse AnalyzeHtml(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            bool flag = request.@params.TryGetValue("htmlString", out object htmlString);
-            bool flagLang = request.@params.TryGetValue("lang", out object lang);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            bool flag = dict.TryGetValue("htmlString", out object htmlString);
+            bool flagLang = dict.TryGetValue("lang", out object lang);
             if (flag && htmlString != null && !string.IsNullOrEmpty(htmlString.ToString()))
             {
                 LangConfig langConfig= langConfigs.Where(x => x.Lang == lang.ToString()).FirstOrDefault();
@@ -110,16 +117,22 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("HtmlToHtex")]
-        public async Task<BaseResponse> HtmlToHtex(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> HtmlToHtex(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            bool flag = request.@params.TryGetValue("htmlString", out object htmlString);
-            bool flagLang = request.@params.TryGetValue("lang", out object lang);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            bool flag = dict.TryGetValue("htmlString", out object htmlString);
+            bool flagLang = dict.TryGetValue("lang", out object lang);
             if (flag && htmlString != null && !string.IsNullOrEmpty(htmlString.ToString()))
             {
                 LangConfig langConfig = langConfigs.Where(x => x.Lang == lang.ToString()).FirstOrDefault();
                 HtmlAnalyzeService htmlAnalyzeService = new HtmlAnalyzeService(langConfig);
-                Htex exercises = await HtexService.AnalyzeHtmlToHtex(azureBlobDBRepository, htmlString.ToString(), request.lang, htmlAnalyzeService);
+                Htex exercises = await HtexService.AnalyzeHtmlToHtex(azureBlobDBRepository, htmlString.ToString(), lang.ToString(), htmlAnalyzeService);
                 return builder.Data(exercises).build();
             }
             else

+ 21 - 8
TEAMModelOS/Controllers/Exam/PaperController.cs

@@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Text.Json;
 using System.Threading.Tasks;
 using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.DI;
@@ -26,10 +27,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> Delete(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            IdPk items = await cosmosDBV3Repository.DeleteAsync<Paper>(request.@params.id, request.@params.pk);
+            IdPk items = await cosmosDBV3Repository.DeleteAsync<Paper>(request.id, request.pk);
             return builder.Data(items).build();
         }
 
@@ -39,16 +40,22 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findSummary")]
-        public async Task<BaseResponse> findSummary(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> findSummary(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<string> props = new List<string> {
                 "subjectCode", "id", "code", "periodCode",
                 "name","itemCount","level","pointItem","pointScore","score", "gradeCode"
             };
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             {
-                return builder.Data(await cosmosDBV3Repository.FindByDict<Paper>(request.@params, propertys: props)).build();
+                return builder.Data(await cosmosDBV3Repository.FindByDict<Paper>(request, propertys: props)).build();
             }
             else {
                 return builder.build();
@@ -62,11 +69,17 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0) {
-                return builder.Data(await cosmosDBV3Repository.FindByDict<Paper>(request.@params)).build();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0) {
+                return builder.Data(await cosmosDBV3Repository.FindByDict<Paper>(request)).build();
             }
             else
             {

+ 22 - 15
TEAMModelOS/Controllers/School/ClassRoomController.cs

@@ -10,6 +10,7 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using System.Linq;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -22,60 +23,66 @@ namespace TEAMModelOS.Controllers
             cosmosrepository = _cosmosrepository;
         }
         [HttpPost("upsert")]
-        public async ValueTask<BaseResponse> Upsert(JosnRequest<Classroom> request)
+        public async ValueTask<BaseResponse> Upsert(Classroom request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             List<Student> students = null;
 
-            if (request.@params.id != null)
+            if (request.id != null)
             {
-                await cosmosrepository.SaveOrUpdate(request.@params);
-                students = await cosmosrepository.FindByDict<Student>(new Dictionary<string, object>() { { "classroomCode", request.@params.classroomCode }, { "schoolCode", request.@params.code } });
+                await cosmosrepository.SaveOrUpdate(request);
+                students = await cosmosrepository.FindByDict<Student>(new Dictionary<string, object>() { { "classroomCode", request.classroomCode }, { "schoolCode", request.code } });
             }
             else
             {
-                List<int> sc = await cosmosrepository.FindCountByDict<Classroom>(new Dictionary<string, object> { { "classroomCode", request.@params.classroomCode } });
+                List<int> sc = await cosmosrepository.FindCountByDict<Classroom>(new Dictionary<string, object> { { "classroomCode", request.classroomCode } });
                 if (sc.IsNotEmpty() && sc[0]>0) {
                     return builder.Error(ResponseCode.DATA_EXIST, "班级代码已经存在!").build();
                 }
-                request.@params.id = request.@params.classroomCode;
-                await cosmosrepository.SaveOrUpdate<Classroom>(request.@params);
+                request.id = request.classroomCode;
+                await cosmosrepository.SaveOrUpdate<Classroom>(request);
                 
             }
             //强制关联原生班级的id
-            List<ClassStudent> classroomStudents = await cosmosrepository.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", request.@params.classroomCode } });
+            List<ClassStudent> classroomStudents = await cosmosrepository.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", request.classroomCode } });
             if (classroomStudents.IsNotEmpty())
             {
                 if (students.IsNotEmpty()) {
                     List<ClassStudent> newClassStudents = new List<ClassStudent>();
                     students.ForEach(x=> {
                         if (!classroomStudents.Select(m=>m.code).Contains(x.studentId)) {
-                            newClassStudents.Add(new ClassStudent { code = x.studentId, id= request.@params.classroomCode });
+                            newClassStudents.Add(new ClassStudent { code = x.studentId, id= request.classroomCode });
                         }
                     });
                     await cosmosrepository.SaveOrUpdateAll<ClassStudent>(newClassStudents);
                 }
             }
-            return builder.Data(request.@params).build();
+            return builder.Data(request).build();
         }
 
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
+            List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request);
             return builder.Data(sc).build();
         }
 
 
 
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Delete(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.TryGetValue("id", out object id))
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
             {
-                List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request.@params);
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.TryGetValue("id", out object id))
+            {
+                List<Classroom> sc = await cosmosrepository.FindByDict<Classroom>(request);
                 if (sc.IsNotEmpty())
                 {
                     await cosmosrepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { { "id", sc.Select(x=>x.classroomCode).ToArray()} });

+ 25 - 19
TEAMModelOS/Controllers/School/ClassStudentController.cs

@@ -10,7 +10,7 @@ using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
 using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models;
- 
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -32,12 +32,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> find(JosnRequest<Dictionary<string,object>> request) {
+        public async Task<BaseResponse> find(JsonElement request) {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             // 班级编码
-            if (request.@params.TryGetValue("classroomCode", out object classroomCode)
+            if (dict.TryGetValue("classroomCode", out object classroomCode)
                  ///学校编码
-                 && request.@params.TryGetValue("schoolCode", out object schoolCode)
+                 && dict.TryGetValue("schoolCode", out object schoolCode)
                 )
             {
                 List<ClassStudent> classroomStudents = await _cosmos.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", classroomCode } });
@@ -101,10 +107,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<List<ClassStudent>> request)
+        public async Task<BaseResponse> Upsert(List<ClassStudent> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<ClassStudent> students = await _cosmos.SaveOrUpdateAll(request.@params);
+            List<ClassStudent> students = await _cosmos.SaveOrUpdateAll(request);
             builder.Data(students);
             return builder.build();
         }
@@ -130,16 +136,16 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("exit")]
-        public async Task<BaseResponse> Exit(JosnRequest<List<ClassStudent>> request)
+        public async Task<BaseResponse> Exit(List<ClassStudent> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (ValidateHelper.IsValid(request.@params) && request.@params.Count>0)
+            if (ValidateHelper.IsValid(request) && request.Count>0)
             {
                 List<ClassStudent> rm = new List<ClassStudent>();
-                List<Student> students = await _cosmos.FindByDict<Student>(new Dictionary<string, object> { { "studentId", request.@params.GroupBy(x => x.code).ToList().Select(x => x.Key).ToArray() } });
+                List<Student> students = await _cosmos.FindByDict<Student>(new Dictionary<string, object> { { "studentId", request.GroupBy(x => x.code).ToList().Select(x => x.Key).ToArray() } });
                 students.ForEach(x => {
                     if (!string.IsNullOrEmpty(x.classroomCode)) {
-                        request.@params.ForEach(m =>
+                        request.ForEach(m =>
                         {
                             if (x.classroomCode.Equals(m.id) && x.studentId.Equals(m.code)) {
                                 rm.Add(m);
@@ -147,8 +153,8 @@ namespace TEAMModelOS.Controllers
                         });
                     }
                 });
-                rm.ForEach(x=> { request.@params.Remove(x); });
-                List<IdPk> idPks = await _cosmos.DeleteAll<ClassStudent>(request.@params.Select(x=> new IdPk { id=x.id,pk=x.code}).ToList());
+                rm.ForEach(x=> { request.Remove(x); });
+                List<IdPk> idPks = await _cosmos.DeleteAll<ClassStudent>(request.Select(x=> new IdPk { id=x.id,pk=x.code}).ToList());
                 builder.Data(idPks);
             }
             return builder.build();
@@ -160,13 +166,13 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findById")]
-        public async Task<BaseResponse> FindById(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> FindById(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (ValidateHelper.IsValid(request.@params))
+            if (ValidateHelper.IsValid(request))
             {
-                ClassStudent classStudent = await _cosmos.FindByIdPk<ClassStudent>(request.@params.id,request.@params.pk);
-                List<Student> students = await _cosmos.FindByDict<Student>(new Dictionary<string, object> { { "studentId",request.@params.pk } }, new List<string> { "id", "name", "code", "seatNo", "studentId", "classroomCode" });
+                ClassStudent classStudent = await _cosmos.FindByIdPk<ClassStudent>(request.id,request.pk);
+                List<Student> students = await _cosmos.FindByDict<Student>(new Dictionary<string, object> { { "studentId",request.pk } }, new List<string> { "id", "name", "code", "seatNo", "studentId", "classroomCode" });
                 builder.Data(classStudent).Extend(new Dictionary<string, object> { { "student",students.IsNotEmpty()&& classStudent !=null? new { students[0].id, students[0].name, students[0].code, students[0].seatNo, students[0].studentId, students[0].classroomCode }:null } });
             }
             return builder.build();
@@ -177,12 +183,12 @@ namespace TEAMModelOS.Controllers
         /// <param name="studentId"></param>
         /// <returns></returns>
         [HttpPost("findByStu")]
-        public async Task<BaseResponse> FindByStu(JosnRequest<string> studentId)
+        public async Task<BaseResponse> FindByStu(string studentId)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (!string.IsNullOrEmpty(studentId.@params))
+            if (!string.IsNullOrEmpty(studentId))
             {
-                List<ClassStudent> sc = await _cosmos.FindByDict<ClassStudent>(new Dictionary<string, object> { { "code",studentId.@params} });
+                List<ClassStudent> sc = await _cosmos.FindByDict<ClassStudent>(new Dictionary<string, object> { { "code",studentId} });
                 List<Classroom> classrooms = await _cosmos.FindByDict<Classroom>(new Dictionary<string, object> { { "classroomCode", sc.GroupBy(x => x.id).Select(x => x.Key).ToArray() } });
                 builder.Data(classrooms).Extend(new Dictionary<string, object> { { "count", classrooms.Count } });
             }

+ 33 - 26
TEAMModelOS/Controllers/School/CourseController.cs

@@ -8,6 +8,7 @@ using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -28,17 +29,17 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> upsert(JosnRequest<Course> request)
+        public async Task<BaseResponse> upsert(Course request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (string.IsNullOrEmpty(request.@params.id)) {
-                List<int> count =await _cosmos.FindCountByDict<Course>(new Dictionary<string, object> { { "courseCode", request.@params.courseCode },{ "code",request.@params.code} });
+            if (string.IsNullOrEmpty(request.id)) {
+                List<int> count =await _cosmos.FindCountByDict<Course>(new Dictionary<string, object> { { "courseCode", request.courseCode },{ "code",request.code} });
                 if (count.IsNotEmpty() && count[0] > 0) {
                     return builder.Error(ResponseCode.DATA_EXIST, "课程编码已经存在!").build();
                 }
-                request.@params.id = request.@params.code.Replace("#", "") +"-"+ request.@params.courseCode;
+                request.id = request.code.Replace("#", "") +"-"+ request.courseCode;
             }
-            Course  response = await _cosmos.SaveOrUpdate<Course>(request.@params);
+            Course  response = await _cosmos.SaveOrUpdate<Course>(request);
             return builder.Data(response).build();
         }
         /// <summary>
@@ -47,12 +48,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Course> data = new List<Course>();
-            if (request.@params.Keys.Count > 0) {
-                data = await _cosmos.FindByDict<Course>(request.@params);
+            if (dict.Keys.Count > 0) {
+                data = await _cosmos.FindByDict<Course>(request);
             }
             return builder.Data(data).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
         }
@@ -62,10 +69,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<IdPk> request) 
+        public async Task<BaseResponse> Delete(IdPk request) 
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            IdPk idPk=  await _cosmos.DeleteAsync<Course>(request.@params);
+            IdPk idPk=  await _cosmos.DeleteAsync<Course>(request);
             return builder.Data(idPk).build();
         }
         /// <summary>
@@ -74,10 +81,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("deleteAll")]
-        public async Task<BaseResponse> DeleteAll(JosnRequest<List<IdPk>> request)
+        public async Task<BaseResponse> DeleteAll(List<IdPk> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<IdPk> idPk = await _cosmos.DeleteAll<Course>(request.@params);
+            List<IdPk> idPk = await _cosmos.DeleteAll<Course>(request);
             return builder.Data(idPk).build();
         }
       
@@ -87,10 +94,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("importAllPlan")]
-        public async Task<BaseResponse> ImportAllPlan(JosnRequest<ClassPlan> request)
+        public async Task<BaseResponse> ImportAllPlan(ClassPlan request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            string classroomCode=  request.@params.classroomCode;
+            string classroomCode=  request.classroomCode;
             Dictionary<string, object> dictcode = new Dictionary<string, object>() { { "classes[*].classroomCode", classroomCode } };
             List<CoursePlan> courses= await _cosmos.FindByDict<CoursePlan>(dictcode);
             //按班级导入课程表 要清除之前的课程安排
@@ -111,9 +118,9 @@ namespace TEAMModelOS.Controllers
                 for (int i = 0; i < courses.Count; i++) {
                     CourseClass courseClass =   new CourseClass
                     {
-                        classroomCode = request.@params.classroomCode,
+                        classroomCode = request.classroomCode,
                     };
-                    List <CoursePlanDto> coursePlans= request.@params.coursePlans.Where(x => x.code == courses[i].code && x.courseId == courses[i].id).ToList();
+                    List <CoursePlanDto> coursePlans= request.coursePlans.Where(x => x.code == courses[i].code && x.courseId == courses[i].id).ToList();
                     coursePlans.ForEach(x=> { courseClass.courseTimes.Add(x.courseTime); });
                     courses[i].classes.Add(courseClass);
                 }
@@ -128,30 +135,30 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertPlanDto")]
-        public async Task<BaseResponse> UpsertPlan(JosnRequest<CoursePlanDto> request)
+        public async Task<BaseResponse> UpsertPlan(CoursePlanDto request)
         {
             List<CoursePlan> plans = new List<CoursePlan>();
             ResponseBuilder builder = ResponseBuilder.custom();
             List<CoursePlan> coursePlans = new List<CoursePlan>();
-            CoursePlan data = await _cosmos.FindByIdPk<CoursePlan>(request.@params.courseId, request.@params.code );
+            CoursePlan data = await _cosmos.FindByIdPk<CoursePlan>(request.courseId, request.code );
             if (data != null)
             {
                 bool flag = true;
                 data.classes.ForEach(x => {
-                    if (x.classroomCode == request.@params.classroomCode) {
+                    if (x.classroomCode == request.classroomCode) {
                         bool dt = true;
                         x.courseTimes.ForEach(y => {
-                            if (y.time == request.@params.courseTime.time && y.day == request.@params.courseTime.day)
+                            if (y.time == request.courseTime.time && y.day == request.courseTime.day)
                             {
                                 //找到相同时间段则替换
-                                y = request.@params.courseTime;
+                                y = request.courseTime;
                                 dt = false;
                             }
                             
                         });
                         //如果都没找到匹配的时间段则新增
                         if (dt) {
-                            x.courseTimes.Add(request.@params.courseTime);
+                            x.courseTimes.Add(request.courseTime);
                         }
                        
                         flag = false;
@@ -159,17 +166,17 @@ namespace TEAMModelOS.Controllers
                 });
                 //如果没有找到匹配的班级则新增一个班级的时间安排
                 if (flag) {
-                    data.classes.Add(new CourseClass { classroomCode = request.@params.classroomCode, courseTimes = new List<CourseTime> { request.@params.courseTime } });
+                    data.classes.Add(new CourseClass { classroomCode = request.classroomCode, courseTimes = new List<CourseTime> { request.courseTime } });
                 }
             }
             else
             {
                 data = new CoursePlan
                 {
-                    id = request.@params.courseId,
-                    code = request.@params.code,
+                    id = request.courseId,
+                    code = request.code,
                 };
-                data.classes.Add(new CourseClass { classroomCode = request.@params.classroomCode, courseTimes = new List<CourseTime> { request.@params.courseTime } });
+                data.classes.Add(new CourseClass { classroomCode = request.classroomCode, courseTimes = new List<CourseTime> { request.courseTime } });
             }
             await _cosmos.SaveOrUpdate(data);
             return builder.Data(data).build();

+ 19 - 12
TEAMModelOS/Controllers/School/SchoolController.cs

@@ -8,6 +8,7 @@ using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.DI;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.Context.Exception;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -27,29 +28,29 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<School> request)
+        public async Task<BaseResponse> Upsert(School request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (string.IsNullOrEmpty(request.@params.id))
+            if (string.IsNullOrEmpty(request.id))
             {
-                List<School> schools = await _cosmosrepository.FindByDict<School>(new Dictionary<string, object> { { "code", request.@params.schoolCode } });
+                List<School> schools = await _cosmosrepository.FindByDict<School>(new Dictionary<string, object> { { "code", request.schoolCode } });
                 if (schools.IsNotEmpty())
                 {
                     return builder.Error(ResponseCode.DATA_EXIST, "学校编码已存在!").build();
                 }
-                request.@params.code = request.@params.schoolCode;
-                request.@params.id = request.@params.schoolCode;
+                request.code = request.schoolCode;
+                request.id = request.schoolCode;
             }
             else {
-                List<School> schools = await _cosmosrepository.FindByDict<School>(new Dictionary<string, object> { { "id", request.@params.id } });
+                List<School> schools = await _cosmosrepository.FindByDict<School>(new Dictionary<string, object> { { "id", request.id } });
                 if (schools.IsEmpty())
                 {
                     return builder.Error(ResponseCode.PARAMS_ERROR, "id不存在,不能更新").build();
                 }
             }
-            if (request.@params.id.Equals(request.@params.code) && request.@params.id.Equals(request.@params.schoolCode))
+            if (request.id.Equals(request.code) && request.id.Equals(request.schoolCode))
             {
-                School datas = await _cosmosrepository.SaveOrUpdate<School>(request.@params);
+                School datas = await _cosmosrepository.SaveOrUpdate<School>(request);
                 return builder.Data(datas).build();
             }
             else {
@@ -63,12 +64,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.TryGetValue("code", out object code) && null !=  code &&! string.IsNullOrEmpty(code.ToString()))
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
             {
-                List<School> sc = await _cosmosrepository.FindByDict<School>(request.@params);
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.TryGetValue("code", out object code) && null !=  code &&! string.IsNullOrEmpty(code.ToString()))
+            {
+                List<School> sc = await _cosmosrepository.FindByDict<School>(request);
                 return builder.Data(sc).build();
             }
             else {
@@ -81,7 +88,7 @@ namespace TEAMModelOS.Controllers
         /// <param name="GetAllSchoolBaesInfo"></param>
         /// <returns></returns>
         [HttpPost("GetAllSchoolBaesInfo")]
-        public async Task<BaseResponse> GetAllSchoolBaesInfo(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> GetAllSchoolBaesInfo(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             List<School> sc = await _cosmosrepository.FindSQL<School>("SELECT c.id, c.schoolCode, c.schoolName, c.address, c.picture FROM c WHERE c.pk='School'");

+ 37 - 24
TEAMModelOS/Controllers/Student/StudentController.cs

@@ -10,6 +10,7 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
 using TEAMModelOS.SDK.Context.Exception;
 using TEAMModelOS.Service.Models;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -31,27 +32,27 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
 
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<Student> request)
+        public async Task<BaseResponse> Upsert(Student request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             //设置密码 isSet 是否加密 如果加密则不会再次加密
-            if (!request.@params.password.isSet)
+            if (!request.password.isSet)
             {
-                request.@params.password.value = TmdCrypt.Encrypt(request.@params.password.value);
-                request.@params.password.isSet = true;
+                request.password.value = TmdCrypt.Encrypt(request.password.value);
+                request.password.isSet = true;
             }
-            request.@params.id = request.@params.studentId.Replace("#", "-");
+            request.id = request.studentId.Replace("#", "-");
             ///假如更新了班级则先获取更新之前的班级
-            var olStudent= await azureCosmosDBRepository.FindByIdPk<Student>(request.@params.id,request.@params.code);
-            if (olStudent!=null &&  !string.IsNullOrEmpty(olStudent.classroomCode) && ! olStudent.classroomCode.Equals(request.@params.classroomCode) ) {
+            var olStudent= await azureCosmosDBRepository.FindByIdPk<Student>(request.id,request.code);
+            if (olStudent!=null &&  !string.IsNullOrEmpty(olStudent.classroomCode) && ! olStudent.classroomCode.Equals(request.classroomCode) ) {
                 //移除之前的原生班级
                 IdPk idPk=await azureCosmosDBRepository.DeleteAsync<ClassStudent>( olStudent.classroomCode ,olStudent.studentId);
                
             }
             ///新建最新的班级关系表
-            ClassStudent classroomStudent = new ClassStudent { id = request.@params.classroomCode, code = request.@params.studentId };
+            ClassStudent classroomStudent = new ClassStudent { id = request.classroomCode, code = request.studentId };
             await azureCosmosDBRepository.SaveOrUpdate(classroomStudent);
-            Student data = await azureCosmosDBRepository.SaveOrUpdate<Student>(request.@params);
+            Student data = await azureCosmosDBRepository.SaveOrUpdate<Student>(request);
             return builder.Data(data).build();
         }
 
@@ -61,12 +62,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.TryGetValue("code", out object _))
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
             {
-                List<Student> data = await azureCosmosDBRepository.FindByDict<Student>(request.@params);
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.TryGetValue("code", out object _))
+            {
+                List<Student> data = await azureCosmosDBRepository.FindByDict<Student>(request);
                 return builder.Data(data).build();
             }
             else
@@ -76,20 +83,20 @@ namespace TEAMModelOS.Controllers
             }
         }
         [HttpPost("upsertAll")]
-        public async Task<BaseResponse> UpsertAll(JosnRequest<List<Student>> request)
+        public async Task<BaseResponse> UpsertAll(List<Student> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
 
-            if (ValidateHelper.IsValid(request.@params) && request.@params.IsNotEmpty()) {
+            if (ValidateHelper.IsValid(request) && request.IsNotEmpty()) {
 
                 ///假如更新了班级则先获取更新之前的班级
-                string[] ids = request.@params.Select(x=>x.studentId).ToArray();
+                string[] ids = request.Select(x=>x.studentId).ToArray();
                 List<Student> oldStudent = await azureCosmosDBRepository.FindByDict<Student>(new Dictionary<string, object>() { { "studentId", ids } });
                 List<IdPk> idPks = new List<IdPk>();
                 ///处理未变动的班级关系
                 List<IdPk> unpk = new List<IdPk>();
                 oldStudent.ForEach(x=> {
-                    request.@params.ForEach(m => {
+                    request.ForEach(m => {
                         if (x.studentId.Equals(m.studentId)) {
                             if (!x.classroomCode.Equals(m.classroomCode))
                             {
@@ -105,7 +112,7 @@ namespace TEAMModelOS.Controllers
                     await azureCosmosDBRepository.DeleteAll<ClassStudent>(idPks);
                 }
                 long createDate = DateTimeOffset.UtcNow.Ticks;
-                request.@params.ForEach(
+                request.ForEach(
                     x => {
                         x.createDate = createDate;
                         x.id = x.studentId.Replace("#", "-");
@@ -116,7 +123,7 @@ namespace TEAMModelOS.Controllers
                             x.password.isSet = true;
                         }
                     });
-                List<Student> students = await azureCosmosDBRepository.SaveOrUpdateAll(request.@params);
+                List<Student> students = await azureCosmosDBRepository.SaveOrUpdateAll(request);
                 ///更新学生关系表
                 List<ClassStudent> classroomStudents = new List<ClassStudent>();
                 foreach (var student  in students)
@@ -150,12 +157,12 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<Student> request)
+        public async Task<BaseResponse> Delete(Student request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            IdPk data = await azureCosmosDBRepository.DeleteAsync<Student>(request.@params.id, request.@params.code);
+            IdPk data = await azureCosmosDBRepository.DeleteAsync<Student>(request.id, request.code);
             ///更新学生关系表
-            await azureCosmosDBRepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { { "code", request.@params.studentId } });
+            await azureCosmosDBRepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { { "code", request.studentId } });
             return builder.Data(data).build();
         }
         /// <summary>
@@ -164,11 +171,17 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("bulkDelete")]
-        public async Task<BaseResponse> BulkDelete(JosnRequest<Dictionary<string,object>> request)
+        public async Task<BaseResponse> BulkDelete(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0&& request.@params.ContainsKey("code")) {
-                List<Student> students = await azureCosmosDBRepository.FindByDict<Student>(request.@params);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0&& dict.ContainsKey("code")) {
+                List<Student> students = await azureCosmosDBRepository.FindByDict<Student>(request);
                 await azureCosmosDBRepository.DeleteAll<Student>(students);
                 ///更新学生关系表
                 await azureCosmosDBRepository.DeleteAll<ClassStudent>(new Dictionary<string, object> { {"code",students.Select(x=>x.studentId).ToArray() } });

+ 54 - 41
TEAMModelOS/Controllers/Syllabus/ItemInfoController.cs

@@ -6,7 +6,8 @@ using System.Threading.Tasks;
 using TEAMModelOS.Service.Models;
 using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
-using TEAMModelOS.SDK.DI; 
+using TEAMModelOS.SDK.DI;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -28,32 +29,32 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertAll")]
-        public async Task<BaseResponse> UpsertAll(JosnRequest<List<ItemInfo>> request)
+        public async Task<BaseResponse> UpsertAll(List<ItemInfo> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             
-            request.@params.ForEach(x => {
+            request.ForEach(x => {
               
                 if (string.IsNullOrEmpty(x.id)) {
                     x.id = SnowflakeId.NextId()+"";
                 };
                 x.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
             });
-            return builder.Data(await cosmosDBV3Repository.SaveOrUpdateAll(request.@params)).build();
+            return builder.Data(await cosmosDBV3Repository.SaveOrUpdateAll(request)).build();
         }
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<ItemInfo> request)
+        public async Task<BaseResponse> Upsert(ItemInfo request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
              
 
              
-            if (string.IsNullOrEmpty(request.@params.id))
+            if (string.IsNullOrEmpty(request.id))
             {
-                request.@params.id = SnowflakeId.NextId() + "";
+                request.id = SnowflakeId.NextId() + "";
             };
-            request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
-            return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request.@params)).build();
+            request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
+            return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request)).build();
         }
         /// <summary>
         //获取题目摘要信息
@@ -61,16 +62,22 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findSummary")]
-        public async Task<BaseResponse> FindSummary(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindSummary(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<string> props = new List<string> {
                 "question", "id", "code", "usageCount",
                 "level","field","points","type","option","createTime"
             }; 
             List<ItemInfo> items = new List<ItemInfo>();
-            if (request.@params.Keys.Count > 0) {
-                items = await cosmosDBV3Repository.FindByDict<ItemInfo>(request.@params, propertys: props);
+            if (dict.Keys.Count > 0) {
+                items = await cosmosDBV3Repository.FindByDict<ItemInfo>(request, propertys: props);
             }
             
             return builder.Data(items).Extend(new Dictionary<string, object> { { "props", props } }).build();
@@ -81,10 +88,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findByIds")]
-        public async Task<BaseResponse> FindByIds(JosnRequest<List<string>> request)
+        public async Task<BaseResponse> FindByIds(List<string> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<ItemInfo> items = await cosmosDBV3Repository.FindByIds<ItemInfo>(request.@params);
+            List<ItemInfo> items = await cosmosDBV3Repository.FindByIds<ItemInfo>(request);
             return builder.Data(items).build();
         }
 
@@ -94,10 +101,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> Delete(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            IdPk idPk = await cosmosDBV3Repository.DeleteAsync<ItemInfo>( request.@params );
+            IdPk idPk = await cosmosDBV3Repository.DeleteAsync<ItemInfo>( request );
             return builder.Data(idPk).build();
         }
 
@@ -107,10 +114,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("deleteAll")]
-        public async Task<BaseResponse> DeleteAll(JosnRequest<Dictionary<string,object>> request)
+        public async Task<BaseResponse> DeleteAll(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<IdPk> idPk = await cosmosDBV3Repository.DeleteAll<ItemInfo>(request.@params);
+            List<IdPk> idPk = await cosmosDBV3Repository.DeleteAll<ItemInfo>(request);
             return builder.Data(idPk).build();
         }
         /// <summary>
@@ -119,12 +126,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<ItemInfo> items =new List<ItemInfo>();
-            if (request.@params.Keys.Count > 0) {
-                items = await cosmosDBV3Repository.FindByDict<ItemInfo>(request.@params);
+            if (dict.Keys.Count > 0) {
+                items = await cosmosDBV3Repository.FindByDict<ItemInfo>(request);
             }
             return builder.Data(items).build();
         }
@@ -135,10 +148,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("FindCacheShell")]
-        public async Task<BaseResponse> FindCacheShell(JosnRequest<List<string>> request)
+        public async Task<BaseResponse> FindCacheShell(List<string> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<ItemInfo> items = await cosmosDBV3Repository.FindByIds<ItemInfo>(request.@params);
+            List<ItemInfo> items = await cosmosDBV3Repository.FindByIds<ItemInfo>(request);
             //List<string> ps = new List<string>() { "6f705b1b-8221-5307-18da-13da05adf91e", "c3e1e95a-561e-fabf-cce3-3a564782e443" };
             //
             //
@@ -154,18 +167,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("Automatic")]
-        public async Task<BaseResponse> Automatic(JosnRequest<Compose> request)
+        public async Task<BaseResponse> Automatic(Compose request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
 
             ///处理知识点均分问题
             int avg = 0;
             Dictionary<string, int> point = new Dictionary<string, int>();
-            if (request.@params.points.IsNotEmpty())
+            if (request.points.IsNotEmpty())
             {
-                avg = (int)Math.Ceiling(request.@params.count * 1.0 / request.@params.points.Count);
+                avg = (int)Math.Ceiling(request.count * 1.0 / request.points.Count);
 
-                foreach (string p in request.@params.points)
+                foreach (string p in request.points)
                 {
                     point.TryAdd(p, avg);
                 }
@@ -173,11 +186,11 @@ namespace TEAMModelOS.Controllers
             List<ItemInfo> retnInfos = new List<ItemInfo>();
             List<ItemInfo> itemInfos = new List<ItemInfo>();
             List<TempItem> tempItems = new List<TempItem>();
-            if (request.@params.quInfos.IsNotEmpty())
+            if (request.quInfos.IsNotEmpty())
             {
                 List<string> types = new List<string>();
                 List<int> levels = new List<int>();
-                foreach (QuInfo quInfo in request.@params.quInfos)
+                foreach (QuInfo quInfo in request.quInfos)
                 {
                     // 自定义
                     if (quInfo.custom.IsNotEmpty() && quInfo.policy.Equals("custom"))
@@ -189,17 +202,17 @@ namespace TEAMModelOS.Controllers
                                 tempItems.Add(new TempItem { level = custom.level, type = quInfo.type });
                             }
                             Dictionary<string, object> dict = new Dictionary<string, object>();
-                            if (request.@params.code.IsNotEmpty())
+                            if (request.code.IsNotEmpty())
                             {
-                                dict.Add("code", request.@params.code.ToArray());
+                                dict.Add("code", request.code.ToArray());
                             }
-                            if (request.@params.period.IsNotEmpty())
+                            if (request.period.IsNotEmpty())
                             {
-                                dict.Add("period", request.@params.period.ToArray());
+                                dict.Add("period", request.period.ToArray());
                             }
-                            if (request.@params.points.IsNotEmpty())
+                            if (request.points.IsNotEmpty())
                             {
-                                dict.Add("points[*]", request.@params.points.ToArray());
+                                dict.Add("points[*]", request.points.ToArray());
                             }
                             dict.Add("lite", false);
                             ///
@@ -215,17 +228,17 @@ namespace TEAMModelOS.Controllers
                     else
                     {
                         Dictionary<string, object> dict = new Dictionary<string, object>();
-                        if (request.@params.code.IsNotEmpty())
+                        if (request.code.IsNotEmpty())
                         {
-                            dict.Add("code", request.@params.code.ToArray());
+                            dict.Add("code", request.code.ToArray());
                         }
-                        if (request.@params.period.IsNotEmpty())
+                        if (request.period.IsNotEmpty())
                         {
-                            dict.Add("period", request.@params.period.ToArray());
+                            dict.Add("period", request.period.ToArray());
                         }
-                        if (request.@params.points.IsNotEmpty())
+                        if (request.points.IsNotEmpty())
                         {
-                            dict.Add("points[*]", request.@params.points.ToArray());
+                            dict.Add("points[*]", request.points.ToArray());
                         }
                         dict.Add("lite", false);
                         dict.Add("type", quInfo.type);

+ 39 - 26
TEAMModelOS/Controllers/Syllabus/KnowledgeController.cs

@@ -13,6 +13,7 @@ using TEAMModelOS.SDK.DI;
 
 using TEAMModelOS.Service.Models;
 using TEAMModelOS.Service.Services.Implement;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -40,7 +41,7 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <param name="builder"></param>
         /// <returns></returns>
-        delegate Task<List<T>> DeleteDelegate<T>(JosnRequest<Dictionary<string, object>> request, ResponseBuilder builder) where T : ID;
+        delegate Task<List<T>> DeleteDelegate<T>(JsonElement request, ResponseBuilder builder) where T : ID;
 
         /// <summary>
         /// 保存或者更新学校 知识点 或者 知识块 代理
@@ -59,18 +60,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findStdPoint")]
-        public async Task<BaseResponse> FindStdPoint(JosnRequest<KnowledgeDto> request)
+        public async Task<BaseResponse> FindStdPoint(KnowledgeDto request)
         {
             // request.@params.PointParams.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
             List<KnowledgePoint> data = new List<KnowledgePoint>();
-            if (request.@params != null && request.@params.PointParams.TryGetValue("SubjectCode", out _))
+            if (request != null && request.PointParams.TryGetValue("SubjectCode", out _))
             {
-                List<KnowledgePoint> points = await _table.FindListByDict<KnowledgePoint>(request.@params.PointParams);
-                if (request.@params.Periods.IsNotEmpty())
+                List<KnowledgePoint> points = await _table.FindListByDict<KnowledgePoint>(request.PointParams);
+                if (request.Periods.IsNotEmpty())
                 {
                     HashSet<KnowledgePoint> knowledges = new HashSet<KnowledgePoint>();
-                    foreach (string period in request.@params.Periods)
+                    foreach (string period in request.Periods)
                     {
                         if (!string.IsNullOrEmpty(period))
                         {
@@ -99,20 +100,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findStdBlockPoint")]
-        public async Task<BaseResponse> FindStdBlockPoint(JosnRequest<KnowledgeDto> request)
+        public async Task<BaseResponse> FindStdBlockPoint(KnowledgeDto request)
         {
             //request.@params.PointParams.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
             List<BlockPointDto> data = new List<BlockPointDto>();
-            if (request.@params != null && request.@params.PointParams.TryGetValue("SubjectCode", out _))
+            if (request != null && request.PointParams.TryGetValue("SubjectCode", out _))
             {
-                List<KnowledgeBlockPoint> blockPoints = await _table.FindListByDict<KnowledgeBlockPoint>(request.@params.PointParams);
-                List<KnowledgeBlock> blocks = await _table.FindListByDict<KnowledgeBlock>(request.@params.PointParams);
-                if (request.@params.Periods.IsNotEmpty())
+                List<KnowledgeBlockPoint> blockPoints = await _table.FindListByDict<KnowledgeBlockPoint>(request.PointParams);
+                List<KnowledgeBlock> blocks = await _table.FindListByDict<KnowledgeBlock>(request.PointParams);
+                if (request.Periods.IsNotEmpty())
                 {
                     HashSet<KnowledgeBlock> knowledges = new HashSet<KnowledgeBlock>();
                     HashSet<KnowledgeBlockPoint> knowledgeBlocks = new HashSet<KnowledgeBlockPoint>();
-                    foreach (string period in request.@params.Periods)
+                    foreach (string period in request.Periods)
                     {
                         if (!string.IsNullOrEmpty(period))
                         {
@@ -124,7 +125,7 @@ namespace TEAMModelOS.Controllers
                     blockPoints = knowledgeBlocks.OrderBy(x => x.Order).ToList();
                 }
                 List<BlockPointDto> blockPointDtos = new List<BlockPointDto>();
-                data = FindTree(ListToTree(blocks, blockPoints), request.@params.BlockId, blockPointDtos);
+                data = FindTree(ListToTree(blocks, blockPoints), request.BlockId, blockPointDtos);
             }
             else
             {
@@ -223,14 +224,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             // request.@params.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Knowledge> data = new List<Knowledge>();
-            if (request.@params.Keys.Count>0)
+            if (dict.Keys.Count>0)
             {
-                data = await _cosmos.FindByDict<Knowledge>(request.@params);
+                data = await _cosmos.FindByDict<Knowledge>(request);
                 data.ForEach(d =>
                 {
                     if (d.type == 1) {
@@ -259,14 +266,14 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findByIds")]
-        public async Task<BaseResponse> FindByIds(JosnRequest<List<string>> request)
+        public async Task<BaseResponse> FindByIds(List<string> request)
         {
             // request.@params.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
             List<Knowledge> data = new List<Knowledge>();
-            if (request.@params.IsNotEmpty())
+            if (request.IsNotEmpty())
             {
-                data = await _cosmos.FindByIds<Knowledge>(request.@params);
+                data = await _cosmos.FindByIds<Knowledge>(request);
             }
             else
             {
@@ -285,12 +292,12 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertAll")]
-        public async Task<BaseResponse> UpsertAll(JosnRequest<List<Knowledge>> request)
+        public async Task<BaseResponse> UpsertAll(List<Knowledge> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.IsNotEmpty())
+            if (request.IsNotEmpty())
             {
-                List<Knowledge> ts = await KnowledgeService.SaveOrUpdateKnowledge(_cosmos,SnowflakeId,request.@params);
+                List<Knowledge> ts = await KnowledgeService.SaveOrUpdateKnowledge(_cosmos,SnowflakeId,request);
                 if (ts.Count > 0) builder.Data(ts).Extend(new Dictionary<string, object> { { "count", ts.Count } });
                 else {
                     return builder.Error(ResponseCode.FAILED, "失败!").build();
@@ -308,7 +315,7 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Delete(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             DeleteDelegate<Knowledge> deleteDelegate1 = Delete<Knowledge>;
@@ -327,12 +334,18 @@ namespace TEAMModelOS.Controllers
             return builder.build();
         }
 
-        private async Task<List<T>> Delete<T>(JosnRequest<Dictionary<string, object>> request, ResponseBuilder builder) where T : ID
+        private async Task<List<T>> Delete<T>(JsonElement request, ResponseBuilder builder) where T : ID
         {
             List<T> schoolBlocks = null;
-            if (request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0)
             {
-                  schoolBlocks = await _cosmos.FindByDict<T>(request.@params);
+                  schoolBlocks = await _cosmos.FindByDict<T>(request);
                 Type t = typeof(T);
                 List<T> list = new List<T>();
                 if (schoolBlocks.IsNotEmpty())

+ 34 - 15
TEAMModelOS/Controllers/Syllabus/ResourceController.cs

@@ -9,6 +9,7 @@ using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.DI;
 
 using TEAMModelOS.Service.Models;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -32,12 +33,12 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertAll")]
-        public async Task<BaseResponse> UpsertAll(JosnRequest<List<Resource>> request)
+        public async Task<BaseResponse> UpsertAll(List<Resource> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.IsNotEmpty())// != null )
+            if (request.IsNotEmpty())// != null )
             {
-                List<Resource> resource = request.@params;
+                List<Resource> resource = request;
                 foreach (Resource item in resource)
                 {
                     if (item.id == null)
@@ -59,14 +60,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             // request.@params.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0)
             {
                 List<Resource> data = new List<Resource>();
-                data = await _cosmos.FindByDict<Resource>(request.@params);
+                data = await _cosmos.FindByDict<Resource>(request);
 
                 return builder.Data(data.OrderBy(m => m.createTime)).Extend(new Dictionary<string, object> { { "count", data.IsNotEmpty() ? data.Count : 0 } }).build();
             }
@@ -84,14 +91,14 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findById")]
-        public async Task<BaseResponse> FindSyllabusResourceById(JosnRequest<List<string>> request)
+        public async Task<BaseResponse> FindSyllabusResourceById(List<string> request)
         {
             // request.@params.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params != null)
+            if (request != null)
             {
                 List<Resource> data = new List<Resource>();
-                data = await _cosmos.FindByIds<Resource>(request.@params);
+                data = await _cosmos.FindByIds<Resource>(request);
 
                 return builder.Data(data.OrderBy(m => m.createTime)).Extend(new Dictionary<string, object> { { "count", data.IsNotEmpty() ? data.Count : 0 } }).build();
 
@@ -109,7 +116,7 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> DeleteSyllabusResource(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> DeleteSyllabusResource(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             List<Resource> syllabusResources =  await Delete<Resource>(request, builder);
@@ -130,11 +137,17 @@ namespace TEAMModelOS.Controllers
             return builder.build();
         }
 
-        private async Task<List<T>> Delete<T>(JosnRequest<Dictionary<string, object>> request, ResponseBuilder builder)where T:ID
+        private async Task<List<T>> Delete<T>(JsonElement request, ResponseBuilder builder)where T:ID
         {
-            if (request.@params.IsNotEmpty() && request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.IsNotEmpty() && dict.Keys.Count > 0)
             {
-                List<T> schoolBlocks = await _cosmos.FindByDict<T>(request.@params);
+                List<T> schoolBlocks = await _cosmos.FindByDict<T>(request);
                 Type t = typeof(T);
                 if (schoolBlocks.IsNotEmpty())
                 {
@@ -157,11 +170,17 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("reference")]
-        public async Task<BaseResponse> Reference(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Reference(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<ResourceReference> data = new List<ResourceReference>();
-            data = await _table.FindListByDict<ResourceReference>(request.@params);
+            data = await _table.FindListByDict<ResourceReference>(dict);
             return builder.Data(data.OrderBy(m => m.CreateTime)).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
         }
     }

+ 23 - 10
TEAMModelOS/Controllers/Syllabus/SyllabusController.cs

@@ -11,6 +11,7 @@ using TEAMModelOS.SDK.Helper.Common.JsonHelper;
 using System.Linq; 
 using TEAMModelOS.Service.Models;
 using TEAMModelOS.Service.Services.Implement;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -35,10 +36,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertTree")]
-        public async Task<BaseResponse> SaveOrUpdateAsTree(JosnRequest<List<SyllabusTree>> request)
+        public async Task<BaseResponse> SaveOrUpdateAsTree(List<SyllabusTree> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<SyllabusTree> treess = await SyllabusService.SaveOrUpdateAsTree(azureCosmosDBRepository,request.@params);
+            List<SyllabusTree> treess = await SyllabusService.SaveOrUpdateAsTree(azureCosmosDBRepository,request);
             return builder.Data(treess).build();
         }
 
@@ -49,11 +50,11 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertNodes")]
-        public async Task<BaseResponse> SaveOrUpdateAsNodes(JosnRequest<List<SyllabusNode>> request)
+        public async Task<BaseResponse> SaveOrUpdateAsNodes(List<SyllabusNode> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Syllabus> syllabuses = await SyllabusService.SaveOrUpdateAsNodes(azureCosmosDBRepository, request.@params);
-            if (syllabuses.IsNotEmpty()) return builder.Data(request.@params).build();
+            List<Syllabus> syllabuses = await SyllabusService.SaveOrUpdateAsNodes(azureCosmosDBRepository, request);
+            if (syllabuses.IsNotEmpty()) return builder.Data(request).build();
             else return builder.Data(syllabuses).build();
         }
 
@@ -63,12 +64,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Delete(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
             {
-                List<Syllabus> syllabuses = await SyllabusService.DeleteSyllabus(azureCosmosDBRepository ,request.@params);
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0)
+            {
+                List<Syllabus> syllabuses = await SyllabusService.DeleteSyllabus(azureCosmosDBRepository ,dict);
 
                 if (syllabuses.IsNotEmpty())
                 {
@@ -110,10 +117,16 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<SyllabusTree> treess = await SyllabusService.Find(azureCosmosDBRepository, request.@params);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            List<SyllabusTree> treess = await SyllabusService.Find(azureCosmosDBRepository, dict);
             return builder.Data(treess).build();
         }
 

+ 25 - 12
TEAMModelOS/Controllers/Syllabus/VolumeController.cs

@@ -13,6 +13,7 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models;
 using Org.BouncyCastle.Ocsp;
 using TEAMModelOS.Service.Services.Implement;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -35,10 +36,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<Volume> request)
+        public async Task<BaseResponse> Upsert(Volume request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Volume> volume = await VolumeService.SaveOrUpdateVolume(azureCosmosDBRepository,request.@params);
+            List<Volume> volume = await VolumeService.SaveOrUpdateVolume(azureCosmosDBRepository,request);
             return builder.Data(volume.IsEmpty() ? null : volume[0]).build();
         }
 
@@ -49,18 +50,18 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<Volume> request)
+        public async Task<BaseResponse> Delete(Volume request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             bool flag = false;
-            if (!string.IsNullOrEmpty(request.@params.id))
+            if (!string.IsNullOrEmpty(request.id))
             {
                 //if (request.@params.type == 0)
                 //{
-                    request.@params.status = 0;
+                    request.status = 0;
                     List<Volume> volumes = new List<Volume>
                     {
-                        request.@params
+                        request
                     };
                     await azureCosmosDBRepository.SaveOrUpdateAll<Volume>(volumes);
                     flag = true;
@@ -82,14 +83,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Volume> volumes ;
-            if (request.@params.TryGetValue("code", out object code))
+            if (dict.TryGetValue("code", out object code))
             {
                 List<Syllabus> syllabuses = await azureCosmosDBRepository.FindByDict<Syllabus>(new Dictionary<string, object> { { "code",code.ToString() } });
-                volumes = await azureCosmosDBRepository.FindByDict<Volume>(request.@params);
+                volumes = await azureCosmosDBRepository.FindByDict<Volume>(request);
                 //处理单个册别下面的资源和题目
                 volumes.ForEach(v => {
                     
@@ -132,13 +139,19 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("count")]
-        public async Task<BaseResponse> count(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> count(JsonElement request)
         {
             //List<List<List<List<int>>>> allCount = new List<List<List<List<int>>>>();
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<List<List<int>>> sCount = new List<List<List<int>>>();
-            if (request.@params.Keys.Count > 0) {
-                List<School> sc = await azureCosmosDBRepository.FindByDict<School>(request.@params);
+            if (dict.Keys.Count > 0) {
+                List<School> sc = await azureCosmosDBRepository.FindByDict<School>(dict);
                 //查询校本所有册别数据
                 Dictionary<string, object> scMap = new Dictionary<string, object>
             {

+ 63 - 50
TEAMModelOS/Controllers/Task/HomeworkController.cs

@@ -18,6 +18,7 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models; 
 using TEAMModelOS.SDK.Context.Constant.Common;
 using TEAMModelOS.Service.Services.Learn.Implements;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers.Learn
 {
@@ -46,10 +47,10 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("cancel")]
-        public async Task<BaseResponse> Cancel(JosnRequest<string> homeWorkId)
+        public async Task<BaseResponse> Cancel(string homeWorkId)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Homework> homeWorks = await _cosmos.FindByDict<Homework>(new Dictionary<string, object> { { "id", homeWorkId.@params } });
+            List<Homework> homeWorks = await _cosmos.FindByDict<Homework>(new Dictionary<string, object> { { "id", homeWorkId } });
 
             foreach (Homework homeWork in homeWorks)
             {
@@ -58,7 +59,7 @@ namespace TEAMModelOS.Controllers.Learn
             List<Homework> homeWorks1 = await _cosmos.UpdateAll<Homework>(homeWorks);
 
             //查询之前是否有 关联关系表 HomeWorkStudent 有则删除
-            List<HomeworkRecord> homeWorkStudents = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "id", homeWorkId.@params } });
+            List<HomeworkRecord> homeWorkStudents = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "id", homeWorkId } });
             if (homeWorkStudents.IsNotEmpty())
             {
 
@@ -74,10 +75,10 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> Delete(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            IdPk idPk = await _cosmos.DeleteAsync<Homework>(request.@params);
+            IdPk idPk = await _cosmos.DeleteAsync<Homework>(request);
             //按作业id删除提交记录
             List<HomeworkRecord> homeWorkStudents =  await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "id", idPk.id } });
             //TODO 删除上传的文件
@@ -92,52 +93,52 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<HomeworkDto> request)
+        public async Task<BaseResponse> Upsert(HomeworkDto request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             //新增
-            if (string.IsNullOrEmpty(request.@params.homeWork.id))
+            if (string.IsNullOrEmpty(request.homeWork.id))
 
             {
-                request.@params.homeWork.id = SnowflakeId.NextId()+"";
-                request.@params.homeWork.status = 100;
-                request.@params.reset = true;
-                request.@params.homeWork.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
+                request.homeWork.id = SnowflakeId.NextId()+"";
+                request.homeWork.status = 100;
+                request.reset = true;
+                request.homeWork.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
             }
 
             
-            if (request.@params.homeWork.publishModel.Equals("0"))
+            if (request.homeWork.publishModel.Equals("0"))
             {
-                request.@params.homeWork.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
-                request.@params.homeWork.status = 200;
+                request.homeWork.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+                request.homeWork.status = 200;
             }
-            else if (request.@params.homeWork.publishModel.Equals("1"))
+            else if (request.homeWork.publishModel.Equals("1"))
             {
                 //TimerWork<HomeWork>(request.@params.homeWork.startTime,new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
                 //设定开始时间
                 string msgId = SnowflakeId.NextId() + "";
-                long SequenceNumber =  await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.code, request.@params.homeWork.startTime,200, msgId);
-                request.@params.homeWork.sequenceNumber = SequenceNumber;
+                long SequenceNumber =  await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.homeWork.id, request.homeWork.code, request.homeWork.startTime,200, msgId);
+                request.homeWork.sequenceNumber = SequenceNumber;
 
                 //serviceBusReviceService.ReciveMessageAsync();
                 //await _serviceBus.ReciveMessageAsync<Homework>(Constants.SubName);
                 //_timerWorkService.TimerWork<Homework>(request.@params.homeWork.startTime,200, new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
             }
 
-            if (request.@params.homeWork.status == 0) {
+            if (request.homeWork.status == 0) {
 
-                if (request.@params.homeWork.startTime < new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds()) request.@params.homeWork.status = 200;
-                else  request.@params.homeWork.status = 100;
+                if (request.homeWork.startTime < new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds()) request.homeWork.status = 200;
+                else  request.homeWork.status = 100;
             }
 
-            Homework homeWork = await _cosmos.SaveOrUpdate<Homework>(request.@params.homeWork);
+            Homework homeWork = await _cosmos.SaveOrUpdate<Homework>(request.homeWork);
 
             //设定结束时间
             string msgEndId = SnowflakeId.NextId() + "";
-            await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.code, request.@params.homeWork.endTime,300, msgEndId);
+            await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.homeWork.id, request.homeWork.code, request.homeWork.endTime,300, msgEndId);
             //_timerWorkService.TimerWork<Homework>(request.@params.homeWork.endTime, 300, new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
             //清除作业
-            if (request.@params.reset)
+            if (request.reset)
             {
                 //根据作业发布对象查找到每一个具体学生生成关联关系表 HomeWorkStudent
               //  List<Target> targets = request.@params.homeWork.target;
@@ -145,7 +146,7 @@ namespace TEAMModelOS.Controllers.Learn
                // foreach (Target target in targets)
                // {
                     //查询之前是否有 关联关系表 HomeWorkStudent 有则删除
-                    List<HomeworkRecord> homeWorks = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
+                    List<HomeworkRecord> homeWorks = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "id", request.homeWork.id } });
                     if (homeWorks.IsNotEmpty())
                     {
                         await _cosmos.DeleteAll(homeWorks);
@@ -190,11 +191,11 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertRecord")]
-        public async Task<BaseResponse> UpsertRecord(JosnRequest<List<HomeworkRecord>> request)
+        public async Task<BaseResponse> UpsertRecord(List<HomeworkRecord> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            await _cosmos.SaveOrUpdateAll<HomeworkRecord>(request.@params);
-            return builder.Data(request.@params).build();
+            await _cosmos.SaveOrUpdateAll<HomeworkRecord>(request);
+            return builder.Data(request).build();
         }
 
         /// <summary>
@@ -203,15 +204,21 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
 
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict_re = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict_re[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Homework> data = new List<Homework>();
             List<HomeworkFindDto> homeWorkFindDtos = new List<HomeworkFindDto>();
-            if (request.@params.Keys.Count>0)
+            if (dict_re.Keys.Count>0)
             {
-                data = await _cosmos.FindByDict<Homework>(request.@params);
+                data = await _cosmos.FindByDict<Homework>(dict_re);
                 //判断作业提交信息
                 if (data.IsNotEmpty())
                 {
@@ -244,13 +251,19 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findRecord")]
-        public async Task<BaseResponse> FindRecord(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindRecord(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             List<HomeworkRecord> data = new List<HomeworkRecord>();
-            if (request.@params.Keys.Count>0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count>0)
             {
-                data = await _cosmos.FindByDict<HomeworkRecord>(request.@params);
+                data = await _cosmos.FindByDict<HomeworkRecord>(dict);
             }
             else
             {
@@ -268,20 +281,20 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("tchScore")]
-        public async Task<BaseResponse> TchScore(JosnRequest<HomeworkScoringDto> request)
+        public async Task<BaseResponse> TchScore(HomeworkScoringDto request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<HomeworkRecord> homeWorkStudents = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", request.@params.studentId }, { "id", request.@params.homeWorkId } });
+            List<HomeworkRecord> homeWorkStudents = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", request.studentId }, { "id", request.homeWorkId } });
             HomeworkRecord data = new HomeworkRecord();
             if (homeWorkStudents.IsNotEmpty())
             {
 
-                homeWorkStudents[0].score = request.@params.score ?? homeWorkStudents[0].score;
+                homeWorkStudents[0].score = request.score ?? homeWorkStudents[0].score;
                 HomeWorkComment homeWorkComment = new HomeWorkComment
                 {
-                    comment = request.@params.comments,
+                    comment = request.comments,
                     createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
-                    TEAMModelId = request.@params.TEAMModelId
+                    TEAMModelId = request.TEAMModelId
                 };
 
                 homeWorkStudents[0].tchCmt = homeWorkComment;
@@ -298,26 +311,26 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("stuScore")]
-        public async Task<BaseResponse> StuScore(JosnRequest<HomeworkCommentDto> request)
+        public async Task<BaseResponse> StuScore(HomeworkCommentDto request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<HomeworkRecord> homeWorkStudents = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", request.@params.studentId }, { "id", request.@params.homeWorkId } });
-            List<Homework> homeWorks = await _cosmos.FindByDict<Homework>(new Dictionary<string, object> { { "id", request.@params.homeWorkId } });
+            List<HomeworkRecord> homeWorkStudents = await _cosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", request.studentId }, { "id", request.homeWorkId } });
+            List<Homework> homeWorks = await _cosmos.FindByDict<Homework>(new Dictionary<string, object> { { "id", request.homeWorkId } });
             HomeworkRecord data = new HomeworkRecord();
             if (homeWorks.IsNotEmpty() && homeWorks[0].other.Contains("comment"))
             {
                 if (homeWorkStudents.IsNotEmpty())
                 {
-                    if (string.IsNullOrEmpty(request.@params.commentid))
+                    if (string.IsNullOrEmpty(request.commentid))
                     {
                         //评论
                         StudentComment homeWorkComment = new StudentComment
                         {
                             commentid = SnowflakeId.NextId() + "",
-                            comment = request.@params.comment,
+                            comment = request.comment,
                             createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(),
-                            fromId = request.@params.fromId,
-                            score = request.@params.score
+                            fromId = request.fromId,
+                            score = request.score
                         };
 
 
@@ -328,13 +341,13 @@ namespace TEAMModelOS.Controllers.Learn
                         //回复评论
                         foreach (StudentComment comment in homeWorkStudents[0].stuCmt)
                         {
-                            if (comment.commentid == request.@params.commentid)
+                            if (comment.commentid == request.commentid)
                             {
                                 Reply reply = new Reply();
-                                reply.fromId = request.@params.fromId;
-                                reply.toId = request.@params.toId;
-                                reply.identity = request.@params.identity;
-                                reply.comment = request.@params.comment;
+                                reply.fromId = request.fromId;
+                                reply.toId = request.toId;
+                                reply.identity = request.identity;
+                                reply.comment = request.comment;
                                 reply.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
                                 comment.reply.Add(reply);
                             }

+ 72 - 47
TEAMModelOS/Controllers/Task/LearnController.cs

@@ -12,6 +12,7 @@ using TEAMModelOS.Service.Models;
 using TEAMModelOS.Models; 
 using TEAMModelOS.SDK.Context.Constant.Common; 
 using TEAMModelOS.Service.Services.Learn.Implements;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers.Learn
 {
@@ -38,20 +39,20 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertTask")]
-        public async Task<BaseResponse> UpsertTask(JosnRequest<LearnTask> request)
+        public async Task<BaseResponse> UpsertTask(LearnTask request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.createTime <= 0) {
-                request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+            if (request.createTime <= 0) {
+                request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
             }
 
-            if (request.@params.endTime > 0) {
+            if (request.endTime > 0) {
                 //设定结束时间
                 string msgEndId = SnowflakeId.NextId()+"";
-                await _serviceBus.SendMessage<LearnTask>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.endTime, 300, msgEndId);
+                await _serviceBus.SendMessage<LearnTask>(Constants.TopicName, request.id, request.code, request.endTime, 300, msgEndId);
             }
-            await cosmosDBV3Repository.Save(request.@params);
-            return builder.Data(request.@params).build();
+            await cosmosDBV3Repository.Save(request);
+            return builder.Data(request).build();
         }
 
         /// <summary>
@@ -60,12 +61,18 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findTask")]
-        public async Task<BaseResponse> FindTask(JosnRequest<Dictionary<string,object>> request)
+        public async Task<BaseResponse> FindTask(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.ContainsKey("id") || request.@params.ContainsKey("code"))
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
             {
-                List<LearnTask> tasks = await cosmosDBV3Repository.FindByDict<LearnTask>(request.@params);
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.ContainsKey("id") || dict.ContainsKey("code"))
+            {
+                List<LearnTask> tasks = await cosmosDBV3Repository.FindByDict<LearnTask>(dict);
                 return builder.Data(tasks).build();
             }
             else {
@@ -79,10 +86,10 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("deleteTask")]
-        public async Task<BaseResponse> DeleteTask(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> DeleteTask(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            return builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnTask>(request.@params)).build();
+            return builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnTask>(request)).build();
         }
 
         /// <summary>
@@ -91,20 +98,20 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertUnit")]
-        public async Task<BaseResponse> UpsertUnit(JosnRequest<LearnUnit> request)
+        public async Task<BaseResponse> UpsertUnit(LearnUnit request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (string.IsNullOrEmpty(request.@params.id))
+            if (string.IsNullOrEmpty(request.id))
             {
-                request.@params.id = SnowflakeId.NextId() + "";
-                request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
-                await cosmosDBV3Repository.Save(request.@params);
+                request.id = SnowflakeId.NextId() + "";
+                request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+                await cosmosDBV3Repository.Save(request);
             }
             else
             {
-                await cosmosDBV3Repository.Update(request.@params);
+                await cosmosDBV3Repository.Update(request);
             }
-            return builder.Data(request.@params).build();
+            return builder.Data(request).build();
         }
 
    
@@ -115,12 +122,18 @@ namespace TEAMModelOS.Controllers.Learn
     /// <param name="request"></param>
     /// <returns></returns>
     [HttpPost("findUnit")]
-        public async Task<BaseResponse> FindUnit(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindUnit(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0)
             {
-                return builder.Data(await cosmosDBV3Repository.FindByDict<LearnUnit>(request.@params)).build();
+                return builder.Data(await cosmosDBV3Repository.FindByDict<LearnUnit>(dict)).build();
             }
             else {
                 return builder.build();
@@ -133,10 +146,10 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("deleteUnit")]
-        public async Task<BaseResponse> DeleteUnit(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> DeleteUnit(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            return builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnUnit>(request.@params)).build();
+            return builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnUnit>(request)).build();
         }
 
         /// <summary>
@@ -145,20 +158,20 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertProcess")]
-        public async Task<BaseResponse> UpsertProcess(JosnRequest<LearnProcess> request) {
+        public async Task<BaseResponse> UpsertProcess(LearnProcess request) {
             ResponseBuilder builder = ResponseBuilder.custom();
 
-            if (string.IsNullOrEmpty(request.@params.id))
+            if (string.IsNullOrEmpty(request.id))
             {
-                request.@params.id = SnowflakeId.NextId() + "";
-                request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
-                await cosmosDBV3Repository.Save<LearnProcess>(request.@params);
+                request.id = SnowflakeId.NextId() + "";
+                request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+                await cosmosDBV3Repository.Save<LearnProcess>(request);
             }
             else {
-                await cosmosDBV3Repository.Update<LearnProcess>(request.@params);
+                await cosmosDBV3Repository.Update<LearnProcess>(request);
             }
            
-            return builder.Data(request.@params).build();
+            return builder.Data(request).build();
         }
 
         /// <summary>
@@ -167,12 +180,18 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findProcess")]
-        public async Task<BaseResponse> FindProcess(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindProcess(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count>0) {
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count>0) {
 
-                builder.Data(await cosmosDBV3Repository.FindByDict<LearnProcess>(request.@params));
+                builder.Data(await cosmosDBV3Repository.FindByDict<LearnProcess>(dict));
             }
 
             return builder.build();
@@ -184,12 +203,12 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("deleteProcess")]
-        public async Task<BaseResponse> DeleteProcess(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> DeleteProcess(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params != null)
+            if (request != null)
             {
-                builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnProcess>(request.@params));
+                builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnProcess>(request));
             }
             return builder.build();
         }
@@ -200,19 +219,19 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertRecord")]
-        public async Task<BaseResponse> UpsertRecord(JosnRequest<List<LearnRecord>> request)
+        public async Task<BaseResponse> UpsertRecord(List<LearnRecord> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (ValidateHelper.IsValid(request.@params))
+            if (ValidateHelper.IsValid(request))
             {
-                request.@params.ForEach(x =>
+                request.ForEach(x =>
                 {
                     if (string.IsNullOrEmpty(x.id))
                     {
                      
                     }
                 });
-                List<LearnRecord> leanProcesses = await cosmosDBV3Repository.SaveOrUpdateAll<LearnRecord>(request.@params);
+                List<LearnRecord> leanProcesses = await cosmosDBV3Repository.SaveOrUpdateAll<LearnRecord>(request);
                 builder.Data(leanProcesses);
             }
             return builder.build();
@@ -224,12 +243,18 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findRecord")]
-        public async Task<BaseResponse> FindRecord(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindRecord(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params.Keys.Count > 0)
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            if (dict.Keys.Count > 0)
             {
-                builder.Data(await cosmosDBV3Repository.FindByDict<LearnRecord>(request.@params));
+                builder.Data(await cosmosDBV3Repository.FindByDict<LearnRecord>(dict));
             }
             return builder.build();
         }
@@ -241,12 +266,12 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("deleteRecord")]
-        public async Task<BaseResponse> DeleteRecord(JosnRequest<IdPk> request)
+        public async Task<BaseResponse> DeleteRecord(IdPk request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            if (request.@params != null)
+            if (request != null)
             {
-                builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnRecord>(request.@params));
+                builder.Data(await cosmosDBV3Repository.DeleteAsync<LearnRecord>(request));
             }
             return builder.build();
         }

+ 50 - 31
TEAMModelOS/Controllers/Task/SurveyController.cs

@@ -11,6 +11,7 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models; 
 using TEAMModelOS.SDK.Context.Constant.Common;
 using TEAMModelOS.Service.Services.Learn.Implements;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -38,42 +39,42 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<SurveyDto> request)
+        public async Task<BaseResponse> Upsert(SurveyDto request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             //新增
-            if (string.IsNullOrEmpty(request.@params.survey.id))
+            if (string.IsNullOrEmpty(request.survey.id))
             {
-                request.@params.survey.id = SnowflakeId.NextId()+"";
-                request.@params.survey.status = 100;
+                request.survey.id = SnowflakeId.NextId()+"";
+                request.survey.status = 100;
             }
-            if (request.@params.survey.publishModel.Equals("0"))
+            if (request.survey.publishModel.Equals("0"))
             {
-                request.@params.survey.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
-                request.@params.survey.status = 200;
+                request.survey.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+                request.survey.status = 200;
             }
-            else if (request.@params.survey.publishModel.Equals("1"))
+            else if (request.survey.publishModel.Equals("1"))
             {
 
                 string msgId = SnowflakeId.NextId() + "";
-                long SequenceNumber = await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.startTime, 200, msgId);
-                request.@params.survey.sequenceNumber = SequenceNumber;
+                long SequenceNumber = await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.survey.id, request.survey.code, request.survey.startTime, 200, msgId);
+                request.survey.sequenceNumber = SequenceNumber;
 
             }
 
 
 
-            Survey homeWork = await azureCosmosDBV3Repository.SaveOrUpdate<Survey>(request.@params.survey);
+            Survey homeWork = await azureCosmosDBV3Repository.SaveOrUpdate<Survey>(request.survey);
 
             //设定结束时间
             string msgEndId = SnowflakeId.NextId() + "";
-            await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.endTime, 300, msgEndId);
+            await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.survey.id, request.survey.code, request.survey.endTime, 300, msgEndId);
 
             //清除作业
-            if (!request.@params.reset)
+            if (!request.reset)
             {
                 //查询之前是否有 关联关系表 HomeWorkStudent 有则删除
-                List<SurveyRecord> surveyRecords = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", request.@params.survey.id } });
+                List<SurveyRecord> surveyRecords = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", request.survey.id } });
                 if (surveyRecords.IsNotEmpty())
                 {
                     await azureCosmosDBV3Repository.DeleteAll(surveyRecords);
@@ -121,16 +122,22 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findSummary")]
-        public async Task<BaseResponse> FindSummary(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindSummary(JsonElement request)
         {
 
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Survey> data = new List<Survey>();
             List<string> props = new List<string> { "id", "code", "name", "type", "status", "startTime" };
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             { 
                 
-                data = await azureCosmosDBV3Repository.FindByDict<Survey>(request.@params, props);
+                data = await azureCosmosDBV3Repository.FindByDict<Survey>(dict, props);
             }
             else
             {
@@ -145,14 +152,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
 
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Survey> data = new List<Survey>();
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             {
-                data = await azureCosmosDBV3Repository.FindByDict<Survey>(request.@params);
+                data = await azureCosmosDBV3Repository.FindByDict<Survey>(dict);
             }
             else
             {
@@ -168,10 +181,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<List<IdPk>> request)
+        public async Task<BaseResponse> Delete(List<IdPk> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<IdPk> idPks = await azureCosmosDBV3Repository.DeleteAll<Survey>(request.@params);
+            List<IdPk> idPks = await azureCosmosDBV3Repository.DeleteAll<Survey>(request);
             if (idPks.IsNotEmpty())
             {
                 foreach (IdPk idPk in idPks)
@@ -194,10 +207,10 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("cancel")]
-        public async Task<BaseResponse> Cancel(JosnRequest<string> surveyId)
+        public async Task<BaseResponse> Cancel(string surveyId)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Survey> surveys = await azureCosmosDBV3Repository.FindByDict<Survey>(new Dictionary<string, object> { { "id", surveyId.@params } });
+            List<Survey> surveys = await azureCosmosDBV3Repository.FindByDict<Survey>(new Dictionary<string, object> { { "id", surveyId } });
 
             foreach (Survey survey in surveys)
             {
@@ -206,7 +219,7 @@ namespace TEAMModelOS.Controllers
             List<Survey> survey1 = await azureCosmosDBV3Repository.UpdateAll<Survey>(surveys);
 
             //查询之前是否有 关联关系表  有则删除
-            List<SurveyRecord> surveyStudents = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", surveyId.@params } });
+            List<SurveyRecord> surveyStudents = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", surveyId } });
             if (surveyStudents.IsNotEmpty())
             {
                 await azureCosmosDBV3Repository.DeleteAll(surveyStudents);
@@ -220,14 +233,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findRecord")]
-        public async Task<BaseResponse> FindRecord(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindRecord(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<SurveyRecord> data = new List<SurveyRecord>();
 
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             {
-                data = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(request.@params);
+                data = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(dict);
             }
             else
             {
@@ -241,11 +260,11 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertRecord")]
-        public async Task<BaseResponse> UpsertRecord(JosnRequest<List<SurveyRecord>> request)
+        public async Task<BaseResponse> UpsertRecord(List<SurveyRecord> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            await azureCosmosDBV3Repository.SaveOrUpdateAll<SurveyRecord>(request.@params);
-            return builder.Data(request.@params).build();
+            await azureCosmosDBV3Repository.SaveOrUpdateAll<SurveyRecord>(request);
+            return builder.Data(request).build();
         }
          
     }

+ 42 - 29
TEAMModelOS/Controllers/Task/VoteController.cs

@@ -15,6 +15,7 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models; 
 using TEAMModelOS.SDK.Context.Constant.Common;
 using TEAMModelOS.Service.Services.Learn.Implements;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers.Learn
 {
@@ -43,42 +44,42 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsert")]
-        public async Task<BaseResponse> Upsert(JosnRequest<VoteDto> request)
+        public async Task<BaseResponse> Upsert(VoteDto request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             //新增
-            if (string.IsNullOrEmpty(request.@params.vote.id))
+            if (string.IsNullOrEmpty(request.vote.id))
             {
-                request.@params.vote.id = SnowflakeId.NextId()+"";
-                request.@params.vote.status = 100;
+                request.vote.id = SnowflakeId.NextId()+"";
+                request.vote.status = 100;
             }
-            if (request.@params.vote.publishModel.Equals("0"))
+            if (request.vote.publishModel.Equals("0"))
             {
-                request.@params.vote.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
-                request.@params.vote.status = 200;
+                request.vote.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
+                request.vote.status = 200;
                 
-            } else if (request.@params.vote.publishModel.Equals("1")) {
+            } else if (request.vote.publishModel.Equals("1")) {
 
                 string msgId = SnowflakeId.NextId() + "";
-                long SequenceNumber = await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.@params.vote.id, request.@params.vote.code, request.@params.vote.startTime, 200, msgId);
-                request.@params.vote.sequenceNumber = SequenceNumber;
+                long SequenceNumber = await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.vote.id, request.vote.code, request.vote.startTime, 200, msgId);
+                request.vote.sequenceNumber = SequenceNumber;
             }
 
 
 
-            Vote homeWork = await _cosmos.SaveOrUpdate<Vote>(request.@params.vote);
+            Vote homeWork = await _cosmos.SaveOrUpdate<Vote>(request.vote);
 
             //设定结束时间
-            //_timerWorkService.TimerWork<Vote>(request.@params.vote.endTime, 300, new Dictionary<string, object> { { "id", request.@params.vote.id } });
+            //_timerWorkService.TimerWork<Vote>(request.vote.endTime, 300, new Dictionary<string, object> { { "id", request.vote.id } });
             //设定结束时间
             string msgEndId = SnowflakeId.NextId() + "";
-            await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.@params.vote.id, request.@params.vote.code, request.@params.vote.endTime, 300, msgEndId);
+            await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.vote.id, request.vote.code, request.vote.endTime, 300, msgEndId);
             //清除作业
-            if (!request.@params.reset)
+            if (!request.reset)
             {
                 //根据作业发布对象查找到每一个具体学生生成关联关系表 HomeWorkStudent
 
-                List<VoteRecord> voteRecords = await _cosmos.FindByDict<VoteRecord>(new Dictionary<string, object> { { "id", request.@params.vote.id } });
+                List<VoteRecord> voteRecords = await _cosmos.FindByDict<VoteRecord>(new Dictionary<string, object> { { "id", request.vote.id } });
 
                 if (voteRecords.IsNotEmpty())
                 {
@@ -127,14 +128,20 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("find")]
-        public async Task<BaseResponse> Find(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> Find(JsonElement request)
         {
 
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Vote> data = new List<Vote>();
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             {
-                data = await _cosmos.FindByDict<Vote>(request.@params);
+                data = await _cosmos.FindByDict<Vote>(dict);
             }
             else
             {
@@ -150,10 +157,10 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("delete")]
-        public async Task<BaseResponse> Delete(JosnRequest<List<IdPk>> request)
+        public async Task<BaseResponse> Delete(List<IdPk> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<IdPk> idPks = await _cosmos.DeleteAll<Vote>(request.@params);
+            List<IdPk> idPks = await _cosmos.DeleteAll<Vote>(request);
             if (idPks.IsNotEmpty())
             {
                 foreach (IdPk idPk in idPks) 
@@ -176,10 +183,10 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("cancel")]
-        public async Task<BaseResponse> Cancel(JosnRequest<string> voteId)
+        public async Task<BaseResponse> Cancel(string voteId)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Vote> votes = await _cosmos.FindByDict<Vote>(new Dictionary<string, object> { { "id", voteId.@params } });
+            List<Vote> votes = await _cosmos.FindByDict<Vote>(new Dictionary<string, object> { { "id", voteId } });
 
             foreach (Vote vote in votes)
             {
@@ -188,7 +195,7 @@ namespace TEAMModelOS.Controllers.Learn
             List<Vote> vote1 = await _cosmos.UpdateAll<Vote>(votes);
 
             //查询之前是否有 关联关系表 HomeWorkStudent 有则删除
-            List<VoteRecord> voteStudents = await _cosmos.FindByDict<VoteRecord>(new Dictionary<string, object> { { "id", voteId.@params } });
+            List<VoteRecord> voteStudents = await _cosmos.FindByDict<VoteRecord>(new Dictionary<string, object> { { "id", voteId } });
             if (voteStudents.IsNotEmpty())
             {
                 await _cosmos.DeleteAll(voteStudents);
@@ -202,15 +209,21 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findRecord")]
-        public async Task<BaseResponse> FindRecord(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> FindRecord(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<VoteRecord> data = new List<VoteRecord>();
             List<Options> options = new List<Options>();
 
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             {
-                data = await _cosmos.FindByDict<VoteRecord>(request.@params);
+                data = await _cosmos.FindByDict<VoteRecord>(dict);
                 if (data.IsNotEmpty()) {
                     List< Vote > votes = await _cosmos.FindByDict<Vote>(new Dictionary<string, object> { { "id", data[0].id } });
                     List<Vote.Option> options2 = votes[0].option;
@@ -241,11 +254,11 @@ namespace TEAMModelOS.Controllers.Learn
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertRecord")]
-        public async Task<BaseResponse> UpsertRecord(JosnRequest<List<VoteRecord>> request)
+        public async Task<BaseResponse> UpsertRecord(List<VoteRecord> request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            await _cosmos.SaveOrUpdateAll<VoteRecord>(request.@params);
-            return builder.Data(request.@params).build();
+            await _cosmos.SaveOrUpdateAll<VoteRecord>(request);
+            return builder.Data(request).build();
         }
 
 

+ 25 - 18
TEAMModelOS/Controllers/Teacher/CommentController.cs

@@ -9,6 +9,7 @@ using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.DI;
 using TEAMModelOS.Service.Models;
+using System.Text.Json;
 
 namespace TEAMModelOS.Controllers
 {
@@ -28,22 +29,22 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("addComment")]
-        public async Task<BaseResponse> AddComment(JosnRequest<CommentsDto> request)
+        public async Task<BaseResponse> AddComment(CommentsDto request)
         {
-            var id = "Comment-" + request.@params.TEAMModelId.Replace("#", "");
+            var id = "Comment-" + request.TEAMModelId.Replace("#", "");
             ResponseBuilder builder = ResponseBuilder.custom();
-            List<Comment> Comment = await _cosmos.FindByDict<Comment>(new Dictionary<string, object> { { "code", request.@params.TEAMModelId }, { "id", id } });
+            List<Comment> Comment = await _cosmos.FindByDict<Comment>(new Dictionary<string, object> { { "code", request.TEAMModelId }, { "id", id } });
             Comment comment = new Comment();
             if (Comment.IsEmpty())
             {
                 comment.id = id;
-                comment.code = request.@params.TEAMModelId;
-                comment.comment.Add(request.@params.comment);
+                comment.code = request.TEAMModelId;
+                comment.comment.Add(request.comment);
                 Comment.Add(comment);
             }
             else {
                 comment = Comment[0];
-                comment.comment.Add(request.@params.comment);
+                comment.comment.Add(request.comment);
             }
             builder.Data(await _cosmos.SaveOrUpdate(comment));
             return builder.build();
@@ -55,14 +56,20 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("findComment")]
-        public async Task<BaseResponse> findComment(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> findComment(JsonElement request)
         {
-            // request.@params.TryAdd("PartitionKey", request.lang);
+            // request.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             List<Comment> data = new List<Comment>();
-            if (request.@params.Keys.Count > 0)
+            if (dict.Keys.Count > 0)
             {
-                data = await _cosmos.FindByDict<Comment>(request.@params);
+                data = await _cosmos.FindByDict<Comment>(dict);
             }
             else
             {
@@ -76,22 +83,22 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("upsertComment")]
-        public async Task<BaseResponse> UpsertComment(JosnRequest<Comment> request)
+        public async Task<BaseResponse> UpsertComment(Comment request)
         {
-            // request.@params.TryAdd("PartitionKey", request.lang);
+            // request.TryAdd("PartitionKey", request.lang);
             ResponseBuilder builder = ResponseBuilder.custom();
             Comment comment = null;
-            if (request.@params.comment.Count > 0)
+            if (request.comment.Count > 0)
             {
-                if (string.IsNullOrEmpty(request.@params.id)) {
-                    request.@params.id  = "Comment-" + request.@params.code.Replace("#", "");
+                if (string.IsNullOrEmpty(request.id)) {
+                    request.id  = "Comment-" + request.code.Replace("#", "");
                 }
-                comment = await _cosmos.SaveOrUpdate<Comment>(request.@params);
+                comment = await _cosmos.SaveOrUpdate<Comment>(request);
             }
             else {
-                if (!string.IsNullOrEmpty(request.@params.id))
+                if (!string.IsNullOrEmpty(request.id))
                 {
-                    IdPk idPk = await _cosmos.DeleteAsync<Comment>(request.@params.id, request.@params.code);
+                    IdPk idPk = await _cosmos.DeleteAsync<Comment>(request.id, request.code);
                 }
                    
             }

+ 60 - 24
TEAMModelOS/Controllers/Teacher/SchoolUserController.cs

@@ -36,11 +36,11 @@ namespace TEAMModelOS.Controllers
         /// 取得學校使用者(複數)
         /// </summary>
         [HttpPost("GetSchoolUser")]
-        public async Task<BaseResponse> GetSchoolUser(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> GetSchoolUser(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            request.@params.TryGetValue("code", out object partitionKey);
-            List<SchoolUser> su = await _cosmosrepository.FindByDict<SchoolUser>(request.@params);
+            //request.@params.TryGetValue("code", out object partitionKey);
+            List<SchoolUser> su = await _cosmosrepository.FindByDict<SchoolUser>(request);
             return builder.Data(su).build();
         }
 
@@ -48,12 +48,18 @@ namespace TEAMModelOS.Controllers
         /// 以使用者ID取得學校使用者資料
         /// </summary>
         [HttpPost("GetSingleSchoolUser")]
-        public async Task<BaseResponse> GetSingleSchoolUser(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> GetSingleSchoolUser(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            request.@params.TryGetValue("schoolCode", out object schoolCodeObj);
-            request.@params.TryGetValue("id", out object idObj);
-            request.@params.TryGetValue("joinStatus", out object joinStatusObj);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            dict.TryGetValue("schoolCode", out object schoolCodeObj);
+            dict.TryGetValue("id", out object idObj);
+            dict.TryGetValue("joinStatus", out object joinStatusObj);
             string schoolCode = (schoolCodeObj != null) ? schoolCodeObj.ToString() : null;
             string id = (idObj != null) ? idObj.ToString() : null;
             string joinStatusStr = (joinStatusObj != null) ? joinStatusObj.ToString() : null;
@@ -82,18 +88,24 @@ namespace TEAMModelOS.Controllers
         /// </summary>
         /// <returns>使用者資訊(更新後)</returns>
         [HttpPost("SetAuthToSchoolUser")]
-        public async Task<BaseResponse> SetAuthToSchoolUser(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> SetAuthToSchoolUser(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            request.@params.TryGetValue("schoolCode", out object schoolCode);
-            request.@params.TryGetValue("ids", out object idsJson);
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            dict.TryGetValue("schoolCode", out object schoolCode);
+            dict.TryGetValue("ids", out object idsJson);
             List<string> ids = new List<string>();
             var idsArr = JArray.Parse(idsJson.ToString());
             foreach (var idInfo in idsArr)
             {
                 ids.Add(idInfo["id"].ToString());
             }
-            request.@params.TryGetValue("authList", out object authListObj);
+            dict.TryGetValue("authList", out object authListObj);
             List<string> authList = JsonConvert.DeserializeObject<List<string>>(authListObj.ToString());
 
             //取得已加入該校的使用者 (joinStatus=1: [加入狀態]  1:已加入)
@@ -123,12 +135,18 @@ namespace TEAMModelOS.Controllers
         /// </summary>
         /// <returns>使用者資訊(更新後)</returns>
         [HttpPost("updParamToSchoolUser")]
-        public async Task<BaseResponse> updParamToSchoolUser(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> updParamToSchoolUser(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
-            request.@params.TryGetValue("schoolCode", out object schoolCode);
-            request.@params.TryGetValue("id", out object id);
-            request.@params.TryGetValue("param", out object paramJson);
+            Dictionary<string, object> dictRequest = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dictRequest[emobj.Current.Name] = emobj.Current.Value;
+            }
+            dictRequest.TryGetValue("schoolCode", out object schoolCode);
+            dictRequest.TryGetValue("id", out object id);
+            dictRequest.TryGetValue("param", out object paramJson);
             //dynamic param = JsonConvert.DeserializeObject<dynamic>(paramJson.ToString());
             dynamic param = JObject.Parse(paramJson.ToString()) as dynamic;
 
@@ -174,11 +192,17 @@ namespace TEAMModelOS.Controllers
         /// 移除學校使用者
         /// </summary>
         [HttpPost("rmvSchoolUser")]
-        public async Task<BaseResponse> RmvSchoolUser(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> RmvSchoolUser(JsonElement request)
         {
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             ResponseBuilder builder = ResponseBuilder.custom();
-            request.@params.TryGetValue("schoolCode", out object schoolCode);
-            request.@params.TryGetValue("Ids", out object Ids);
+            dict.TryGetValue("schoolCode", out object schoolCode);
+            dict.TryGetValue("Ids", out object Ids);
             //以TEAMModelId(array)取得該校的使用者
             Dictionary<string, object> userDict = new Dictionary<string, object>
             {
@@ -216,14 +240,20 @@ namespace TEAMModelOS.Controllers
         /// 追加學校使用者(複數)、無返回值
         /// </summary>
         [HttpPost("AddSchoolUser")]
-        public async Task<BaseResponse> AddSchoolUser(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> AddSchoolUser(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             try
             {
                
-                request.@params.TryGetValue("schoolCode", out object schoolCode);
-                request.@params.TryGetValue("userlist", out object userList);
+                dict.TryGetValue("schoolCode", out object schoolCode);
+                dict.TryGetValue("userlist", out object userList);
                 List<SchoolUser> addUserlist = JsonConvert.DeserializeObject<List<SchoolUser>>(userList.ToString());
                 //整形
                 foreach (SchoolUser addUser in addUserlist)
@@ -251,14 +281,20 @@ namespace TEAMModelOS.Controllers
         /// 追加學校使用者(單數)、返回該使用者資料
         /// </summary>
         [HttpPost("AddSchoolUserSingle")]
-        public async Task<BaseResponse> AddSchoolUserSingle(JosnRequest<Dictionary<string, object>> request)
+        public async Task<BaseResponse> AddSchoolUserSingle(JsonElement request)
         {
             ResponseBuilder builder = ResponseBuilder.custom();
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = request.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
             try
             {
                 
-                request.@params.TryGetValue("schoolCode", out object schoolCode);
-                request.@params.TryGetValue("userinfo", out object userinfo);
+                dict.TryGetValue("schoolCode", out object schoolCode);
+                dict.TryGetValue("userinfo", out object userinfo);
                 SchoolUser addUserinfo = JsonConvert.DeserializeObject<SchoolUser>(userinfo.ToString());
                 //整形
                 addUserinfo.pk = "SchoolUser";