Преглед изворни кода

規模版本欄位改放在Edtion裡面

upon пре 1 година
родитељ
комит
5bb541c981

+ 7 - 6
TEAMModelBI/ClientApp/src/view/created/created.vue

@@ -1062,6 +1062,7 @@ export default {
     }
     //创建学校
     function createdSchool () {
+      //debugger;
       console.log(schoolForm, '创校数据')
       let langState = (schoolForm.value[0].lang === "1" || schoolForm.value[0].lang === "2" || schoolForm.value[0].lang === "3") ? true : false
       if (schoolForm.value[0].name === '' || schoolForm.value[0].name === undefined) {
@@ -1115,6 +1116,9 @@ export default {
         for (let items of phaselist) {
           items.name === schoolForm.value[i].radio1 ? newPeriod.push(items) : ''
         }
+        
+        // var edition ={};
+        // edition.scaleVersion = schoolForm.value[i].scaleVersion;
         datas.push({
           name: schoolForm.value[i].name,
           admin: adminArr ? [adminArr] : [schoolForm.value[i].presupposeAdmin],
@@ -1132,8 +1136,7 @@ export default {
           modules:schoolForm.value[i].modules === 'default' ? []:['art'],
           scaleVersion:schoolForm.value[i].scaleVersion
         })
-      }
-      debugger;
+      }      
       let parameter = { biSchools: datas, lang: schoolForm.value[0].lang === '1' ? 'zh-CN' : schoolForm.value[0].lang === '2' ? 'zh-TW' : schoolForm.value[0].lang === '3' ? 'en-US' : 'zh-CN' }
       console.log(schoolForm.value[0].lang)
       console.log(parameter, '创建学校最后的数据格式')
@@ -1686,8 +1689,7 @@ export default {
           ElMessage({ showClose: false, message: '数据存在异常,请检查表单内容', type: 'error', duration: 4000 })
         }
         verifySchool.close()
-      }).catch((error) => {
-        debugger;
+      }).catch((error) => {        
         ElMessage.error('API异常,数据核验失败')
         verifySchool.close()
       })
