Browse Source

Merge branch 'develop' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop

psycho 6 years ago
parent
commit
c044729567

+ 1 - 1
TEAMModelOS.SDK/Extension/JwtAuth/JwtAuthExtension.cs

@@ -21,7 +21,7 @@ namespace TEAMModelOS.SDK.Extension.JwtAuth
             // var creds = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["SecurityKey"]), SecurityAlgorithms.RsaSha256Signature);
             //var creds = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["SecurityKey"]));
             string path = BaseConfigModel.ContentRootPath;
-            RsaSecurityKey creds = new RsaSecurityKey(RsaHelper.LoadCertificateFile(path + "/private.pem"));
+            RsaSecurityKey creds = new RsaSecurityKey(RsaHelper.LoadCertificateFile(path + "/JwtRsaFile/private.pem"));
             //RsaSecurityKey creds = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["SecurityKey"])), SecurityAlgorithms.RsaSha256Signature);
             // 令牌验证参数
             var tokenValidationParameters = new TokenValidationParameters

+ 1 - 1
TEAMModelOS.SDK/Extension/JwtAuth/JwtHelper/JwtHelper.cs

@@ -45,7 +45,7 @@ namespace TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper
             claims.Add(new Claim(JwtClaimTypes.JwtId, Guid.NewGuid().ToString()));
             claims.AddRange(claimModel.Roles.ToArray().Select(s=>new Claim(JwtClaimTypes.Role,s)));
             string path = BaseConfigModel.ContentRootPath;
-            RSACryptoServiceProvider provider = RsaHelper.LoadCertificateFile(path + "/private.pem");
+            RSACryptoServiceProvider provider = RsaHelper.LoadCertificateFile(path + "/JwtRsaFile/private.pem");
             RsaSecurityKey rsaSecurity = new RsaSecurityKey(provider);
             var creds =new SigningCredentials(rsaSecurity, SecurityAlgorithms.RsaSha256);
 

+ 24 - 9
TEAMModelOS.SDK/Module/AzureTable/Implements/AzureTableDBRepository.cs

@@ -383,15 +383,30 @@ namespace TEAMModelOS.SDK.Module.AzureTable.Implements
         public async Task<List<T>> SaveOrUpdateAll<T>(List<T> entitys) where T : TableEntity, new()
         {
             string TableName = await InitializeTable<T>();
-            IList<TableResult> result = null;
-            Parallel.ForEach(Partitioner.Create(0, entitys.Count, 100),
-                  async range =>
-                  {
-                      TableBatchOperation batchOperation = new TableBatchOperation();
-                      for (Int32 i = range.Item1; i < range.Item2; i++)
-                          batchOperation.InsertOrReplace(entitys[i]);
-                      result = await tableClient.GetTableReference(TableName).ExecuteBatchAsync(batchOperation);
-                  });
+            IList<Dictionary<string, List<T>>> listInfo = new List<Dictionary<string, List<T>>>();
+            foreach (IGrouping<string, T> group in entitys.GroupBy(c =>c.PartitionKey))
+            {
+                Dictionary<string, List<T>> dictInfo = new Dictionary<string, List<T>>();
+
+                dictInfo.Add(group.Key, group.ToList());
+                listInfo.Add(dictInfo);
+            }
+
+            foreach (Dictionary<string ,List<T>> dict in listInfo) {
+                IList<TableResult> result = null;
+                foreach (string key in dict.Keys) {
+                    List<T> values = dict[key];
+                    Parallel.ForEach(Partitioner.Create(0, values.Count, 100),
+                      async range =>
+                      {
+                          TableBatchOperation batchOperation = new TableBatchOperation();
+                          for (Int32 i = range.Item1; i < range.Item2; i++)
+                              batchOperation.InsertOrReplace(values[i]);
+                          result = await tableClient.GetTableReference(TableName).ExecuteBatchAsync(batchOperation);
+                      });
+                }
+                
+            }
             return entitys;
         }
         public async Task<List<T>> DeleteAll<T>(List<T> entitys) where T : TableEntity, new()

File diff suppressed because it is too large
+ 1 - 1
TEAMModelOS/JsonFile/area.json


TEAMModelOS/private.pem → TEAMModelOS/JwtRsaFile/private.pem


TEAMModelOS/public.pem → TEAMModelOS/JwtRsaFile/public.pem


+ 3 - 1
TEAMModelOS/SeedData/SeedDataService.cs

