Browse Source

Merge branch 'develop' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop

jeff 2 năm trước cách đây
mục cha
commit
93e675670e

+ 4 - 0
TEAMModelBI/ClientApp/src/api/index.js

@@ -554,6 +554,10 @@ export default {
     verifyDatainbb(data) {
         return post('https://bb.teammodel.net/ies5/search-cs-school', data)
     },
+    //测试站
+    verifyDatainbbrc(data) {
+        return post('https://bb-rc.teammodel.net/ies5/search-cs-school', data)
+    },
     //创建学校成功,数据回传BB
     successBack(data) {
         return post('https://bb.teammodel.net/ies5/create-cs-school ', data)

+ 3 - 3
TEAMModelBI/ClientApp/src/view/created/created.vue

@@ -1465,7 +1465,7 @@ export default {
       // let data = { regionId: "CN" }
       let data = state === 'name' ? { regionId: "CN", name: searchSchoolvalue.value, nameFuzzy: true } : state === 'code' ? { regionId: "CN", shortCode: searchSchoolvalue.value, shortCodeFuzzy: false } : { regionId: "CN" }
       console.log(data, '查询提交数据')
-      proxy.$api.verifyDatainbb(data).then((res) => {
+      proxy.$api.verifyDatainbbrc(data).then((res) => {
         console.log(res, '成功返回')
         res.length !== 0 ? resultschool.value = res : ''
       }).catch((error) => {
@@ -1606,7 +1606,7 @@ export default {
       }
 
       let datas = { regionId: regionCodeNow, name: verifyData[0].name, nameFuzzy: false, shortCode: verifyData[0].code, shortCodeFuzzy: false }
-      proxy.$api.verifyDatainbb(datas).then((res) => {
+      proxy.$api.verifyDatainbbrc(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('数据未通过核验,请检查表单内容'))
       }).catch((error) => {
@@ -1637,7 +1637,7 @@ export default {
         data['regionId'] = (regionList.length == 1) ? regionList[0] : ''
         data['regionIdList'] = (regionList.length > 1) ? regionList : []
       }
-      proxy.$api.verifyDatainbb(data).then((res) => {
+      proxy.$api.verifyDatainbbrc(data).then((res) => {
         res.length == 0 ? (ElMessage.success('数据已通过核验,可执行创校'), batchTablesArr.value = true) : (ElMessage.error('数据未通过核验,请检查表单内容'), batchTablesArr.value = true, verifyState.value = false)
       }).catch((error) => {
         ElMessage.error('API异常,批量数据核验失败')

+ 18 - 14
TEAMModelBI/ClientApp/src/view/product/index.vue

@@ -52,7 +52,7 @@
                 <div class="filtratebox-phase">
                   <span class="filtratebox-phase-title subclass">精准选择:</span>
                   <div class="filtratebox-phase-content precise">
-                    <div v-if="clickNum.subject === 0 || clickNum.subject === 2" class="schoolclass">
+                    <div v-if="(clickNum.subject === 0 || clickNum.subject === 2) && clickNum.filter===0" class="schoolclass">
                       <el-cascader v-model="optionsValue" :options="options" :props="props2" :collapse-tags=true :collapse-tags-tooltip=true filterable :filter-method="keywords">
                       </el-cascader>
                       <div class="addschoolbtn" @click="(adddialog=true,addvalue='',searchInit())">
@@ -177,7 +177,7 @@
       <el-dialog v-model="adddialog" title="学校搜索" width="50%" :close-on-click-modal="false">
         <div class="addschool-box">
           <div>
-            <el-input v-model="addvalue" placeholder="搜索学校简码" class="input-with-select">
+            <el-input v-model="addvalue" placeholder="搜索学校 名称/简码 " class="input-with-select">
               <template #append>
                 <el-button :icon="Search" />
               </template>
@@ -187,7 +187,7 @@
             <!-- <div class="notsearch-box" v-if="!tableData.length =="><img src="@/assets/img/notsearch.png" /></div> -->
             <div class="search-result">
               <p>搜索结果:</p>
-              <div class="result-box">
+              <div class="result-box" v-loading="filterloding" element-loading-text="加载中...">
                 <!-- <p><span>学校名称:</span><span class="result-text">{{addschool.name}}</span></p>
                 <p><span>学校简码:</span><span class="result-text">{{addschool.id}}</span></p>
                 <p><span>学校地址:</span><span class="result-text">{{addschool.region}}{{addschool.province}}{{addschool.city}}{{addschool.dist}}</span></p>
@@ -279,14 +279,14 @@ let showState = ref('default')
 let findValue = ref()
 let test = ref([])
 let columns = ref([
-  // {
-  //   key: "id",
-  //   dataKey: "id",//需要渲染当前列的数据字段,如{id:9527,name:'Mike'},则填id
-  //   title: "编号",//显示在单元格表头的文本
-  //   width: 100,//当前列的宽度,必须设置
-  //   fixed: false,//是否固定列
-  //   headerClass: 'header-class',
-  // },
+  {
+    key: "name",
+    dataKey: "name",//需要渲染当前列的数据字段,如{id:9527,name:'Mike'},则填id
+    title: "名称",//显示在单元格表头的文本
+    width: 100,//当前列的宽度,必须设置
+    fixed: false,//是否固定列
+    headerClass: 'general',
+  },
   {
     key: "schoolId",
     dataKey: "schoolId",//需要渲染当前列的数据字段,如{id:9527,name:'Mike'},则填id
@@ -332,7 +332,7 @@ let columns = ref([
   {
     key: "tGreen",
     dataKey: "tGreen",//需要渲染当前列的数据字段,如{id:9527,name:'Mike'},则填id
-    title: "T指数",//显示在单元格表头的文本
+    title: "T绿灯",//显示在单元格表头的文本
     width: 100,//当前列的宽度,必须设置
     headerClass: 'general',
   },
@@ -584,6 +584,7 @@ let addschool = ref({
   areaId: '',
   isvirtual: false,
 })
+let filterloding = ref(false)
 function changeState (value) {
   console.log(value)
   showState.value = 'details'
@@ -604,6 +605,7 @@ function dataInit () {
     res.areas.forEach((item) => {
       dataList.push({ id: item.id, name: item.name, province: item.provName, city: item.cityName, children: [] })
     })
+    filterloding.value = true
     proxy.$api.getSchool({}).then((res) => {
       console.log(res, 'schoolList')
       dataSource.value.school = res.scInfos
@@ -620,8 +622,10 @@ function dataInit () {
       dataSource.value.originalSchool = res.scInfos
       tableData.value = res.scInfos
       console.log(dataSource.value.composite, '检查是否是所有学校')
+      filterloding.value = false
     }).catch((err) => {
       ElMessage.error('API异常,基础数据获取异常')
+      filterloding.value = false
     })
   }).catch((err) => {
     ElMessage.error('API异常,基础数据获取异常')
@@ -632,7 +636,7 @@ function serachToresult (startTime, endTime, product, schools, unit) {
   let data = { "dateFrom": startTime, "dateTo": endTime, "prod": product, "schoolIds": schools, "dateUnit": unit }
   proxy.$api.getUseproduct(data).then((res) => {
     console.log(res, 'backPromise')
-    res.state === 200 ? filterdata.value = res.data : ''
+    res.state === 200 ? (res.data.forEach((item) => { item.name = item.school.name ? item.school.name : '暂无' }), filterdata.value = res.data) : ''
   }).catch((err) => {
     ElMessage.error('API异常,数据获取失败')
   })
@@ -1038,7 +1042,7 @@ watch(clickNum, (newv) => {
 .result-box {
   width: 100%;
   height: 45vh;
-  padding: 1% 1% 0% 2%;
+  padding: 1% 1% 0% 1%;
   border-radius: 5px;
   box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
 }

+ 53 - 30
TEAMModelOS.FunctionV4/CosmosDB/TriggerArt.cs

@@ -339,11 +339,23 @@ namespace TEAMModelOS.FunctionV4.CosmosDB
                                 studentArtResults.Add(item);
                             }
                             //根据学校编码去获取区级ID
-                            School scInfo = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{art.school}", partitionKey: new Azure.Cosmos.PartitionKey("Base"));
-                            ArtSetting setting = null;
+                            School scInfo = new();
+                            //School scInfo = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{art.school}", partitionKey: new Azure.Cosmos.PartitionKey("Base"));
+                            var response = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{art.school}", partitionKey: new Azure.Cosmos.PartitionKey("Base"));
+                            if (response.Status == 200)
+                            {
+                                using var cJson = await JsonDocument.ParseAsync(response.ContentStream);
+                                scInfo = cJson.ToObject<School>();
+                            }
+                            ArtSetting setting = new();
                             try
                             {
-                                setting = await client.GetContainer(Constant.TEAMModelOS, "Normal").ReadItemAsync<ArtSetting>($"{scInfo.areaId}", partitionKey: new Azure.Cosmos.PartitionKey("ArtSetting"));
+                                var artResponse = await client.GetContainer(Constant.TEAMModelOS, "Normal").ReadItemStreamAsync($"{scInfo.areaId}", partitionKey: new Azure.Cosmos.PartitionKey("ArtSetting"));
+                                if (response.Status == 200)
+                                {
+                                    using var json = await JsonDocument.ParseAsync(response.ContentStream);
+                                    setting = json.ToObject<ArtSetting>();
+                                }
                             }
                             catch (Exception e)
                             {
@@ -354,37 +366,48 @@ namespace TEAMModelOS.FunctionV4.CosmosDB
 
                             foreach (var rs in studentArtResults)
                             {
+                                foreach (var res in rs.results) {
+                                    if (res.quotaId.Equals("quota_21") && res.score > -1 && res.score < 95) {
+                                        /*res.score *= 1.5;
+                                        if (res.score >= 95) {
+                                            res.score = new Random().Next(90, 99);
+                                        }*/
+                                        res.score = Math.Round(res.score);
+                                    }
+                                }
                                 //if (rs.totalScore == 0)
                                 //{
-                                    foreach (var sc in rs.subjectScores)
+                                foreach (var sc in rs.subjectScores)
+                                {
+                                    //if (sc.score == 0)
+                                    //{
+                                    /* var subjectMore = rs.results.GroupBy(x => x.subjectId).Select(c => new { subject = c.Key, list = c.ToList().Select(m => new { m.quotaId,m.score}) });
+                                     var totalScore = subjectMore.Select(x => new { 
+                                         x.subject,
+                                         quotaScroe =  x.list.Select(c => new {
+                                             c.quotaId,
+                                             c.score
+                                         }),
+                                     });*/
+                                    var quotaPercent = setting.quotas.Select(x => new
                                     {
-                                        //if (sc.score == 0)
-                                        //{
-                                            /* var subjectMore = rs.results.GroupBy(x => x.subjectId).Select(c => new { subject = c.Key, list = c.ToList().Select(m => new { m.quotaId,m.score}) });
-                                             var totalScore = subjectMore.Select(x => new { 
-                                                 x.subject,
-                                                 quotaScroe =  x.list.Select(c => new {
-                                                     c.quotaId,
-                                                     c.score
-                                                 }),
-                                             });*/
-                                            var quotaPercent = setting.quotas.Select(x => new
+                                        x.id,
+                                        x.percent,
+                                        score = x.children.Select(c => new
+                                        {
+                                            real = rs.results.Where(r => r.quotaId.Equals(c.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * c.percent * 0.01,
+                                            score = c.children.Select(s => new
                                             {
-                                                x.id,
-                                                x.percent,
-                                                score = x.children.Select(c => new
-                                                {
-                                                    real = rs.results.Where(r => r.quotaId.Equals(c.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * c.percent * 0.01,
-                                                    score = c.children.Select(s => new {
-                                                        real = rs.results.Where(r => r.quotaId.Equals(s.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * s.percent * 0.01
-                                                    }).Sum(n => n.real) * c.percent * 0.01
-                                                }).Sum(n => n.real + n.score) * x.percent * 0.01
-                                            });
-                                            sc.score = Math.Round((double)quotaPercent.Sum(c => c.score),2);
-                                        //}
-                                    }
-                                    rs.totalScore = Math.Round(rs.subjectScores.Where(m => m.score >= 0).Sum(z => z.score), 2);
-                                    tasks.Add(client.GetContainer(Constant.TEAMModelOS, Constant.Student).ReplaceItemAsync(rs, rs.id, new PartitionKey(rs.code)));
+                                                real = rs.results.Where(r => r.quotaId.Equals(s.id) && r.subjectId.Equals(sc.subjectId) && r.score > -1).FirstOrDefault()?.score * s.percent * 0.01
+                                            }).Sum(n => n.real) * c.percent * 0.01
+                                        }).Sum(n => n.real + n.score) * x.percent * 0.01
+                                    });
+                                    double realScore = Math.Round((double)quotaPercent.Sum(c => c.score), 2);                                   
+                                    sc.score = realScore;
+                                    //}
+                                }
+                                rs.totalScore = Math.Round(rs.subjectScores.Where(m => m.score >= 0).Sum(z => z.score), 2);
+                                tasks.Add(client.GetContainer(Constant.TEAMModelOS, Constant.Student).ReplaceItemAsync(rs, rs.id, new PartitionKey(rs.code)));
                                 //}
                             }
                             if (tasks.Count > 0)

+ 1 - 1
TEAMModelOS.SDK/DI/CoreAPI/CoreAPIHttpService.cs

@@ -890,7 +890,7 @@ lang 语系"zh-cn" ,zh-tw", "en-us"
                 if (!string.IsNullOrEmpty(content))
                 {
                     CoreUserInfo coreUserInfo = content.ToObject<CoreUserInfo>();
-                    if (coreUserInfo != null)
+                    if (coreUserInfo != null  && !string.IsNullOrWhiteSpace(coreUserInfo.id))
                     {
                         bool isActivate = !string.IsNullOrWhiteSpace(coreUserInfo.password) || !string.IsNullOrWhiteSpace(coreUserInfo.passwordOld);
                         CoreUser coreUser = new CoreUser

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 821 - 821
TEAMModelOS/ClientApp/src/view/areaMgmt/AreaIndex.vue


+ 95 - 15
TEAMModelOS/Controllers/Both/CourseBaseController.cs

@@ -76,11 +76,11 @@ namespace TEAMModelOS.Controllers.Both
                 {
                     case bool when $"{grant_type}".Equals("list", StringComparison.OrdinalIgnoreCase):
                         {
-                            if (  !request.TryGetProperty("scope", out JsonElement _scope) || !request.TryGetProperty("code", out JsonElement _code))
+                            if (  !request.TryGetProperty("code", out JsonElement _code))
                             {
                                 return BadRequest();
                             }
-                            string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase)?Constant.School:Constant.Teacher;
+                            string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase)?Constant.School:Constant.Teacher;
                             string code = $"CourseBase-{_code}";
                             string baseSql = $"select value c from c ";
                             List<CourseBase> courseBases = new List<CourseBase>();
@@ -93,11 +93,11 @@ namespace TEAMModelOS.Controllers.Both
                         }
                     case bool when $"{grant_type}".Equals("delete", StringComparison.OrdinalIgnoreCase):
                         {
-                            if (!request.TryGetProperty("id", out JsonElement _id) || !request.TryGetProperty("scope", out JsonElement _scope) || !request.TryGetProperty("code", out JsonElement _code))
+                            if (!request.TryGetProperty("id", out JsonElement _id)  || !request.TryGetProperty("code", out JsonElement _code))
                             {
                                 return BadRequest();
                             }
-                            string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
+                            string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
                             Azure.Response response= await client.GetContainer(Constant.TEAMModelOS, tbname).DeleteItemStreamAsync(_id.ToString(), new PartitionKey($"CourseBase-{_code}"));
                             //需要联动删除排课
                             string taskCode = $"CourseTask-{_code}";
@@ -114,6 +114,63 @@ namespace TEAMModelOS.Controllers.Both
                             }
                             return  Ok(new {code= response .Status});
                         }
+                    case bool when $"{grant_type}".Equals("import-base", StringComparison.OrdinalIgnoreCase) && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase):
+                        {
+                            if (!request.TryGetProperty("courses", out JsonElement _courses))
+                            {
+                                return BadRequest();
+                            }
+                            if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
+                            List<CourseBase> courseBases = _courses.ToObject<List<CourseBase>>();
+                            //1.检查导入的课程名称是否有效
+                            StringBuilder sqlName = new StringBuilder(" select  value c from c ");
+                            sqlName.Append($" where c.name in {string.Join(",",courseBases.Select(z=>$"'{z.name}'"))}    and  c.period.id='{_periodId}' ");
+                            string tbname =  Constant.School;
+                            List<CourseBase> courseBasesDB = new List<CourseBase>();
+                            await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, tbname)
+                            .GetItemQueryIterator<CourseBase>(queryText: sqlName.ToString(), requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"CourseBase-{school}") }))
+                            {
+                                courseBasesDB.Add(item);
+                            }
+                            School schoolBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
+                            var period = schoolBase.period.Find(x => x.id.Equals($"{_periodId}"));
+                            if (period != null) {
+                                foreach (var item in courseBases)
+                                {
+                                    item.pk = "CourseBase";
+                                    if (string.IsNullOrWhiteSpace(item.id))
+                                    {
+                                        item.id = Guid.NewGuid().ToString();
+                                    }
+                                    item.scope = "school";
+                                    item.school = school;
+                                    item.creatorId = tmdid;
+                                    item.code = $"CourseBase-{school}";
+                                    item.period = new IdName { id = period.id, name = period.name };
+                                    if (!string.IsNullOrWhiteSpace(item.subject?.id))
+                                    {
+                                        var subject = period.subjects.Find(x => x.id.Equals(item.subject.id));
+                                        if (subject != null)
+                                        {
+                                            item.subject.name = subject.name;
+                                        }
+                                    }
+                                    else { 
+                                    }
+                                    var dbcoursebase = courseBasesDB.Find(x => x.name.Equals(item.name));
+                                    if (dbcoursebase != null)
+                                    {
+                                        item.id = dbcoursebase.id;
+                                        item.major = item.major == null ? dbcoursebase.major : item.major;
+                                        item.desc = string.IsNullOrWhiteSpace(item.desc) ? dbcoursebase.desc : item.desc;
+                                        item.color = string.IsNullOrWhiteSpace(item.color) ? dbcoursebase.color : item.color;
+                                        item.no = string.IsNullOrWhiteSpace(item.no) ? dbcoursebase.no : item.no;
+                                        item.grades = !item.grades.Any() ? dbcoursebase.grades : item.grades;
+                                    }
+                                }
+                            }
+                            return Ok(new { course = courseBases });
+                        }
                     case bool when $"{grant_type}".Equals("upsert", StringComparison.OrdinalIgnoreCase) :
                         {
                             if (!request.TryGetProperty("course", out JsonElement _course))
@@ -127,30 +184,53 @@ namespace TEAMModelOS.Controllers.Both
                                 courseBase.id = Guid.NewGuid().ToString();
                             }
                             string tbname = $"{courseBase.scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
+                            //1.检查导入的课程名称是否有效
+                            StringBuilder sqlName = new StringBuilder(" select  value c from c ");
+                            sqlName.Append($" where c.name ='{courseBase.name}'    ");
                             if (courseBase.scope.Equals("school", StringComparison.OrdinalIgnoreCase))
                             {
                                 courseBase.school = school;
                                 courseBase.creatorId = tmdid;
                                 courseBase.code = $"CourseBase-{school}";
+                                if (string.IsNullOrWhiteSpace(courseBase.subject?.id)  || !courseBase.grades.Any()) {
+                                    return BadRequest();
+                                }
+                                if (string.IsNullOrWhiteSpace(courseBase.period?.id))
+                                {
+                                    return BadRequest();
+                                }
+                                else {
+                                    sqlName.Append($" and  c.period.id='{courseBase.period.id}' ");
+                                }
                             }
                             else
                             {
                                 courseBase.creatorId = tmdid;
                                 courseBase.code = $"CourseBase-{tmdid}";
                             }
+                            List<CourseBase> courseBases = new List<CourseBase>();
+                            await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, tbname)
+                            .GetItemQueryIterator<CourseBase>(queryText: sqlName.ToString(), requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey(courseBase.code) }))
+                            {
+                                if (courseBase.scope.Equals(item.scope))
+                                {
+                                    //不是同一条数据,但是名字相同,则判定名字重复。
+                                    if (!item.id.Equals(courseBase.id) && item.name.Equals(courseBase.name))
+                                    {
+                                        return Ok(new { code = 409, course = courseBase });
+                                    }
+                                }
+                            }
                             await client.GetContainer(Constant.TEAMModelOS, tbname).UpsertItemAsync(courseBase, new PartitionKey(courseBase.code));
-                            return Ok(new { course = courseBase });
+                            return Ok(new {code =200, course = courseBase });
                         }
                     case bool when $"{grant_type}".Equals("read-task", StringComparison.OrdinalIgnoreCase):
                         {
-                            if (!request.TryGetProperty("scope", out JsonElement _scope))
-                            {
-                                return BadRequest();
-                            }
+                           
                             if (!request.TryGetProperty("courseId", out JsonElement _courseId)) return BadRequest();
 
-                            string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
-                            if (_scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
+                            string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
+                            if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
                             {
 
                                 if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
@@ -226,13 +306,13 @@ namespace TEAMModelOS.Controllers.Both
                                     || $"{grant_type}".Equals("change-scheduleTask", StringComparison.OrdinalIgnoreCase) 
                                     || $"{grant_type}".Equals("delete-scheduleTask", StringComparison.OrdinalIgnoreCase):
                         {
-                            if ( !request.TryGetProperty("scope", out JsonElement _scope)|| !request.TryGetProperty("datas", out JsonElement _datas))
+                            if ( !request.TryGetProperty("datas", out JsonElement _datas))
                             {
                                 return BadRequest();
                             }
-                            string tbname = $"{_scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
+                            string tbname = $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase) ? Constant.School : Constant.Teacher;
                             List<CourseTaskChanged> datas = _datas.ToObject<List<CourseTaskChanged>>();
-                            if (_scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
+                            if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
                             {
                                 if (!request.TryGetProperty("periodId", out JsonElement _periodId)) return BadRequest();
                                 //获取相关的名单
@@ -487,7 +567,7 @@ namespace TEAMModelOS.Controllers.Both
                             }
                         }
                     //按照模板导入进行数据转换并且进行检查
-                    case bool when ($"{grant_type}".Equals("import-check") && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase)):
+                    case bool when $"{grant_type}".Equals("import-check") && $"{scope}".Equals("school", StringComparison.OrdinalIgnoreCase):
                         {
                             //检查完成,生成一个检查通过的token+检查结果(pass,warn,error), 在正式导入的时候,只需要检查token是否存在则进行数据保存。 以确保每次被导入的数据都是检查通过的。
                             //并标记相关检查状态对于的具体数值。

+ 21 - 7
TEAMModelOS/Controllers/Third/LePei/LePeiController.cs

@@ -151,7 +151,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
                             userId = encryptData.userId,
                         };
                     }
-                    List<LPSchool> schools = await table.FindListByDict<LPSchool>(new Dictionary<string, object>() { { Constant.PartitionKey, $"LPSchool" }, { Constant.RowKey, encryptData.schoolId }, { "path",encryptData. path } });
+                    List<LPSchool> schools = await table.FindListByDict<LPSchool>(new Dictionary<string, object>() { { Constant.PartitionKey, $"LPSchool" }, { Constant.RowKey,$"{encryptData.schoolId}-{encryptData.appId}" }, { "path",encryptData. path } });
                     if (schools.IsNotEmpty()) 
                     {
                         teacherLP.schoolCode = schools[0].schoolCode;
@@ -225,7 +225,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
             }
             var rurl = new StringBuilder($"https://{HostName}/lepei-sso");
             var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
-            List<LPConfig> configs = await table.FindListByDict<LPConfig>(new Dictionary<string, object>() { { Constant.PartitionKey, $"LPConfig-{sso.appId}" }, { Constant.RowKey,path } });
+            List<LPSchool> configs = await table.FindListByDict<LPSchool>(new Dictionary<string, object>() { { Constant.PartitionKey, "LPSchool" }, { Constant.RowKey,$"{sso.schoolId}-{sso.appId}"}, { "path",path } });
             LPTeacher teacher = null;
             int status = 4;//1项目未配置,2 账号未未关联,3账号已关联
             string msg = "账号未关联";
@@ -234,7 +234,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
             if (configs.Any())
             {
 
-                LPConfig config = configs[0];
+                LPSchool config = configs[0];
                 string data = AESHelper.Decryptor(sso.encryptData, config.secretKey, config.secretKey.Substring(0, 16));
                 encryptData = data.ToObject<LPSSOEncryptData>();
                 encryptData.path = path;
@@ -269,7 +269,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
                 {
                     if (!string.IsNullOrWhiteSpace(encryptData.mobile))
                     {
-                        List<LPSchool> schools = await table.FindListByDict<LPSchool>(new Dictionary<string, object>() { { Constant.PartitionKey, $"LPSchool" }, { Constant.RowKey, encryptData.schoolId }, { "path", path } });
+                        List<LPSchool> schools = await table.FindListByDict<LPSchool>(new Dictionary<string, object>() { { Constant.PartitionKey, $"LPSchool" }, { Constant.RowKey, $"{sso.schoolId}-{sso.appId}" }, { "path", path } });
                         if (schools.IsNotEmpty())
                         {
                             teacher = new LPTeacher()
@@ -362,7 +362,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
             if (status == 200)
             {
                 rurl.Append($"?status={status}&msg={HttpUtility.UrlEncode(msg, Encoding.UTF8)}&id_token={implicit_token?.id_token}&access_token={implicit_token?.access_token}&expires_in={HttpUtility.UrlEncode(implicit_token?.expires_in)}&token_type={HttpUtility.UrlEncode(implicit_token?.token_type)}").ToString();
-#if DEBUG
+#if !DEBUG
                 return Redirect(rurl.ToString());
 #else
                 return Ok(new { code = 200, message = msg, data = rurl.ToString() });
@@ -371,7 +371,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
             else if (status == 4) {
                 msg = $"教师账号:{encryptData.userId},{encryptData.mobile}未关联";
                 rurl.Append($"?status={status}&msg={HttpUtility.UrlEncode(msg, Encoding.UTF8)}&mobile={encryptData.mobile}&param={HttpUtility.UrlEncode(encryptData.ToJsonString(), Encoding.UTF8)}");
-#if DEBUG
+#if !DEBUG
                 return Redirect(rurl.ToString());
 #else
                 return Ok(new { code = 200, message = msg, data = rurl.ToString() });
@@ -380,7 +380,7 @@ namespace TEAMModelOS.Controllers.Third.LePei
             else
             {
                 rurl.Append($"?status={status}&msg={HttpUtility.UrlEncode(msg, Encoding.UTF8)}");
-#if DEBUG
+#if !DEBUG
                 return  Redirect(rurl.ToString());
 #else
                 return Ok(new { code = 400, message = msg, data =rurl.ToString() });
@@ -539,6 +539,8 @@ namespace TEAMModelOS.Controllers.Third.LePei
         /// {path}/lepei-sso 中的path
         /// </summary>
         public string path { get; set; }
+        public string appId { get; set; }
+        public string secretKey { get; set; }
     }
     [TableName(Name = "ScYxpt")]
     public class LPConfig : TableEntity
@@ -554,4 +556,16 @@ namespace TEAMModelOS.Controllers.Third.LePei
         public  string appId { get; set;}
         public string secretKey { get; set; }
     }
+    /*
+     * https://easydoc.net/doc/61463617/Ufnsdona/k3Zb68pX
+     	新津区外国语实验学校
+乐陪学校ID:115
+乐陪appId:1602542204202872832
+乐陪密钥:Pk5Bmb4dl8aFYR5ezbgGpjdpXS4aFp4l
+
+	新津区五津初级中学  
+乐陪学校ID:116
+乐陪appId:1602542306216734720
+乐陪密钥:R7mCHT2QlidOxF8MasKjSKeWmaKXGOvG
+     */
 }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 6 - 6
TEAMModelOS/Controllers/XTest/FixDataController.cs


+ 28 - 28
TEAMModelOS/appsettings.Development.json

@@ -22,43 +22,43 @@
   },
   "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://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc=",
-    //  "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://coreiotservicebuscnpro.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=llRPBMDJG9w1Nnifj+pGhV0g4H2REcq0PjvX2qqpcOg=",
-      "ActiveTask": "active-task",
-      "ItemCondQueue": "itemcond",
-      "GenPdfQueue": "genpdf"
+      "ConnectionString": "Endpoint=sb://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc=",
+      "ActiveTask": "dep-active-task",
+      "ItemCondQueue": "dep-itemcond",
+      "GenPdfQueue": "dep-genpdf"
     },
     "SignalR": {
-      "ConnectionString": "Endpoint=https://channel.signalr.azure.cn;AccessKey=AtcB7JYFNUbUXb1rGxa3PVksQ2X5YSv3JOHZR9J88tw=;Version=1.0;"
-    }
+      "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;"
+    //}
   },
   "HaBookAuth": {
     "CoreId": {