Browse Source

Merge branch 'develop5.0-tmd' of http://106.12.23.251:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

OnePsycho 3 năm trước cách đây
mục cha
commit
a077a24eef

+ 2 - 2
TEAMModelFunction/MonitorServicesBus.cs

@@ -131,8 +131,8 @@ namespace TEAMModelFunction
                         await _azureRedis.GetRedisClient(8).SortedSetRemoveAsync($"Blob:Catalog:{name}", key);
                         await _azureRedis.GetRedisClient(8).SortedSetIncrementAsync($"Blob:Catalog:{name}", key, size.Item2[key].HasValue ? size.Item2[key].Value : 0);
                     }
-                    await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Blob() 容器:{name}使用:{size.Item1},文件分类:{size.Item2.ToJsonString()}",
-                            GroupNames.成都开发測試群組);
+                    //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Blob() 容器:{name}使用:{size.Item1},文件分类:{size.Item2.ToJsonString()}",
+                    //        GroupNames.成都开发測試群組);
                 }
             }
             catch (Exception ex)

+ 6 - 6
TEAMModelOS.SDK/Models/Service/StuListService.cs

@@ -59,7 +59,7 @@ namespace TEAMModelFunction
                         datas.Add(item);
                     }
                 }
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixActivity\n名单发生变更:涉及活动类型变更的 \n{datas.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+              //  await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixActivity\n名单发生变更:涉及活动类型变更的 \n{datas.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                 foreach (MQActivity activity in datas)
                 {
                     //已经完结的不再允许加入
@@ -91,7 +91,7 @@ namespace TEAMModelFunction
                             taskStatus = -1,
                             classIds = classes
                         };
-                        await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixActivity\n名单发生变更 新建活动中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                     //   await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixActivity\n名单发生变更 新建活动中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                         await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
                     }//tmd新加入的
                     foreach (string tmdid in stuListChange.tmdjoin)
@@ -116,7 +116,7 @@ namespace TEAMModelFunction
                             taskStatus = -1,
                             classIds = classes
                         }; 
-                        await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixActivity\n名单发生变更 新建活动中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                      //  await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixActivity\n名单发生变更 新建活动中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                         await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
                     }
                     foreach (Students students in stuListChange.stuleave)
@@ -171,7 +171,7 @@ namespace TEAMModelFunction
                     courses.Add(item);
                 }
             }
-            await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixStuCourse\n名单发生变更 需要处理的课程\n{courses.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+           // await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixStuCourse\n名单发生变更 需要处理的课程\n{courses.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
             //2.获取课程的id 并尝试添加或移除对应的学生课程记录StuCourse。
             foreach (var course in courses)
             {
@@ -191,7 +191,7 @@ namespace TEAMModelFunction
                         stulist = new List<string> { stuListChange.listid },
                         createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
                     };
-                    await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixStuCourse\n名单发生变更 新建课程中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                   // await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixStuCourse\n名单发生变更 新建课程中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                     await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
                 }
                 //tmd新加入的
@@ -210,7 +210,7 @@ namespace TEAMModelFunction
                         stulist= new List<string> { stuListChange .listid},
                         createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
                     };
-                    await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixStuCourse\n名单发生变更 新建课程中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                   // await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StuListService-FixStuCourse\n名单发生变更 新建课程中间表\n{stucourse.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                     await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
                 }
                 //移除名单的。 在点击相关的课程,再去二次校验是否存在,不存在则再去删除。

+ 15 - 11
TEAMModelOS/ClientApp/src/common/UploadModal.vue