@@ -28,7 +28,9 @@ namespace TEAMModelOS.SeedData
             List<Region> regions = MessagePackHelper.JsonToObject<List<Region>>(areaString);
             regions.ForEach(m=> {
                 m.RowKey = m.SysAddID + "";
+                m.PartitionKey = m.CountryId + "";
             });
+            _azureTableDBRepository.SaveOrUpdateAll<Region>(regions);
         }
 
         public void SeedRootAdmin() {
@@ -37,7 +39,7 @@ namespace TEAMModelOS.SeedData
 
         public  void SeedData()
         {
-            SeedArea();
+           // SeedArea();
             string Lang = "zh-cn";
             List<Period> periods = new List<Period> {
                 new Period { PartitionKey= Lang , Name="小学",RowKey="Period_21",Type="Period",Lang=Lang },

+ 1 - 0
TEAMModelOS/TEAMModelOS.csproj

@@ -21,6 +21,7 @@
   <ItemGroup>
     <Folder Include="Models\" />
     <Folder Include="wwwroot\" />
+    <Folder Include="JwtRsaFile\" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\TEAMModelOS.Model\TEAMModelOS.Model.csproj" />

+ 180 - 3
TEAMModelOS/appsettings.json

@@ -1,8 +1,185 @@
-{
+{
   "Logging": {
     "LogLevel": {
-      "Default": "Warning"
+      "Default": "Debug",
+      "System": "Information",
+      "Microsoft": "Information"
     }
   },
-  "AllowedHosts": "*"
+  "AllowedHosts": "*",
+  "Azure": {
+    "Table": {
+      "ConnectionString": "",
+      "AzureTableDialect": "AzureChina"
+    },
+    "Blob": {
+      "ConnectionString": "https://teammodelstorage.blob.core.chinacloudapi.cn/teammodelcontest?st=2019-03-11T08%3A20%3A19Z&se=2040-03-12T08%3A20%3A00Z&sp=rwdl&sv=2018-03-28&sr=c&sig=mZ%2BnzDWpcw0Vn2AQRCzo8I9%2Bh%2FnbujjWo8ObOwHwZjg%3D",
+      "Container": "teammodelos",
+      "AzureTableDialect": ""
+    },
+    "CosmosDB": {
+      "ConnectionString": "",
+      "ConnectionKey": "",
+      "Database": "TEAMModelOS",
+      "AzureTableDialect": "AzureChina"
+    }
+  },
+  "HaBookAuth": {
+    "TeamModelRegistUrl": "https://account.habookaclass.biz/regist?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
+    "TeamModelLoginUrl": "https://account.habookaclass.biz/?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
+    "AccountUrl": "https://api.habookaclass.biz/account",
+    "ServiceUrl": "https://api.habookaclass.biz/service",
+    "UserInfoKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJpZCIsImF1ZCI6ImNoZW5nZHVJZCIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYwNTIzNjcsIm5iZiI6MTUzNjA1MjM2NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.RGKDVtwFEp4OBctlHOuF6yqyI21fTz4cinCxjFCxkSQ",
+    "SubmissionKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJTdWJtaXNzaW9uIiwiYXVkIjoiY2hlbmdkdVN1Ym1pc3Npb24iLCJpc3MiOiJodHRwczovL2FwaS5oYWJvb2thY2xhc3MuYml6IiwiaWF0IjoxNTQwODgxMDUwLCJuYmYiOjE1NDA4ODEwNTAsImV4cCI6MTU2NzU1NTIwMCwiaWRwIjoiSGFib29rIENvcmVTZXJ2aWNlIn0.4SpRSfKwkbLWvsi87L5AjIVC5MZGMfon6SbjwNC0AfA",
+    "SchoolCodeKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzY2hvb2xDb2RlIiwiYXVkIjoiY2hlbmdkdVNjaG9vbENvZGUiLCJpc3MiOiJodHRwczovL2FwaS5oYWJvb2thY2xhc3MuYml6IiwiaWF0IjoxNTM2MDUyNDI3LCJuYmYiOjE1MzYwNTI0MjcsImV4cCI6MTU2NzU1NTIwMCwiaWRwIjoiSGFib29rIENvcmVTZXJ2aWNlIn0.8m5VH3Nz4N9EdMz8AexTOEuDVitcJZFKy9DfW_UQkSY",
+    "BindingIESKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJpZCIsImF1ZCI6ImNoZW5nZHVJZCIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYwNTIzNjcsIm5iZiI6MTUzNjA1MjM2NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.RGKDVtwFEp4OBctlHOuF6yqyI21fTz4cinCxjFCxkSQ",
+    "CreateTestSerialNumKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJDcmVhdGVUZXN0U2VyaWFsIiwiYXVkIjoiY2hlbmdkdUNyZWF0ZVRlc3RTZXJpYWwiLCJpc3MiOiJodHRwczovL2FwaS5oYWJvb2thY2xhc3MuYml6IiwiaWF0IjoxNTM5NjgwMjUxLCJuYmYiOjE1Mzk2ODAyNTEsImV4cCI6MTU2NzU1NTIwMCwiaWRwIjoiSGFib29rIENvcmVTZXJ2aWNlIn0.K-4rqcJ8O2mFxIdSiSJTuvo_Nwb_NfZ1yjpXJFQjKM0",
+    "SmsKey": "Basic ZmYwMWM0YTJjODdmZmNkYTUyNjhmMDEwOmE0YTE5YTVjNTU2ZWVhZTNjZmZhNTI0Mg=="
+  },
+  "SmsSendCloud": {
+    "SmsUrl": "http://www.sendcloud.net/smsapi/send",
+    "SmsUser": "Chengdu",
+    "SmsKey": "XaHPbnPLd0NPTfnUCUD5cRlhY2nEEUCj"
+  },
+  "Language": [
+    {
+      "Name": "臺灣",
+      "CountryCode": "886",
+      "SmsLang": "CHT",
+      "Language": "zh-tw"
+    },
+    {
+      "Name": "香港",
+      "CountryCode": "852",
+      "SmsLang": "CHT",
+      "Language": "zh-hk"
+    },
+    {
+      "Name": "澳門",
+      "CountryCode": "853",
+      "SmsLang": "CHT",
+      "Language": "zh-mo"
+    },
+    {
+      "Name": "大陆",
+      "CountryCode": "86",
+      "SmsLang": "CHS",
+      "Language": "zh-ch"
+    },
+    {
+      "Name": "Other",
+      "CountryCode": "000",
+      "SmsLang": "EN",
+      "Language": "en"
+    }
+  ],
+  "JwtSetting": {
+    "SecurityKey": "JwtBearerSample_11231~#$%#%^2235",
+    "Issuer": "HaBook", //签发者
+    "Audience": "TEAMModelOS",
+    "JwtClient": [
+      {
+        "Name": "WebApp",
+        "Exp": 86400
+      },
+      {
+        "Name": "Android",
+        "Exp": 60
+      },
+      {
+        "Name": "IOS",
+        "Exp": 60
+      },
+      {
+        "Exp": 60,
+        "Name": "WapApp"
+      },
+      {
+        "Name": "WeChat",
+        "Exp": 60
+      },
+      {
+        "Name": "MiniApp",
+        "Exp": 60
+      },
+      {
+        "Name": "RestApi",
+        "Exp": 60
+      },
+      {
+        "Name": "Other",
+        "Exp": 60
+      }
+    ]
+  },
+  "RoleUser": {
+    "Root": [
+      {
+        "name": "Power",
+        "phone": "886935180824"
+      },
+      {
+        "name": "黄贺彬",
+        "phone": "8615283771540"
+      },
+      {
+        "name": "李棋坤",
+        "phone": "8613096300695"
+      },
+      {
+        "name": "梁仁楷",
+        "phone": "8613263110175"
+      },
+      {
+        "name": "Jaelys",
+        "phone": "886988896630"
+      },
+      {
+        "name": "周胜",
+        "phone": "8617781294959"
+      },
+      {
+        "name": "李思淳",
+        "phone": "8615287300526"
+      },
+      {
+        "name": "田志杰",
+        "phone": "8618786723407"
+      }
+    ],
+    "Admin": [
+      {
+        "name": "陈权",
+        "phone": "8613880505117"
+      },
+      {
+        "name": "王彬琰",
+        "phone": "8613982151576"
+      },
+      {
+        "name": "刘彬",
+        "phone": "8618981903918"
+      },
+      {
+        "name": "黄贺彬",
+        "phone": "8615283771540"
+      },
+      {
+        "name": "李棋坤",
+        "phone": "8613096300695"
+      },
+      {
+        "name": "周胜",
+        "phone": "8617781294959"
+      },
+      {
+        "name": "李思淳",
+        "phone": "8615287300526"
+      },
+      {
+        "name": "田志杰",
+        "phone": "8618786723407"
+      }
+    ]
+  }
 }