CrazyIter_Bin 1 year ago
parent
commit
8277d81be0

+ 0 - 174
TEAMModelOS.FunctionV4/Properties/ServiceDependencies/teammodelosfunction-test - Zip Deploy/profile.arm.json

@@ -1,174 +0,0 @@
-{
-  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
-  "contentVersion": "1.0.0.0",
-  "metadata": {
-    "_dependencyType": "compute.function.windows.appService"
-  },
-  "parameters": {
-    "resourceGroupName": {
-      "type": "string",
-      "defaultValue": "TEAMModelChengdu",
-      "metadata": {
-        "description": "Name of the resource group for the resource. It is recommended to put resources under same resource group for better tracking."
-      }
-    },
-    "resourceGroupLocation": {
-      "type": "string",
-      "defaultValue": "",
-      "metadata": {
-        "description": "Location of the resource group. Resource groups could have different location than resources, however by default we use API versions from latest hybrid profile which support all locations for resource types we support."
-      }
-    },
-    "resourceName": {
-      "type": "string",
-      "defaultValue": "test",
-      "metadata": {
-        "description": "Name of the main resource to be created by this template."
-      }
-    },
-    "resourceLocation": {
-      "type": "string",
-      "defaultValue": "[parameters('resourceGroupLocation')]",
-      "metadata": {
-        "description": "Location of the resource. By default use resource group's location, unless the resource provider is not supported there."
-      }
-    }
-  },
-  "resources": [
-    {
-      "type": "Microsoft.Resources/resourceGroups",
-      "name": "[parameters('resourceGroupName')]",
-      "location": "[parameters('resourceGroupLocation')]",
-      "apiVersion": "2019-10-01"
-    },
-    {
-      "type": "Microsoft.Resources/deployments",
-      "name": "[concat(parameters('resourceGroupName'), 'Deployment', uniqueString(concat(parameters('resourceName'), subscription().subscriptionId)))]",
-      "resourceGroup": "[parameters('resourceGroupName')]",
-      "apiVersion": "2019-10-01",
-      "dependsOn": [
-        "[parameters('resourceGroupName')]"
-      ],
-      "properties": {
-        "mode": "Incremental",
-        "expressionEvaluationOptions": {
-          "scope": "inner"
-        },
-        "parameters": {
-          "resourceGroupName": {
-            "value": "[parameters('resourceGroupName')]"
-          },
-          "resourceGroupLocation": {
-            "value": "[parameters('resourceGroupLocation')]"
-          },
-          "resourceName": {
-            "value": "[parameters('resourceName')]"
-          },
-          "resourceLocation": {
-            "value": "[parameters('resourceLocation')]"
-          }
-        },
-        "template": {
-          "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
-          "contentVersion": "1.0.0.0",
-          "parameters": {
-            "resourceGroupName": {
-              "type": "string"
-            },
-            "resourceGroupLocation": {
-              "type": "string"
-            },
-            "resourceName": {
-              "type": "string"
-            },
-            "resourceLocation": {
-              "type": "string"
-            }
-          },
-          "variables": {
-            "storage_name": "[toLower(concat('storage', uniqueString(concat(parameters('resourceName'), subscription().subscriptionId))))]",
-            "appServicePlan_name": "[concat('Plan', uniqueString(concat(parameters('resourceName'), subscription().subscriptionId)))]",
-            "storage_ResourceId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('resourceGroupName'), '/providers/Microsoft.Storage/storageAccounts/', variables('storage_name'))]",
-            "appServicePlan_ResourceId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('resourceGroupName'), '/providers/Microsoft.Web/serverFarms/', variables('appServicePlan_name'))]",
-            "function_ResourceId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('resourceGroupName'), '/providers/Microsoft.Web/sites/', parameters('resourceName'))]"
-          },
-          "resources": [
-            {
-              "location": "[parameters('resourceLocation')]",
-              "name": "[parameters('resourceName')]",
-              "type": "Microsoft.Web/sites",
-              "apiVersion": "2015-08-01",
-              "tags": {
-                "[concat('hidden-related:', variables('appServicePlan_ResourceId'))]": "empty"
-              },
-              "dependsOn": [
-                "[variables('appServicePlan_ResourceId')]",
-                "[variables('storage_ResourceId')]"
-              ],
-              "kind": "functionapp",
-              "properties": {
-                "name": "[parameters('resourceName')]",
-                "kind": "functionapp",
-                "httpsOnly": true,
-                "reserved": false,
-                "serverFarmId": "[variables('appServicePlan_ResourceId')]",
-                "siteConfig": {
-                  "alwaysOn": true
-                }
-              },
-              "identity": {
-                "type": "SystemAssigned"
-              },
-              "resources": [
-                {
-                  "name": "appsettings",
-                  "type": "config",
-                  "apiVersion": "2015-08-01",
-                  "dependsOn": [
-                    "[variables('function_ResourceId')]"
-                  ],
-                  "properties": {
-                    "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storage_name'), ';AccountKey=', listKeys(variables('storage_ResourceId'), '2017-10-01').keys[0].value, ';EndpointSuffix=', 'core.windows.net')]",
-                    "FUNCTIONS_EXTENSION_VERSION": "~3",
-                    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
-                  }
-                }
-              ]
-            },
-            {
-              "location": "[parameters('resourceGroupLocation')]",
-              "name": "[variables('storage_name')]",
-              "type": "Microsoft.Storage/storageAccounts",
-              "apiVersion": "2017-10-01",
-              "tags": {
-                "[concat('hidden-related:', concat('/providers/Microsoft.Web/sites/', parameters('resourceName')))]": "empty"
-              },
-              "properties": {
-                "supportsHttpsTrafficOnly": true
-              },
-              "sku": {
-                "name": "Standard_LRS"
-              },
-              "kind": "Storage"
-            },
-            {
-              "location": "[parameters('resourceGroupLocation')]",
-              "name": "[variables('appServicePlan_name')]",
-              "type": "Microsoft.Web/serverFarms",
-              "apiVersion": "2015-08-01",
-              "sku": {
-                "name": "S1",
-                "tier": "Standard",
-                "family": "S",
-                "size": "S1"
-              },
-              "properties": {
-                "name": "[variables('appServicePlan_name')]"
-              }
-            }
-          ]
-        }
-      }
-    }
-  ]
-}