@@ -150,7 +150,7 @@ export default {
         listDelFile(index) {
             if (this.uploadedList[index].status === 0) {
                 this.uploadedList.splice(index, 1)
-            }else if(this.uploadedList[index].blob){
+            } else if (this.uploadedList[index].blob) {
                 this.deleteFile(index)
             }
             console.log(this.uploadedList[index])
@@ -243,6 +243,8 @@ export default {
                     let blobs = blobsFile.map(item => {
                         return item.blob
                     })
+                    blobs = blobs.filter(item => { return item })
+                    console.log('取消', blobs)
                     this.containerClient.deleteBlobBatch(blobs).then().finally(() => {
                         blobsFile.forEach((item) => {
                             if (item.type == 'image') {
@@ -273,16 +275,18 @@ export default {
 
                 if (prefixFiles.length) {
                     prefixFiles.forEach(item => {
-                        this.$api.blob.deletePrefix({
-                            cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
-                            prefix: `res/${item.name.replace('.HTEX', '')}`
-                        }).then(
-                            res => {
-                            },
-                            err => {
-                                this.$Message.error(this.$t('updModal.cancelErr'))
-                            }
-                        )
+                        if (item.blob) {
+                            this.$api.blob.deletePrefix({
+                                cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
+                                prefix: `res/${item.name.replace('.HTEX', '')}`
+                            }).then(
+                                res => {
+                                },
+                                err => {
+                                    this.$Message.error(this.$t('updModal.cancelErr'))
+                                }
+                            )
+                        }
                     })
                     this.uploadedList = []
                 }

+ 1 - 1
TEAMModelOS/ClientApp/src/css/disabled-iview-form.less

@@ -4,7 +4,7 @@
         display: none;
     }
 
-    .ivu-icon-ios-arrow-down:before {
+    .ivu-select-disabled .ivu-icon-ios-arrow-down:before {
         display: none;
     }
 

+ 1 - 1
TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.vue

@@ -627,7 +627,7 @@ export default {
         },
     },
     beforeRouteLeave(to, from, next) {
-        let comp = this.$refs['score-box'].$refs['byStuMark']
+        let comp = this.$refs['score-box'] ? this.$refs['score-box'].$refs['byStuMark'] : undefined
         if (comp && comp.isUpd) {
             this.$Modal.confirm({
                 title: '保存分数',

+ 5 - 1
TEAMModelOS/ClientApp/src/view/newcourse/ClassTable.vue

@@ -409,13 +409,17 @@ export default {
             }
         },
         getSubIndex() {
-            // this.subIndex = 1
+            let flag = true
             for (let index in this.timetable) {
                 if (index > 0 && parseInt(this.timetable[index].time.substr(0, 2)) > 12) {
                     this.subIndex = parseInt(index)
+                    flag = false
                     break
                 }
             }
+            if(flag){
+                this.subIndex = this.timetable.length
+            }
         },
         //获取课程列表
         getCourseList() {

+ 17 - 26
TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/SystemSetting.vue

@@ -238,7 +238,7 @@
                                         <span>{{$t('schoolBaseInfo.incomeLable')}}</span>
                                     </p>
                                     <div class="attr-content" @click.stop>
-                                        <InputNumber :max="100" :min="0" :disabled="!editAnaStatus" v-model="schoolSetting.period[curPriodIndex].analysis.income" :formatter="value => `${value}%`" :parser="value => value.replace('%', '')"></InputNumber>
+                                        <InputNumber :precision="0" :max="100" :min="0" :disabled="!editAnaStatus" v-model="schoolSetting.period[curPriodIndex].analysis.income" :formatter="value => `${value}%`" :parser="value => value.replace('%', '')"></InputNumber>
                                     </div>
                                 </div>
                                 <div class="attr-box-item">
@@ -249,7 +249,7 @@
                                         <span>{{$t('schoolBaseInfo.touchLabel')}}</span>
                                     </p>
                                     <div class="attr-content" @click.stop>
-                                        <InputNumber :max="100" :min="0" :disabled="!editAnaStatus" v-model="schoolSetting.period[curPriodIndex].analysis.touch" :formatter="value => `${value}${$t('schoolBaseInfo.scoreUnit')}`" :parser="value => value.replace($t('schoolBaseInfo.scoreUnit'), '')"></InputNumber>
+                                        <InputNumber :precision="0" :max="100" :min="0" :disabled="!editAnaStatus" v-model="schoolSetting.period[curPriodIndex].analysis.touch" :formatter="value => `${value}${$t('schoolBaseInfo.scoreUnit')}`" :parser="value => value.replace($t('schoolBaseInfo.scoreUnit'), '')"></InputNumber>
                                     </div>
                                 </div>
                             </div>
@@ -613,34 +613,19 @@ export default {
 
             // 检查年级名称
             curPd.grades.forEach((item, index) => {
+                // 重复检查
                 if (curPd.grades.indexOf(item) !== index) {
                     this.$Message.warning(this.$t('schoolBaseInfo.gdNameWarning'))
                     isRep = true
                 }
+                //空检查
+                if (!item) {
+                    isRep = true
+                    this.$Message.warning('请设置年级名称')
+                }
             })
-            // let gradeName = curPd.grades.map(item => {
-            //     return item.name
-            // })
-            // gradeName.forEach((item, index) => {
-            //     if (gradeName.indexOf(item) != index) {
-            //         isRep = true
-            //         this.$Message.warning(this.$t('schoolBaseInfo.gdNameWarning'))
-            //     }
-            // })
             if (isRep) return false
 
-            // 检查学科名称 学科逻辑调整后与年级学期不同
-            // let subName = curPd.subjects.map(item => {
-            //     return item.name
-            // })
-            // subName.forEach((item, index) => {
-            //     if (subName.indexOf(item) != index) {
-            //         isRep = true
-            //         this.$Message.warning(this.$t('schoolBaseInfo.subWarning'))
-            //     }
-            // })
-            // if (isRep) return
-
             // 检查考试名称
             let exName = curPd.analysis.type.map(item => {
                 return item.name
@@ -680,11 +665,17 @@ export default {
             })
             if (isRep) return false
 
+            // 检查学情设置
+            let analysis = curPd.analysis
+            if(!analysis.income || !analysis.touch){
+                this.$Message.warning('请完善学情设置')
+                return false
+            }
+
             //检查校区名称为空
             let campusName = this.schoolSetting.campuses.map(item => {
                 return item.name
             })
-            //空检查
             campusName.forEach((item, index) => {
                 if (!item) {
                     isRep = true
@@ -1274,8 +1265,8 @@ export default {
             })
         },
         addGrade() {
-            this.schoolSetting.period[this.curPriodIndex].grades.push((this.schoolSetting.period[this.curPriodIndex].grades.length + 1) + this.$t('schoolBaseInfo.persetGrade'))
-            // this.editGraStatus = true
+            // this.schoolSetting.period[this.curPriodIndex].grades.push((this.schoolSetting.period[this.curPriodIndex].grades.length + 1) + this.$t('schoolBaseInfo.persetGrade'))
+            this.schoolSetting.period[this.curPriodIndex].grades.push('')
             this.etGradeIndex = this.schoolSetting.period[this.curPriodIndex].grades.length - 1
         },
         addPeriod() {

+ 4 - 1
TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/TimeSetting.vue

@@ -34,7 +34,7 @@
                     <Input v-model="timeNode.label" :placeholder="$t('cusMgt.timeHolder')" style="width: 240px"></Input>
                 </FormItem>
                 <FormItem :label="$t('cusMgt.startLabel')" prop="start">
-                    <TimePicker v-model="timeNode.start" :steps="[1, 5]" format="HH:mm" placeholder="00:00" style="width: 240px"></TimePicker>
+                    <TimePicker v-model="timeNode.start" @on-change="setEndTime" :steps="[1, 5]" format="HH:mm" placeholder="00:00" style="width: 240px"></TimePicker>
                 </FormItem>
                 <FormItem :label="$t('cusMgt.endLabel')" v-show="timeNode.start">
                     <TimePicker :disabled-hours="disabledHours" :disabled-minutes="disabledMinutes" v-model="timeNode.end" :steps="[1, 5]" format="HH:mm" placeholder="00:00" style="width: 240px"></TimePicker>
@@ -95,6 +95,9 @@ export default {
         }
     },
     methods: {
+        setEndTime(time){
+            this.timeNode.end = time
+        },
         selectTimeNode(index) {
             this.curTmIndex = index
         },

+ 1 - 1
TEAMModelOS/Controllers/Client/HiTeachController.cs

@@ -91,7 +91,7 @@ namespace TEAMModelOS.Controllers.Client
                                 var schoolJson = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{obj.GetProperty("schoolId")}", new PartitionKey("Base"));
                                 var school = await JsonDocument.ParseAsync(schoolJson.ContentStream);
                                 schoolExtobj.schoolId = obj.GetProperty("schoolId");
-                                schoolExtobj.name = obj.GetProperty("name");
+                                schoolExtobj.name = school.RootElement.GetProperty("name");
                                 schoolExtobj.status = obj.GetProperty("status");
                                 schoolExtobj.picture = school.RootElement.GetProperty("picture");
                                 schools.Add(schoolExtobj);

+ 10 - 9
TEAMModelOS/Controllers/Common/SurveyController.cs

@@ -71,7 +71,7 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("upsert")]
-        [AuthToken(Roles = "teacher,admin")]
+        [AuthToken(Roles = "teacher,admin", Permissions = "schoolAc-upd")]
         public async Task<IActionResult> Upsert(Survey request) {
             try {
                 var client = _azureCosmos.GetCosmosClient();
@@ -195,7 +195,7 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("find")]
-        [AuthToken(Roles = "teacher,admin")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> Find(JsonElement requert)
         {
             try {
@@ -315,7 +315,7 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("find-id")]
-        [AuthToken(Roles = "teacher,admin,student")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> FindById(JsonElement requert)
         {
             Survey survey = null;
@@ -353,7 +353,7 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("delete")]
-        [AuthToken(Roles = "admin,teacher")]
+        [AuthToken(Roles = "teacher,admin", Permissions = "schoolAc-upd")]
         public async Task<IActionResult> Delete(JsonElement request)
         {
             try
@@ -422,7 +422,7 @@ namespace TEAMModelOS.Controllers
         /// </returns>
         [ProducesDefaultResponseType]
         [HttpPost("answer")]
-        [AuthToken(Roles = "teacher,student")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-upd,schoolAc-read")]
         public async Task<IActionResult> Answer(JsonElement request)
         {
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
@@ -449,7 +449,8 @@ namespace TEAMModelOS.Controllers
         /// </returns>
         [ProducesDefaultResponseType]
         [HttpPost("answered-list")]
-        [AuthToken(Roles = "teacher,student")]
+       
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-upd,schoolAc-read")]
         public async Task<IActionResult> AnsweredList(JsonElement request)
         {
             //  var (userid, _, _, _) = HttpContext.GetAuthTokenInfo();
@@ -487,8 +488,8 @@ namespace TEAMModelOS.Controllers
         /// msgid=0投票失败,1提交成功,2不在时间范围内,3不在发布范围内,6未设置投票项
         /// </returns>
         [ProducesDefaultResponseType]
-        [HttpPost("answered")]
-        [AuthToken(Roles = "teacher,student")]
+        [HttpPost("answered")] 
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-upd,schoolAc-read")]
         public async Task<IActionResult> Answered(JsonElement request)
         {
              var (userid, _, _, _) = HttpContext.GetAuthTokenInfo();
@@ -523,7 +524,7 @@ namespace TEAMModelOS.Controllers
         /// </returns>
         [ProducesDefaultResponseType]
         [HttpPost("record")]
-        [AuthToken(Roles = "admin,teacher,student")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-upd,schoolAc-read")]
         public async Task<IActionResult> Record(JsonElement request)
         {
             if (!request.TryGetProperty("id", out JsonElement id))

+ 9 - 8
TEAMModelOS/Controllers/Common/VoteController.cs

@@ -67,7 +67,7 @@ namespace TEAMModelOS.Controllers.Learn
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("upsert")]
-        [AuthToken(Roles = "teacher,admin")]
+        [AuthToken(Roles = "teacher,admin",Permissions = "schoolAc-upd")]
         public async Task<IActionResult> Upsert(Vote request)
         {
             try
@@ -196,7 +196,7 @@ namespace TEAMModelOS.Controllers.Learn
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("find")]
-        [AuthToken(Roles = "teacher,admin")]
+        [AuthToken(Roles = "teacher,admin", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> Find(JsonElement requert)
         {
             try
@@ -299,7 +299,7 @@ namespace TEAMModelOS.Controllers.Learn
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("find-id")]
-        [AuthToken(Roles = "teacher,admin,student")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> FindById(JsonElement requert)
         {
             Vote vote = null;
@@ -337,7 +337,8 @@ namespace TEAMModelOS.Controllers.Learn
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("delete")]
-        [AuthToken(Roles = "admin,teacher")]
+ 
+        [AuthToken(Roles = "teacher,admin", Permissions = "schoolAc-upd")]
         public async Task<IActionResult> Delete(JsonElement request)
         {
             try
@@ -406,8 +407,8 @@ namespace TEAMModelOS.Controllers.Learn
         /// <returns>
         /// </returns>
         [ProducesDefaultResponseType]
-        [HttpPost("record")]
-        [AuthToken(Roles = "teacher,admin,student")]
+        [HttpPost("record")] 
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> Record(JsonElement request)
         {
             if (!request.TryGetProperty("id", out JsonElement id))
@@ -447,7 +448,7 @@ namespace TEAMModelOS.Controllers.Learn
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("decided")]
-        [AuthToken(Roles = "teacher,student")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> Decided(JsonElement request)
         {
             var (userid, _, _, _) = HttpContext.GetAuthTokenInfo();
@@ -490,7 +491,7 @@ namespace TEAMModelOS.Controllers.Learn
         /// </returns>
         [ProducesDefaultResponseType]
         [HttpPost("decide")]
-        [AuthToken(Roles = "teacher,student")]
+        [AuthToken(Roles = "teacher,admin,student", Permissions = "schoolAc-read,schoolAc-upd")]
         public async Task<IActionResult> Decide(JsonElement request)
         {
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();

+ 3 - 2
TEAMModelOS/Controllers/Core/BlobController.cs

@@ -66,7 +66,7 @@ namespace TEAMModelOS.Controllers.Core
         /// <param name="request"></param>
         /// <returns></returns>
         [HttpPost("public-upload")]
-        //[AuthToken(Roles = "teacher,admin")]
+        [AuthToken(Roles = "teacher,admin")]
         [RequestSizeLimit(102_400_000_00)] //最大10000m左右
         public async Task<IActionResult> PublicUpload([FromForm] IFormFile file)
         {
@@ -736,7 +736,7 @@ namespace TEAMModelOS.Controllers.Core
             List<string> paths = new List<string>();
             //文件的容器
             if (!json.TryGetProperty("cntr", out JsonElement _cntr)) return BadRequest();
-            //业务存取类型 exam,vote,survey,item,paper,syllabus,records,content(doc,image,res,video,audio,other),thum,train,temp,jyzx
+            //业务存取类型 exam,vote,survey,item,paper,syllabus,records,avatar,content(doc,image,res,video,audio,other),thum,train,temp,jyzx
             if (!json.TryGetProperty("type", out JsonElement _type)) return BadRequest();
             //文件前缀prefix
             switch (true)
@@ -772,6 +772,7 @@ namespace TEAMModelOS.Controllers.Core
                     || $"{_type}".Equals("thum", StringComparison.OrdinalIgnoreCase)
                     || $"{_type}".Equals("temp", StringComparison.OrdinalIgnoreCase)
                     || $"{_type}".Equals("jyzx", StringComparison.OrdinalIgnoreCase)
+                    || $"{_type}".Equals("avatar", StringComparison.OrdinalIgnoreCase)
                     || $"{_type}".Equals("train", StringComparison.OrdinalIgnoreCase):
                     break;
                 default:

+ 2 - 2
TEAMModelOS/Controllers/School/NoticeController.cs

@@ -191,11 +191,11 @@ namespace TEAMModelOS.Controllers
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [HttpPost("delete")]
-        [AuthToken(Roles = "admin,teacher")]
+       // [AuthToken(Roles = "admin",Permissions = "teacher-upd")]
         public async Task<IActionResult> Delete(JsonElement request) {
             try
             {
-                var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
+               // var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
                 if (!request.TryGetProperty("id", out JsonElement id)) return BadRequest();
                 if (!request.TryGetProperty("code", out JsonElement code)) return BadRequest();
                 var client = _azureCosmos.GetCosmosClient();

+ 20 - 4
TEAMModelOS/Controllers/Syllabus/ShareController.cs

@@ -73,10 +73,18 @@ namespace TEAMModelOS.Controllers
 
             try {
                 var client = _azureCosmos.GetCosmosClient();
+                Syllabus syllabusD = null;
                 //需要判断id== req.issuer  才能进行授权操作
                 if (request.scope.Equals("school"))
                 {
-                    Syllabus syllabusD = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<Syllabus>(request.syllabusId, new PartitionKey($"Syllabus-{request.school}"));
+                    try {
+                          syllabusD = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<Syllabus>(request.syllabusId, new PartitionKey($"Syllabus-{request.school}"));
+                    } catch (CosmosException ex) {
+                        if (ex.Status == 404) {
+                            await _dingDing.SendBotMsg($"OS,{_option.Location},teacher/share/to\n{ex.Message}{ex.StackTrace}{request.ToJsonString()}", GroupNames.成都开发測試群組);
+                            return Ok(new { code = 404 });
+                        }
+                    }
                     if (request.opt .Equals("del"))
                     {
                         if (syllabusD.auth.IsNotEmpty())
@@ -133,13 +141,21 @@ namespace TEAMModelOS.Controllers
                             var code = await _notificationService.SendNotification(clientID, clientSecret, location, url, notification);
                         }
                         await client.GetContainer(Constant.TEAMModelOS, "School").UpsertItemAsync<Syllabus>(syllabus, new PartitionKey($"Syllabus-{request.school}"));
-
-
                     }
                 }
                 else if (request.scope.Equals("private"))
                 {
-                    Syllabus syllabusD = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<Syllabus>(request.syllabusId, new PartitionKey($"Syllabus-{request.issuer}"));
+                    try { 
+                      syllabusD = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<Syllabus>(request.syllabusId, new PartitionKey($"Syllabus-{request.issuer}"));
+                    }
+                    catch (CosmosException ex)
+                    {
+                        if (ex.Status == 404)
+                        {
+                            await _dingDing.SendBotMsg($"OS,{_option.Location},teacher/share/to\n{ex.Message}{ex.StackTrace}{request.ToJsonString()}", GroupNames.成都开发測試群組);
+                            return Ok(new { code = 404 });
+                        }
+                    }
                     if (request.opt .Equals("del"))
                     {
                         if (syllabusD.auth.IsNotEmpty())