소스 검색

1、修改cosmos查询分页,偏移多少页条件改为当前第几页

李思淳 5 년 전
부모
커밋
95c371d667

+ 5 - 0
TEAMModelOS.SDK/Module/AzureCosmosDBV3/AzureCosmosDBV3Repository.cs

@@ -416,6 +416,11 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                 //    QueryText = sql.ToString()
 
                 //};
+                dict.Remove("@CURRPAGE");
+                dict.Remove("@PAGESIZE");
+                dict.Remove("@ASC");
+                dict.Remove("@DESC");
+
                 StringBuilder sql = new StringBuilder("select  value count(c)  from c");
                 CosmosDbQuery cosmosDbQuery = SQLHelperParametric.GetSQL(dict, sql);
                 QueryRequestOptions queryRequestOptions = GetDefaultQueryRequestOptions(itemsPerPage: GetEffectivePageSize(itemsPerPage, maxItemCount));

+ 15 - 9
TEAMModelOS.SDK/Module/AzureCosmosDBV3/SQLHelperParametric.cs

@@ -114,7 +114,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                 DictIsNotNULL(dict);
                 Dictionary<string, object> parmeters = new Dictionary<string, object>();
 
-                int offsetNum = 0;
+                int offsetNum = -1;
                 int limitNum = 0;
                 bool pageBool = false;
                 GetPageNum(dict, ref offsetNum, ref limitNum, ref pageBool);
@@ -275,7 +275,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                    // sql.Append(" Order By c." + "@OrderByValue"+ " DESC " );
                 }
 
-                if (pageBool && offsetNum != 0 && limitNum != 0)
+                if (pageBool && offsetNum != -1 && limitNum != 0)
                 {
                     //sql.Append(" OFFSET " + offsetNum + " LIMIT " + limitNum);
                     sql.Append(" OFFSET " + " @offsetNum " + " LIMIT " + " @limitNum ");
@@ -300,15 +300,21 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
 
         private static void GetPageNum(Dictionary<string, object> dict, ref int offsetNum, ref int limitNum, ref bool pageBool)
         {
-            dict.TryGetValue("@OFFSET", out object offset);
-            dict.Remove("@OFFSET");
-            dict.TryGetValue("@LIMIT", out object limit);
-            dict.Remove("@LIMIT");
-            if (offset != null && limit != null)
+            dict.TryGetValue("@CURRPAGE", out object page);
+            dict.Remove("@CURRPAGE");
+            dict.TryGetValue("@PAGESIZE", out object limit);
+            dict.Remove("@PAGESIZE");
+            if (page != null && limit != null)
             {
                 pageBool = true;
-                offsetNum = int.Parse(offset.ToString());
                 limitNum = int.Parse(limit.ToString());
+                if (limitNum < 0) {
+                    throw new BizException("PAGESIZE can't be less than 0 !");
+                }
+                offsetNum = (int.Parse(page.ToString()) - 1) * limitNum;
+                if (offsetNum < 0) {
+                    throw new BizException("CURRPAGE can't be less than 1 !");
+                }
             }
         }
 
@@ -817,7 +823,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                     parmeters.Add("@" + key, keyValue.Value);
                 }
             }
-            if (offset != 0 && limit != 0)
+            if (offset != -1 && limit != 0)
             {
                 parmeters.Add("@offsetNum", offset);
                 parmeters.Add("@limitNum", limit);

+ 2 - 1
TEAMModelOS/Controllers/Test/TestController.cs

@@ -50,7 +50,8 @@ namespace TEAMModelOS.Controllers.Test
             Dictionary<string,object > keyValuePairs = new Dictionary<string, object>();
             List<Family> families1 = new List<Family>();
             keyValuePairs.Add("aaaa", families1);
-            List<Family> families = await azureCosmosDBRepository.FindByDict<Family>(dict: keyValuePairs, propertys: st);
+            //List<Family> families = await azureCosmosDBRepository.FindByDict<Family>(dict: keyValuePairs, propertys: st);
+            List<Family> families = await azureCosmosDBRepository.FindByDict<Family>(dict: request.@params);
 
           return builder.Data(families).Extend(new Dictionary<string, object> { {"Count", families.Count } }).build();
         }