+ 3 - 3
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -517,7 +517,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                 if (groupChange.type == null || !groupChange.type.Equals("research") || !groupChange.type.Equals("yxtrain") || !groupChange.type.Equals("activity"))
                 {
                     //课程名单变动修改学生课程关联信息
-                    await IESActivityService.FixStuCourse(client, _dingDing, groupChange);
+                   // await IESActivityService.FixStuCourse(client, _dingDing, groupChange);
                     //名单变动修改课例关联信息
                     //await ActivityService.FixLessonRecord(client, _dingDing, groupChange);
                 }
@@ -2146,7 +2146,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
 
         }
-
+        /*
         /// <summary>
         /// 完善课程变更
         /// </summary>
@@ -2457,7 +2457,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             {
                 await _dingDing.SendBotMsg($"OS,{Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -Course\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
-        }
+        }*/
 
         [Function("Imei")]
         public async Task ImeiFunc([ServiceBusTrigger("%Azure:ServiceBus:ActiveTask%", "imei", Connection = "Azure:ServiceBus:ConnectionString")] string msg)

+ 1 - 1
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -591,7 +591,7 @@ namespace TEAMModelOS.SDK.Models
     }
 
     /// <summary>
-    /// 教师报名数据
+    /// 教师报名数据,存放在
     /// </summary>
     public class ActivityEnroll  :CosmosEntity {
         //id  教师id,

+ 2 - 1
TEAMModelOS.SDK/Models/Service/IESActivityService.cs

@@ -316,6 +316,7 @@ namespace TEAMModelOS.SDK
                 await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupListService-FixActivity\n{ex.Message}\n{ex.StackTrace}{groupChange.ToJsonString()}{type}", GroupNames.醍摩豆服務運維群組);
             }
         }