@@ -1743,8 +1745,7 @@ export default {
       proxy.$api.verifyDatainbb(datas).then((res) => {
         console.log(res.length, '核验数据')
         res.length == 0 ? (verifyForstate.value.state = true, verifyForstate.value.pass = true, ElMessage.success('数据已通过核验,可执行创校')) : (verifyForstate.value.state = false, verifyForstate.value.pass = false, ElMessage.error('数据未通过核验,BB学校资料库已存在此学校代码或简码。'))
-      }).catch((error) => {
-        debugger;
+      }).catch((error) => {        
         ElMessage.error('API异常,数据核验失败')
       })
       console.log(verifyData, '准备核验的数据')

+ 2 - 1
TEAMModelBI/ClientApp/src/view/ddlogin.vue

@@ -10,7 +10,8 @@ const hosts = window.location.host === 'localhost:5001' ? 'localhost:5001' :
         window.location.host === 'bi.teammodel.net' ? 'bi.teammodel.net' :
             window.location.host === 'bi-rc.teammodel.net' ? 'bi-rc.teammodel.net' :
                 'bitest.teammodel.cn'
-const appsKey = window.location.host === 'localhost:5001' || window.location.host === 'bi.teammodel.cn' || window.location.host === 'bitest.teammodel.cn' ? 'dingrucgsnt8p13rfbgd' : 'dingupjxyj1guhh5p8dt'
+    //const appsKey = window.location.host === 'localhost:5001' || window.location.host === 'bi.teammodel.cn' || window.location.host === 'bitest.teammodel.cn' ? 'dingrucgsnt8p13rfbgd' : 'dingupjxyj1guhh5p8dt'
+    const appsKey =  window.location.host === 'bi.teammodel.cn' || window.location.host === 'bitest.teammodel.cn' ? 'dingrucgsnt8p13rfbgd' : 'dingupjxyj1guhh5p8dt'
 console.log(appsKey, 'key的内容')
 import axios from 'axios'
 export default {

+ 27 - 8
TEAMModelBI/ClientApp/src/view/schoolServe/school.vue

@@ -420,6 +420,7 @@ export default {
       admin: '',
       type: 0,
       scale: 0,
+      edition:{}
     })
     let originalData = ref([])
     let originalNum = ref(0)
@@ -793,14 +794,18 @@ export default {
         res.state == 200 ? 
         (tableData.value = [], originalData.value = [], 
         res.scInfos.forEach((item)=>{
-          //debugger;
+         // debugger;
           //item.versions= item.service.includes('YPXSJ6NJ') && item.service.includes('B6V5J6NP') ? '专业版':item.service.includes('YMPCVCIM') ? '标准版':'基础版'}),
+          if (item.edition !== null) {
+                if (item.edition.scaleVersion !== null && item.edition.scaleVersion !== "") {
+                  item.versions = item.edition.scaleVersion;
+                } else {
+                  item.versions = item.service.includes('YPXSJ6NJ') && item.service.includes('B6V5J6NP') ? '专业版' : item.service.includes('YMPCVCIM') ? '标准版' : '基础版';
+                }
+              } else {
+                item.versions = item.service.includes('YPXSJ6NJ') && item.service.includes('B6V5J6NP') ? '专业版' : item.service.includes('YMPCVCIM') ? '标准版' : '基础版';
+              }
           
-          if(item.scaleVersion!==null && item.scaleVersion!=="" ){
-            item.versions = item.scaleVersion;
-          }else {
-            item.versions= item.service.includes('YPXSJ6NJ') && item.service.includes('B6V5J6NP') ? '专业版':item.service.includes('YMPCVCIM') ? '标准版':'基础版';
-          }
           }),
         tableData.value.push(...res.scInfos),originalNum.value = res.scInfos.length,
         originalData.value = res.scInfos,tablesccnt.value = res.allCnt) 
@@ -816,6 +821,7 @@ export default {
     }
     //点击学校列表,详情
     function deleteRow (data, index) {
+      //debugger;
       console.log(index, 'INDEX')
       console.log(data, 'DATA')
       //处理的基础设置
@@ -829,6 +835,17 @@ export default {
       nowPitchdata.value.scale = data.scale
       nowPitchdata.value.standard = data.standard
       nowPitchdata.value.areaId = data.areaId
+      if (data.edition !== null) {
+        if (data.edition.scaleVersion !== null) {
+          nowPitchdata.value.scaleVersion = data.edition.scaleVersion;
+        } else {
+          nowPitchdata.value.scaleVersion = "";
+        }
+
+      } else {
+        nowPitchdata.value.scaleVersion = "";
+      }
+      
       nSchool.value.img = data.picture
       nSchool.value.name = data.name
       data.assists.length ? data.assists.forEach((element) => { adminvalue.value.push(element.id) }) : ''
@@ -1140,7 +1157,7 @@ export default {
           }
         }
       }
-      console.log(placeArr)
+      console.log(placeArr);
       //去重管家列表
       // assisArr.forEach((item) => {
       //   let ids = item.id
@@ -1148,7 +1165,9 @@ export default {
       //     assisArr[i].id === ids ? assisArr.splice(i, 1) : ''
       //   }
       // })
-      console.log(areaSelect.Selectvalue, nowPitchdata.value.areaId, '预计要更改和本来的')
+      
+      console.log(areaSelect.Selectvalue, nowPitchdata.value.areaId, '预计要更改和本来的');
+      
       let updateForm = {
         name: nowPitchdata.value.name,
         schoolId: nowPitchdata.value.id,

+ 2 - 2
TEAMModelBI/Controllers/BINormal/AreaRelevantController.cs

@@ -193,7 +193,7 @@ namespace TEAMModelBI.Controllers.BINormal
                         return Ok(new { state = 401, msg = "区域已经规定了,不能切换能能力" });
                 }
 
-                SchoolScaleVersion tempSchool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolScaleVersion>($"{schoolId}", new PartitionKey($"{code}"));
+                School tempSchool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{schoolId}", new PartitionKey($"{code}"));
                 if (bool.Parse($"{isDefault}") == true)
                 {
                     tempSchool.areaId = null;
@@ -234,7 +234,7 @@ namespace TEAMModelBI.Controllers.BINormal
                         }
                     }
                 }
-                SchoolScaleVersion school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<SchoolScaleVersion>(tempSchool, tempSchool.id, new PartitionKey($"{code}"));
+                School school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(tempSchool, tempSchool.id, new PartitionKey($"{code}"));
 
                 //创建/修改学校信息中间件
                 //_ = _httpTrigger.RequestHttpTrigger(new { school = $"{school}" }, _option.Location, "set-sc-birelation");

+ 14 - 12
TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

@@ -193,7 +193,9 @@ namespace TEAMModelBI.Controllers.BISchool
                         if (createSchoolInfo.id != null)
                         {
                             string campusId = Guid.NewGuid().ToString();
-                            SchoolScaleVersion upSchool = new()
+                            TEAMModelOS.SDK.Models.Edition edition = new();
+                            edition.scaleVersion = bischool.scaleVersion;
+                            School upSchool = new()
                             {
                                 id = createSchoolInfo.id,
                                 name = bischool.name,
@@ -219,7 +221,7 @@ namespace TEAMModelBI.Controllers.BISchool
                                 //modules=bischool.modules,
                                 openLessonRecord = (_option.Location.Contains("Global")) ? false : true,
                                 createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
-                                scaleVersion = bischool.scaleVersion
+                                edition = edition
 
                             };
                             scInfos.Add(createSchoolInfo);
@@ -229,7 +231,7 @@ namespace TEAMModelBI.Controllers.BISchool
                             upSc.Add(upSchool.id);
 
                             //创建学校
-                            await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolScaleVersion>(upSchool, new PartitionKey(upSchool.code));
+                            await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<School>(upSchool, new PartitionKey(upSchool.code));
                             //创建学校信息中间件
                             //_ = _httpTrigger.RequestHttpTrigger(new { school = $"{upSchool}" }, _option.Location, "set-sc-birelation");
                             await BIStats.SetSchoolBIRelation(cosmosClient, blobClient, tableClient, _dingDing, upSchool);
@@ -1077,7 +1079,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 //IES5 實體學校變更
                 if (!code.Equals("VirtualBase"))
                 {
-                    SchoolScaleVersion tempShool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolScaleVersion>($"{_schoolId}", new PartitionKey("Base"));
+                    School tempShool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{_schoolId}", new PartitionKey("Base"));
                     if (tempShool != null)
                     {
                         List<Period> periods = new();
@@ -1102,7 +1104,7 @@ namespace TEAMModelBI.Controllers.BISchool
                         tempShool.city = string.IsNullOrEmpty($"{city}") ? tempShool.city : $"{city}";
                         tempShool.dist = string.IsNullOrEmpty($"{dist}") ? tempShool.dist : $"{dist}";
                         tempShool.address = string.IsNullOrEmpty($"{address}") ? tempShool.address : $"{address}";
-                        tempShool.scaleVersion = string.IsNullOrEmpty($"{scaleVersion}") ? tempShool.scaleVersion : $"{scaleVersion}";
+                        
                         //計算學校版本
                         List<SchoolProductSumData> services = new List<SchoolProductSumData>();
                         Azure.Response productSumResponse = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{_schoolId}", new PartitionKey("ProductSum"));
@@ -1115,9 +1117,10 @@ namespace TEAMModelBI.Controllers.BISchool
                             }
                         }
                         tempShool.edition = BISchoolService.calSchoolEdition(tempShool, services.Select(s => s.prodCode).ToList());
+                        tempShool.edition.scaleVersion = string.IsNullOrEmpty($"{scaleVersion}") ? tempShool.edition.scaleVersion : $"{scaleVersion}";
 
                         //修改学校
-                        await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<SchoolScaleVersion>(tempShool, tempShool.id, new PartitionKey("Base"));
+                        await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(tempShool, tempShool.id, new PartitionKey("Base"));
 
                         //创建学校信息中间件
                         await BIStats.SetSchoolBIRelation(cosmosClient, blobClient, tableClient, _dingDing, tempShool);
@@ -1142,12 +1145,12 @@ namespace TEAMModelBI.Controllers.BISchool
                         }
 
                         //学校信息中间件更新
-                        BIRelationScaleVersion biRel = new();
+                        BIRelation biRel = new();
                         var respRel = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(tempShool.id, new PartitionKey("BIRel"));
                         if (respRel.Status == 200)
                         {
                             using var fileJson = await JsonDocument.ParseAsync(respRel.ContentStream);
-                            biRel = fileJson.ToObject<BIRelationScaleVersion>();
+                            biRel = fileJson.ToObject<BIRelation>();
                         }
                         else
                         {
@@ -1172,8 +1175,7 @@ namespace TEAMModelBI.Controllers.BISchool
                         biRel.scale = tempShool.scale;
                         biRel.upDate = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                         biRel.areaName = aName;
-                        biRel.edition = tempShool.edition;
-                        biRel.scaleVersion = tempShool.scaleVersion;
+                        biRel.edition = tempShool.edition;                                                
                         if (idInfos.Count > 0)
                         {
                             foreach (var item in idInfos)
@@ -1190,11 +1192,11 @@ namespace TEAMModelBI.Controllers.BISchool
 
                         if (respRel.Status == 200)
                         {
-                            await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<BIRelationScaleVersion>(biRel, biRel.id, new PartitionKey("BIRel"));
+                            await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<BIRelation>(biRel, biRel.id, new PartitionKey("BIRel"));
                         }
                         else
                         {
-                            await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<BIRelationScaleVersion>(biRel, new PartitionKey("BIRel"));
+                            await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<BIRelation>(biRel, new PartitionKey("BIRel"));
                         }
                     }
                     

+ 1 - 1
TEAMModelBI/Controllers/BISchool/SchoolController.cs

@@ -289,7 +289,7 @@ namespace TEAMModelBI.Controllers.BISchool
                     {
                         int index = schoolCodes.IndexOf(tempCode);
                         string code = codes[index];
-                        SchoolScaleVersion school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolScaleVersion>(tempCode, new PartitionKey($"{code}"));
+                        School school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(tempCode, new PartitionKey($"{code}"));
                         if (school != null)
                         {
                             if (isManyArea)

+ 4 - 4
TEAMModelBI/Controllers/Census/SchoolController.cs

@@ -982,7 +982,7 @@ namespace TEAMModelBI.Controllers.Census
             {
                 schInBIRel.Add(item);
             }
-            await foreach (SchoolScaleVersion school in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<School>(queryText: $"SELECT * FROM c WHERE c.areaId='{areaId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Base") }))
+            await foreach (School school in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<School>(queryText: $"SELECT * FROM c WHERE c.areaId='{areaId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Base") }))
             {
                 string schId = school.id.ToString();
                 if (!schInBIRel.Contains(schId))
@@ -1433,9 +1433,9 @@ namespace TEAMModelBI.Controllers.Census
 
             //List<string> scId = await CommonFind.FindScIds(cosmosClient, "select value(c.id) from c ", "Base");
             //取得學校BI統計中間件
-            List<BIRelationScaleVersion> scInfos = new();
+            List<BIRelation> scInfos = new();
             List<string> schIds = new();
-            await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<BIRelationScaleVersion>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("BIRel") }))
+            await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<BIRelation>(queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("BIRel") }))
             {
                 scInfos.Add(item);
                 schIds.Add(item.id);
@@ -1487,7 +1487,7 @@ namespace TEAMModelBI.Controllers.Census
             {
                 sqlV.Append($" where c.areaId ='{areaId}'");
             }
-            await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<BIRelationScaleVersion>(queryText: sqlV.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("VirtualBase") }))
+            await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<BIRelation>(queryText: sqlV.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("VirtualBase") }))
             {
                 if(!string.IsNullOrWhiteSpace(item.areaId) && areaDic.ContainsKey(item.areaId))
                 {

+ 26 - 49
TEAMModelBI/appsettings.Development.json

@@ -1,4 +1,4 @@
-{
+{ //BI國際測試站
   "Logging": {
     "LogLevel": {
       "Default": "Debug",
@@ -8,55 +8,36 @@
   },
   "AllowedHosts": "*",
   "Option": {
-    "Location": "China-Dep", //China-Test,China,Global-Dep,Global-Test,Global
+    "Location": "Global-Dep", //China-Test,China,Global-Dep,Global-Test,Global
     "LocationNum": "1",
     "HostName": "localhost:5001",
     "AllowedHosts": [ "localhost", "*.teammodel.cn", "*.teammodel.net", "*.habookaclass.biz", "test" ],
-    "Issuer": "www.teammodel.cn",
+    "Issuer": "ies5.teammodel.net",
     "JwtSecretKey": "fXO6ko/qyXeYrkecPeKdgXnuLXf9vMEtnBC9OB3s+aA=",
     "Exp": 86400,
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/"
     //"HttpTrigger": "http://localhost:7071/api/"
   },
-  //大陆站连接字符串 现在是测试站
+  //国际站连接字符串 现在是测试站
   "Azure": {
     "Storage": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=t6XZuachzUBJDSN8RLtoeVqSE6HcXrFZFBmlF1n3G5jA2/Ltvx8jAL4z7C9MdfzLFRHI88/hTBbrK68K0lQeDw==;EndpointSuffix=core.windows.net"
     },
     "LogStorage": {
       "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodellog;AccountKey=lxVDrgs+6rKtmASL3k1WrarrEd5Rk42wS1Mu5+sqQlPya1JLSlFDtnZUvMPeHHe7zlESfn/1NY7CZdGviy2UCw==;EndpointSuffix=core.chinacloudapi.cn"
     },
     "Cosmos": {
-      "ConnectionString": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;"
+      "ConnectionString": "AccountEndpoint=https://teammodel-test.documents.azure.com:443/;AccountKey=W38PnllgIJ3I879l8l4mGgFD1YZpPpYrbTtbBfgZvBavdNzveixvjjXXxFzx4RRDfpTmJuCtst5dXh7cETiSRQ==;"
     },
     "Redis": {
-      "ConnectionString": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
+      "ConnectionString": "teammodel-test.redis.cache.windows.net:6380,password=qRDLVsl6NRkv3tbtlNpXr0568fAMXJH2GAzCaAYYExE=,ssl=True,abortConnect=False"
     },
     "ServiceBus": {
-      "ConnectionString": "Endpoint=sb://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc=",
+      "ConnectionString": "Endpoint=sb://teammodel-test.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=iEA1MP9rYUfhYgMOp40g3SRHVyLrSoQTO7fa7aMWBEg=",
       "ActiveTask": "dep-active-task",
       "ItemCondQueue": "dep-itemcond"
     }
-
-    ////正式站
-    //"Storage": {
-    //  "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
-    //},
-    //"LogStorage": {
-    //  "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodellog;AccountKey=lxVDrgs+6rKtmASL3k1WrarrEd5Rk42wS1Mu5+sqQlPya1JLSlFDtnZUvMPeHHe7zlESfn/1NY7CZdGviy2UCw==;EndpointSuffix=core.chinacloudapi.cn"
-    //},
-    //"Cosmos": {
-    //  "ConnectionString": "AccountEndpoint=https://teammodelos.documents.azure.cn:443/;AccountKey=clF73GwPECfP1lKZTCvs8gLMMyCZig1HODFbhDUsarsAURO7TcOjVz6ZFfPqr1HzYrfjCXpMuVD5TlEG5bFGGg==;"
-    //},
-    //"Redis": {
-    //  "ConnectionString": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
-    //},
-    //"ServiceBus": {
-    //  "ConnectionString": "Endpoint=sb://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc=",
-    //  "ActiveTask": "dep-active-task",
-    //  "ItemCondQueue": "dep-itemcond"
-    //}
   },
   //国际站连接字符串  暂时是本地
   "GlobalAzure": {
@@ -64,7 +45,7 @@
       "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn" // 之前未删除连接字符
     },
     "LogStorage": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodellog;AccountKey=lxVDrgs+6rKtmASL3k1WrarrEd5Rk42wS1Mu5+sqQlPya1JLSlFDtnZUvMPeHHe7zlESfn/1NY7CZdGviy2UCw==;EndpointSuffix=core.chinacloudapi.cn"
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodellog;AccountKey=u4g43MqRq/vzd6x5949wlgg35jk1YbmIbIA5tKjgtIADZnhlMGD8+E+hSCP56HEaUN7F2npslI6l+ASt7iYxyA==;EndpointSuffix=core.windows.net"
     },
     "Cosmos": {
       "ConnectionString": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;" //测试站
@@ -80,47 +61,43 @@
   },
   "HaBookAuth": {
     "CoreId": {
-      "userinfo": "https://api2.teammodel.cn/Oauth2/GetUserInfos"
+      "userinfo": "https://api2.teammodel.net/Oauth2/GetUserInfos"
     },
     "Account": "https://account.teammodel.cn",
-    "CoreAPI": "https://api2.teammodel.cn",
-    "CoreBBAPI": "https://bb.teammodel.cn",
+    "CoreAPI": "https://api2.teammodel.net",
+    "CoreBBAPI": "https://bb-rc.teammodel.net",
     "CoreService": {
-      "clientID": "c7317f88-7cea-4e48-ac57-a16071f7b884", //大陆站IES5 ClientId
-      "clientSecret": "kguxh:V.PLmxBdaI@jnrTrDSth]A3346", //大陆站IES5 秘钥
-      //"clientID": "73266ca3-62b1-4304-b837-c672a8c88001",      //大陆站的ClientId
-      //"clientSecret": "E4Sr6[ezaT.b=3DYWoIATmqRDn4HlJb?",     //大陆站的密钥
-      //"clientID": "c01d78c2-a72e-416e-94d9-c8d3e4b8eb11",   //国际站的ClientId
-      //"clientSecret": "68-Bz:/5Xv:u6PVAFE@s3.=P2PCq5@ux",   //国际站的密钥
-      "deviceinfo": "https://api2.teammodel.cn/oauth2/getdeviceinfos",
+      "clientID": "531fecd1-b1a5-469a-93ca-7984e1d392f2", //国际站IES5 ClientId
+      "clientSecret": "iI2cmTIX?fnXrwnffo84/:_X954=sw:.", //国际站IES5 秘钥
+      "deviceinfo": "https://api2.teammodel.net/oauth2/getdeviceinfos",
       "sendnotification": "https://api2.teammodel.net/service/sendnotification",
       "getnotification": "https://api2.teammodel.net/service/getnotification",
       "delnotification": "https://api2.teammodel.net/service/delnotification"
     }
   },
   "DingDingAuth": {
-    "Agentld": "1290158212",
-    "appKey": "dingrucgsnt8p13rfbgd",
-    "appSecret": "Gyx_N57yZslhQOAhAPlvmCwOp_qTm1DScKbd5OoOE0URAW4eViYA2Sk_ZxKb-8WG",
+    "Agentld": "1800083745",
+    "appKey": "dingupjxyj1guhh5p8dt",
+    "appSecret": "ZL-RbizlPEv-Wa1F814vTpVK1SiRJfr9cQpDDNpGv9GW7sUupPZvQqOoX7uw8C9E",
     "getuserinfo_bycode": "https://oapi.dingtalk.com/sns/getuserinfo_bycode?accessKey=xxx&timestamp=xxx&signature=xxx"
   },
   "CustomParam": {
-    "SiteScope": "continent", // 站点范围  continent 大路站  international 国际站
+    "SiteScope": "international", // 站点范围  continent 大路站  international 国际站
     "proDeptId": 67690917
   },
   "CoreServiceV1": {
-	"Cosmos": {
-      "ConnectionString": "AccountEndpoint=https://corecosmosdbcn.documents.azure.cn:443/;AccountKey=WIFUWgnC6HiPb4yYba5iLR4ZghcA2fqrEvnX00YTA5B4sd7o89sxtbvgFDDUqT2VRkeWrWVTWZ8VbApQtwkJKQ==;" //CSV1大陸正式站(唯讀)
+    "Cosmos": {
+      "ConnectionString": "AccountEndpoint=https://coredocumentdbjp.documents.azure.com:443/;AccountKey=aY6AjEYuPwRJEQRDX6bFN3Z87I7LwZ72dN1qON7j5E3VPpUEc2z0YDVzdCTUDvHzIEuoQosGu8e0AYCHUfcSnw==;" //CSV1國際正式站(唯讀)
     }
   },
   "CoreServiceV2": {
-	"Cosmos": {
-      "ConnectionString": "AccountEndpoint=https://teammodelostest.documents.azure.cn:443/;AccountKey=ReGoiHuTbU4Q31YYq4NaiormE6Ci71piT7OrvTzAuhrlgt63ajdtDZmwOZKzcz6gnwR326mJp53InY7rohepQQ==;" //CSV2大陸測試站(讀寫)
+    "Cosmos": {
+      "ConnectionString": "AccountEndpoint=https://teammodel-test.documents.azure.com:443/;AccountKey=W38PnllgIJ3I879l8l4mGgFD1YZpPpYrbTtbBfgZvBavdNzveixvjjXXxFzx4RRDfpTmJuCtst5dXh7cETiSRQ==;" //CSV2國際測試站(讀寫)
     },
-	"Storage": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn" //CSV2大陸測試站
+    "Storage": {
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=t6XZuachzUBJDSN8RLtoeVqSE6HcXrFZFBmlF1n3G5jA2/Ltvx8jAL4z7C9MdfzLFRHI88/hTBbrK68K0lQeDw==;EndpointSuffix=core.windows.net" //CSV2國際測試站
     },
-	"CosmosCnRead": {
+    "CosmosCnRead": {
       "ConnectionString": "AccountEndpoint=https://corecosmosdb.documents.azure.cn:443/;AccountKey=12C5n8IvXFqsPARUb2YBOUWiU9PksohESlLHgH6cAVajxWBBJIJ6chJusgfrYhxCKgQgSHHxVgHsFPRakhvlPw==;" //CSV2大陸正式站(唯讀)
     }
   }

+ 1 - 7
TEAMModelOS.SDK/Models/Cosmos/BI/BISchool/BIRelation.cs

@@ -115,11 +115,5 @@ namespace TEAMModelOS.SDK.Models.Cosmos.BI.BISchool
         public string picture { get; set; }
     }
 
-    public class BIRelationScaleVersion : BIRelation
-    {
-        /// <summary>
-        /// 規模版本
-        /// </summary>
-        public string scaleVersion { get; set; }
-    }
+    
 }

+ 4 - 7
TEAMModelOS.SDK/Models/Cosmos/School/School.cs

@@ -166,6 +166,10 @@ namespace TEAMModelOS.SDK.Models
         /// 历史最高版本  1 基础班  2标准版  3 专业版
         /// </summary>
         public int record { get; set; } = 1;
+        /// <summary>
+        /// 規模版本
+        /// </summary>
+        public string scaleVersion { get; set; }
     }
 
     /// <summary>
@@ -175,11 +179,4 @@ namespace TEAMModelOS.SDK.Models
     {
         public string areaName { get; set; }
     }
-    public class SchoolScaleVersion : School
-    {
-        /// <summary>
-        /// 規模版本
-        /// </summary>
-        public string scaleVersion { get; set; }
-    }
 }

+ 7 - 7
TEAMModelOS.SDK/Models/Service/BI/BIStats.cs

@@ -445,7 +445,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
         /// <param name="cosmosClient"></param>
         /// <param name="school"></param>
         /// <returns></returns>
-        public static async Task SetScStatsInfo(CosmosClient cosmosClient, DingDing _dingDing, SchoolScaleVersion school)
+        public static async Task SetScStatsInfo(CosmosClient cosmosClient, DingDing _dingDing, School school)
         {
             try
             {
@@ -506,17 +506,17 @@ namespace TEAMModelOS.SDK.Models.Service.BI
         /// <param name="_dingDing"></param>
         /// <param name="school"></param>
         /// <returns></returns>
-        public static async Task SetSchoolBIRelation(CosmosClient cosmosClient, BlobContainerClient blobClient, CloudTableClient tableClient, DingDing _dingDing, SchoolScaleVersion school)
+        public static async Task SetSchoolBIRelation(CosmosClient cosmosClient, BlobContainerClient blobClient, CloudTableClient tableClient, DingDing _dingDing, School school)
         {
             try
             {
                 string type = "";
-                BIRelationScaleVersion bIRelation = new();
+                BIRelation bIRelation = new();
                 var resBiRel = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(school.id, new PartitionKey("BIRel"));
                 if (resBiRel.Status == 200)
                 {
                     using var fileJson = await JsonDocument.ParseAsync(resBiRel.ContentStream);
-                    bIRelation = fileJson.ToObject<BIRelationScaleVersion>();
+                    bIRelation = fileJson.ToObject<BIRelation>();
                 }
                 else
                 {
@@ -540,16 +540,16 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                 bIRelation.scale = school.scale;
                 bIRelation.upDate = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                 bIRelation.areaName = aName;
-                bIRelation.scaleVersion = school.scaleVersion;
+                bIRelation.edition = school.edition;
 
                 if (resBiRel.Status == 200)
                 {
-                    await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<BIRelationScaleVersion>(bIRelation, bIRelation.id, new PartitionKey("BIRel"));
+                    await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<BIRelation>(bIRelation, bIRelation.id, new PartitionKey("BIRel"));
                     type = "update";
                 }
                 else
                 {
-                    await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<BIRelationScaleVersion>(bIRelation, new PartitionKey("BIRel"));
+                    await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<BIRelation>(bIRelation, new PartitionKey("BIRel"));
                     type = "add";
                 }
 

+ 39 - 109
TEAMModelOS/appsettings.Development.json

@@ -8,138 +8,68 @@
   },
   "AllowedHosts": "*",
   "Option": {
-    "Location": "China-Dep",
+    "Location": "Global",
     "LocationNum": "1",
-    "HostName": "test.teammodel.cn",
+    "HostName": "localhost:5001",
     "AllowedHosts": [ "localhost", "*.teammodel.cn", "*.teammodel.net", "*.habookaclass.biz", "test" ],
-    "Issuer": "www.teammodel.cn",
+    "Issuer": "ies5.teammodel.net",
     "JwtSecretKey": "fXO6ko/qyXeYrkecPeKdgXnuLXf9vMEtnBC9OB3s+aA=",
     "Exp": 86400,
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
-    "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/",
-    //"HttpTrigger": "http://localhost:7071/api/"
-    "Version": "5.2309.27.1"
+    "HttpTrigger": "https://func.teammodel.net/api/",
+    "Audience": "8768b06f-c5c5-4b0c-abfb-d7ded354626d",
+    "Authority": "https://login.microsoftonline.com/73a2bcc5-fe99-4566-aa8a-07e7bb287df1/v2.0"
   },
   "Azure": {
-    // 测试站数据库
+    "Blob": {
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodel;AccountKey=KAa4hBoeKtw4/u1UNcBv5R4yacKCVFtirOjAbe7nvl2zpCxQfI+ImkBfxBoFCd3+N24DRLiXD4XQRqkedd6pIw==;EndpointSuffix=core.windows.net"
+    },
     "Storage": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodel;AccountKey=KAa4hBoeKtw4/u1UNcBv5R4yacKCVFtirOjAbe7nvl2zpCxQfI+ImkBfxBoFCd3+N24DRLiXD4XQRqkedd6pIw==;EndpointSuffix=core.windows.net"
+    },
+    "Table": {
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodel;AccountKey=KAa4hBoeKtw4/u1UNcBv5R4yacKCVFtirOjAbe7nvl2zpCxQfI+ImkBfxBoFCd3+N24DRLiXD4XQRqkedd6pIw==;EndpointSuffix=core.windows.net"
     },
     "Cosmos": {
-      "ConnectionString": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;"
+      "ConnectionString": "AccountEndpoint=https://teammodel.documents.azure.com:443/;AccountKey=eMwcOmXbqLQZ8QjGxHYgo5OP8mhWxxeMT7dQdQ7jK1TTtAVwbalmnCGn7k7LZHX5nwLeCPD70RKKl8RZ0p73Jw==;"
+    },
+    "CosmosDep": {
+      "ConnectionString": "AccountEndpoint=https://teammodel-test.documents.azure.com:443/;AccountKey=2kWrDMnSA4GdUwrAKiPTKmJxzM3U1qcQxks9BZcu9UrGRosV2yOB6q2MdGLFQzjlqJNUCBdr2z0bQUrrq8FTkA==;"
     },
     "Redis": {
-      "ConnectionString": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
+      "ConnectionString": "CoreRedisService.redis.cache.windows.net:6380,password=fPqgv7ZZ3xauupIpVPGjosV9TXZynwvpSgEWpd6LwWU=,ssl=True,abortConnect=False"
     },
     "ServiceBus": {
-      "ConnectionString": "Endpoint=sb://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc=",
-      "ActiveTask": "dep-active-task",
-      "ItemCondQueue": "dep-itemcond",
-      "GenPdfQueue": "dep-genpdf"
+      "ConnectionString": "Endpoint=sb://coreiotservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=bJrX0jcuIvFkdcssUMUCrZcTXcuFUK3JTMToKpsU6+M=",
+      "ActiveTask": "active-task",
+      "NoticeTask": "notice-task",
+      "ItemCondQueue": "itemcond"
     },
     "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"
-    //},
-    //"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://coreiotservicebuscnpro.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=llRPBMDJG9w1Nnifj+pGhV0g4H2REcq0PjvX2qqpcOg=",
-    //  "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": {
+    "CoreAPI": "https://api2.teammodel.net",
+    "CoreBBAPI": "https://bb.teammodel.net", //2022-5-13追�? �????
     "CoreId": {
-      "userinfo": "https://api2.teammodel.cn/Oauth2/GetUserInfos"
+      "userinfo": "https://api2.teammodel.net/Oauth2/GetUserInfos"
     },
-    "Account": "https://account.teammodel.cn",
-    "CoreAPI": "https://api2.teammodel.cn",
-    "CoreBBAPI": "https://bb.teammodel.cn",
     "CoreService": {
-      "clientID": "c7317f88-7cea-4e48-ac57-a16071f7b884",
-      "clientSecret": "kguxh:V.PLmxBdaI@jnrTrDSth]A3346",
-      "deviceinfo": "https://api2.teammodel.cn/oauth2/getdeviceinfos",
-      "sendnotification": "https://api2.teammodel.cn/service/sendnotification",
-      "getnotification": "https://api2.teammodel.cn/service/getnotification",
-      "delnotification": "https://api2.teammodel.cn/service/delnotification"
-    },
-    "AClassONE": {
-      //"clientID": "ee6a461a-3b40-4f70-8842-cf275d1e15ee",
-      //"clientSecret": "px-njcS.jL1P7g0-kW:EAkO2Ve7[9k1x"
-      "clientID": "8124850f-03d8-4949-9355-ed0d0709189e",
-      "clientSecret": "l2aR-bk2LfCGt7OjSwRi:qZqfXXhL4:="
-    },
-    "WXMiniAPP": {
-      "appid": "wx5705da8747c77cfe",
-      "secret": "d5adf260a866ca43e74fbb40cec00799"
-    }
-  },
-  "DingDingAuth": {
-    "Agentld": "1290158212",
-    "appKey": "dingrucgsnt8p13rfbgd",
-    "appSecret": "Gyx_N57yZslhQOAhAPlvmCwOp_qTm1DScKbd5OoOE0URAW4eViYA2Sk_ZxKb-8WG",
-    "getuserinfo_bycode": "https://oapi.dingtalk.com/sns/getuserinfo_bycode?accessKey=xxx&timestamp=xxx&signature=xxx"
-  },
-  "MailOption": {
-    //"fromMail": "chhabook_customer@163.com",
-    //"smtp": "smtp.163.com",
-    //"port": 25,
-    //"username": "chhabook_customer@163.com",
-    //"password": "ZXMIRDYLVLJFWGJD"
-    "fromMail": "customer_service@cdhabook.com",
-    "smtp": "smtp.263.net",
-    "port": 25,
-    "username": "customer_service@cdhabook.com",
-    "password": "CDhabook2023~!@"
-  },
-  "Third": {
-    //"scsyxpt": {
-    //  "passKey": "VgEQfEjwzfvFn8my", //机构安全码
-    //  "trainComID": "2065", //机构ID 2065 65324
-    //  "privateKey": "4DB15444DEEDBB28B718ACB09217B5FC", //机构 AES 密钥
-    //  "url": "http://testscts.scedu.com.cn/webservice/EduService.asmx/RequestService"
-    //}
-
-    ///醍摩豆-蒲江县
-    "scsyxpt": {
-      "passKey": "fst4clhyXqrhXblY", //机构安全码
-      "trainComID": "3069", //机构ID
-      "privateKey": "52C1C240E4BE086DD15DB10814E243E6", //机构 AES 密钥
-      "url": "https://scts.scedu.com.cn/webservice/EduService.asmx/RequestService"
-    },
-
-    ///英鼎教育-金牛区
-    //"scsyxpt": {
-    //  "passKey": "MSmZQnjvySxwB8KZ", //机构安全码
-    //  "trainComID": "3072", //机构ID
-    //  "privateKey": "CA00580BB7BFA3817334CFA38257AC9A", //机构 AES 密钥
-    //  "url": "https://scts.scedu.com.cn/webservice/EduService.asmx/RequestService"
-    //}
-
-    ///学科网测试站
-    "xkw": {
-      "OAuth_Xkw_AppKey": "key808", //学科网分配的appkey
-      "OAuth_Xkw_AppSecret": "ed4545f513444725bd811e909d3ac79f", //学科网分配的appSecret
-      "OAuth_Xkw_RedirectUrl": "http://kong.sso.com/Demo/Authorized",
-      "OAuth_Xkw_OAuthHost": "https://t.zxxk.com/oauth2/", // 学科网的服务,如http://www.zxxk.com/、http://zujuan.xkw.com/等,注意域名后面的斜杠不能少,更多服务可联系客服获取
-      "OAuth_Xkw_ServiceUrl": "https://t.zxxk.com/user/info" //学科网Oauth认证平台地址
+      "clientID": "531fecd1-b1a5-469a-93ca-7984e1d392f2",
+      "clientSecret": "iI2cmTIX?fnXrwnffo84/:_X954=sw:.",
+      "deviceinfo": "https://api2-rc.teammodel.net/oauth2/getdeviceinfos", //[������]api2.teammodel.net [RC��]api2-rc.teammodel.net
+      "sendnotification": "https://api2.teammodel.net/service/sendnotification",
+      "getnotification": "https://api2.teammodel.net/service/getnotification",
+      "delnotification": "https://api2.teammodel.net/service/delnotification"
     }
   }
+  //"HaBookAuth": {
+  //  "CoreId": {
+  //    "userinfo": "https://api2.teammodel.net/Oauth2/GetUserInfos"
+  //  },
+  //  "CoreService": {
+  //    "deviceinfo": "https://api2.teammodel.net/oauth2/getdeviceinfos"
+  //  }
+  //}
 }