+        /*
         public static async Task FixStuCourse(CosmosClient client, DingDing _dingDing, GroupChange groupChange)
         {
             //1.查找学校或教师的课程是否包含该名单的课程。
@@ -594,7 +595,7 @@ namespace TEAMModelOS.SDK
                 }
             }
         }
-
+        */
         public  static async  Task FixLessonRecord(CosmosClient client, DingDing dingDing, GroupChange groupChange)
         {
             if (groupChange.status.Equals("delete")) {

+ 4 - 1
TEAMModelOS.SDK/Models/Service/TmdUserService.cs

@@ -21,12 +21,13 @@ namespace TEAMModelOS.SDK
                 var school = tmdUser.schools.Find(x => x.schoolId.Equals(schoolId));
                 if (school == null)
                 {
-
+                    tmdUser.pk="Base";
                     tmdUser.schools.Add(new TmdUser.School { schoolId = schoolId, name = schoolName, status = "join", time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() });
                     await client.GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<TmdUser>(tmdUser, tmdid, partitionKey: new PartitionKey("Base"));
                 }
                 else
                 {
+                    tmdUser.pk="Base";
                     school.name = schoolName;
                     await client.GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<TmdUser>(tmdUser, tmdid, partitionKey: new PartitionKey("Base"));
                 }
@@ -40,6 +41,7 @@ namespace TEAMModelOS.SDK
                         createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                         id = tmdid,
                         code = "Base",
+                        pk="Base",
                         schools = new List<TmdUser.School>() {
                             new TmdUser.School {
                                 schoolId = schoolId, status = "join", name = schoolName, time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
@@ -62,6 +64,7 @@ namespace TEAMModelOS.SDK
             if (school != null)
             {
                 tmdUser.schools.Remove(school);
+                tmdUser.pk="Base";
                 await client.GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<TmdUser>(tmdUser, tmdid, partitionKey: new PartitionKey("Base"));
             }
             return tmdUser;

+ 33 - 9
TEAMModelOS/Controllers/Client/AClassONEController.cs

@@ -623,10 +623,15 @@ namespace TEAMModelOS.Controllers
                                 string subjectId = null;
                                 string subjectName = null;
                                 string subjectBindId = null;
-                                bool exists = groupLists.Exists(f => f.role.Equals(z.type)  &&  f.scope.Equals("private") && f.groupList.id.Equals(gp.id));
-                                if (!exists) {
-                                    groupLists.Add(new TeacherRoleGrouplist { role = z.type, scope= "private", groupList= gp, subjectId= subjectId, subjectName=subjectName, subjectBindId= subjectBindId });
-
+                                TeacherRoleGrouplist roleGrouplist = groupLists.Find(f =>    f.scope.Equals("private") && f.groupList.id.Equals(gp.id));
+                                if (roleGrouplist!=null)
+                                {
+                                    if (roleGrouplist.roles.Contains(z.type)) {
+                                        roleGrouplist.roles.Add(z.type);
+                                    }
+                                }
+                                else {
+                                    groupLists.Add(new TeacherRoleGrouplist { roles = new HashSet<string>() { z.type }, scope= "private", groupList= gp, subjectId= subjectId, subjectName=subjectName, subjectBindId= subjectBindId });
                                 }
                             }
                         }
@@ -650,10 +655,18 @@ namespace TEAMModelOS.Controllers
                         {
                             foreach (var gp in groupList)
                             {
-                                bool exists = groupLists.Exists(f => f.role.Equals(z.type)  &&  f.scope.Equals("school") && f.groupList.id.Equals(gp.id));
-                                if (!exists) {
-                                    groupLists.Add(new TeacherRoleGrouplist { role = z.type, scope = "school", groupList = gp, subjectId = item.courseBase?.subject?.id, subjectName = item.courseBase?.subject?.name, subjectBindId= subjectBindId });
 
+                                TeacherRoleGrouplist roleGrouplist = groupLists.Find(f => f.scope.Equals("school") && f.groupList.id.Equals(gp.id));
+                                if (roleGrouplist!=null)
+                                {
+                                    if (roleGrouplist.roles.Contains(z.type))
+                                    {
+                                        roleGrouplist.roles.Add(z.type);
+                                    }
+                                }
+                                else
+                                {
+                                    groupLists.Add(new TeacherRoleGrouplist { roles = new HashSet<string>() { z.type }, scope = "school", groupList = gp, subjectId = item.courseBase?.subject?.id, subjectName = item.courseBase?.subject?.name, subjectBindId= subjectBindId });
                                 }
                             }
                         }
@@ -666,8 +679,19 @@ namespace TEAMModelOS.Controllers
                 {
                     foreach (var gp in groupList)
                     {
+                        TeacherRoleGrouplist roleGrouplist = groupLists.Find(f => f.scope.Equals("school") && f.groupList.id.Equals(gp.id));
+                        if (roleGrouplist!=null)
+                        {
+                            if (roleGrouplist.roles.Contains("charge"))
+                            {
+                                roleGrouplist.roles.Add("charge");
+                            }
+                        }
+                        else
+                        {
+                            groupLists.Add(new TeacherRoleGrouplist { roles = new HashSet<string>() { "charge" }, scope = "school", groupList = gp,   });
+                        }
 
-                        groupLists.Add(new TeacherRoleGrouplist { role = "charge", scope = "school", groupList = gp });
                     }
                 }
             }
@@ -1335,7 +1359,7 @@ namespace TEAMModelOS.Controllers
         }
         public class TeacherRoleGrouplist
         {
-            public string role { get; set; }
+            public HashSet<string> roles { get; set; }
             public string scope { get; set; }
             public RGroupList groupList { get; set; }
             public string subjectId { get; set; }

+ 1 - 1
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -925,7 +925,7 @@ namespace TEAMModelOS.Controllers
                             }
 
                             string enrollSQL = $"select value c from c where c.activityId='{_activityId.GetString()}' ";
-                            //var enrollResult= _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS,Constant.)
+                          // var enrollResult= _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS,Constant.)
                             return Ok(new { inviteTeachers });
                         }
                     //导入评审专家

+ 2 - 3
TEAMModelOS/Controllers/Student/TmdUserController.cs

@@ -131,8 +131,8 @@ namespace TEAMModelOS.Controllers
                         tmdUser.defaultSchool = string.IsNullOrEmpty(tmdUser.defaultSchool) ? tmdUser.schools[0].schoolId : tmdUser.defaultSchool;
                     }
                     loginInfos = tmdUser.loginInfos;
-
-                   await client.GetContainer("TEAMModelOS", "Student").ReplaceItemAsync<TmdUser>(tmdUser, id, new PartitionKey("Base"));
+                    tmdUser.pk="Base";
+                    await client.GetContainer("TEAMModelOS", "Student").ReplaceItemAsync<TmdUser>(tmdUser, id, new PartitionKey("Base"));
                     //預設學校ID
                     defaultschool = tmdUser.defaultSchool;
                 }
@@ -195,7 +195,6 @@ namespace TEAMModelOS.Controllers
 
             // BLOB(學校,唯讀)
             var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(shool, BlobContainerSasPermissions.Read);
-
             return (blob_uri, blob_sas);
         }
         [ProducesDefaultResponseType]

+ 2 - 1
TEAMModelOS/Controllers/XTest/BillController.cs

@@ -37,8 +37,9 @@ namespace TEAMModelOS.Controllers.XTest
     [ApiController]
     public class BillController : ControllerBase
     {
+        
+
 
- 
 
         [HttpPost("read")]
         [RequestSizeLimit(102_400_000_00)] //最大10000m左右

+ 36 - 0
TEAMModelOS/Controllers/XTest/TestController.cs

@@ -99,6 +99,42 @@ namespace TEAMModelOS.Controllers
             _httpTrigger = httpTrigger;
             _azureService=azureService;
         }
+        /// <summary>
+        /// 移除已经废弃的StuCourse 数据
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="periodId"></param>
+        /// <returns></returns>
+        [HttpPost("remove-stucourse")]
+        [RequestSizeLimit(102_400_000_00)] //最大10000m左右
+        public async Task<IActionResult> RemoveStuCourse([FromForm] IFormFile[] file, [FromForm] string periodId)
+        {
+
+            //            var schoolResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<string>("select value c.id from c ", "Base");
+            //            if (schoolResult.list.IsNotEmpty()) 
+            //            {
+            //                foreach (var item in schoolResult.list) {
+            //                    var courseResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Student).GetList<IdCode>($"select  c.id,c.code from c where contains(c.code,'StuCourse-{item}-') ");
+            //                    if(courseResult.list.IsNotEmpty()) {
+            //                        foreach (var course in courseResult.list) 
+            //                        {
+            //                           await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Student).DeleteItemStreamAsync(course.id, new PartitionKey(course.code));
+            //;                        }
+            //                    }
+            //                }
+            //            }
+            string sql = "select value c from c where contains(c.code,'StuCourse-')";
+            var courseResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Student).GetList<IdCode>(sql);
+            if (courseResult.list.IsNotEmpty())
+            {
+                foreach (var course in courseResult.list)
+                {
+                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Student).DeleteItemStreamAsync(course.id, new PartitionKey(course.code));
+                }
+            }
+            return Ok();
+        }
+
         /*
          [
   {

+ 31 - 31
TEAMModelOS/appsettings.Development.json

@@ -22,48 +22,48 @@
   },
   "Azure": {
     // 测试站数据库
-    "Storage": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
-    },
-    "Cosmos": {
-      "ConnectionString": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;"
-    },
-    "Redis": {
-      "ConnectionString": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
-    },
-    "ServiceBus": {
-      "ConnectionString": "Endpoint=sb://coreservicebuscn.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=xO8HcvXXuuEkuFI0KlV5uXs8o6vyuVqTR+ASbPGMhHo=",
-      "ActiveTask": "dep-active-task",
-      "ItemCondQueue": "dep-itemcond",
-      "GenPdfQueue": "dep-genpdf"
-    },
-    "SignalR": {
-      "ConnectionString": "Endpoint=https://channel.service.signalr.net;AccessKey=KrblW06tuA4a/GyqRPDU0ynFFmAWxbAvyJihHclSXbQ=;Version=1.0;"
-    }
-    // 正式站数据库
     //"Storage": {
-    //  "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelos;AccountKey=Dl04mfZ9hE9cdPVO1UtqTUQYN/kz/dD/p1nGvSq4tUu/4WhiKcNRVdY9tbe8620nPXo/RaXxs+1F9sVrWRo0bg==;EndpointSuffix=core.chinacloudapi.cn"
+    //  "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
     //},
     //"Cosmos": {
-    //  "ConnectionString": "AccountEndpoint=https://teammodelos.documents.azure.cn:443/;AccountKey=clF73GwPECfP1lKZTCvs8gLMMyCZig1HODFbhDUsarsAURO7TcOjVz6ZFfPqr1HzYrfjCXpMuVD5TlEG5bFGGg==;"
+    //  "ConnectionString": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;"
     //},
     //"Redis": {
-    //  "ConnectionString": "CoreRedisCN.redis.cache.chinacloudapi.cn:6380,password=LyJWP1ORJdv+poXWofAF97lhCEQPg1wXWqvtzXGXQuE=,ssl=True,abortConnect=False"
+    //  "ConnectionString": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
     //},
     //"ServiceBus": {
     //  "ConnectionString": "Endpoint=sb://coreservicebuscn.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=xO8HcvXXuuEkuFI0KlV5uXs8o6vyuVqTR+ASbPGMhHo=",
-    //  "ActiveTask": "active-task",
-    //  "ItemCondQueue": "itemcond",
-    //  "GenPdfQueue": "genpdf"
+    //  "ActiveTask": "dep-active-task",
+    //  "ItemCondQueue": "dep-itemcond",
+    //  "GenPdfQueue": "dep-genpdf"
     //},
     //"SignalR": {
-    //  "ConnectionString": "Endpoint=https://channel.signalr.azure.cn;AccessKey=AtcB7JYFNUbUXb1rGxa3PVksQ2X5YSv3JOHZR9J88tw=;Version=1.0;"
-    //},
-    //"Speech": {
-    //  "SubscriptionKey": "a4f5f4e2e2e54c6e8b0a4a0b4a0a4a0b",
-    //  "Region": "chinanorth3",
-    //  "Endpoint": "https://chinanorth3.api.cognitive.azure.cn/sts/v1.0/issuetoken"
+    //  "ConnectionString": "Endpoint=https://channel.service.signalr.net;AccessKey=KrblW06tuA4a/GyqRPDU0ynFFmAWxbAvyJihHclSXbQ=;Version=1.0;"
     //}
+    // 正式站数据库
+    "Storage": {
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelos;AccountKey=Dl04mfZ9hE9cdPVO1UtqTUQYN/kz/dD/p1nGvSq4tUu/4WhiKcNRVdY9tbe8620nPXo/RaXxs+1F9sVrWRo0bg==;EndpointSuffix=core.chinacloudapi.cn"
+    },
+    "Cosmos": {
+      "ConnectionString": "AccountEndpoint=https://teammodelos.documents.azure.cn:443/;AccountKey=clF73GwPECfP1lKZTCvs8gLMMyCZig1HODFbhDUsarsAURO7TcOjVz6ZFfPqr1HzYrfjCXpMuVD5TlEG5bFGGg==;"
+    },
+    "Redis": {
+      "ConnectionString": "CoreRedisCN.redis.cache.chinacloudapi.cn:6380,password=LyJWP1ORJdv+poXWofAF97lhCEQPg1wXWqvtzXGXQuE=,ssl=True,abortConnect=False"
+    },
+    "ServiceBus": {
+      "ConnectionString": "Endpoint=sb://coreservicebuscn.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=xO8HcvXXuuEkuFI0KlV5uXs8o6vyuVqTR+ASbPGMhHo=",
+      "ActiveTask": "active-task",
+      "ItemCondQueue": "itemcond",
+      "GenPdfQueue": "genpdf"
+    },
+    "SignalR": {
+      "ConnectionString": "Endpoint=https://channel.signalr.azure.cn;AccessKey=AtcB7JYFNUbUXb1rGxa3PVksQ2X5YSv3JOHZR9J88tw=;Version=1.0;"
+    },
+    "Speech": {
+      "SubscriptionKey": "a4f5f4e2e2e54c6e8b0a4a0b4a0a4a0b",
+      "Region": "chinanorth3",
+      "Endpoint": "https://chinanorth3.api.cognitive.azure.cn/sts/v1.0/issuetoken"
+    }
   },
   "HaBookAuth": {
     "CoreId": {