Browse Source

返回标准/

CrazyIter_Bin 3 years ago
parent
commit
fcf9e32670

+ 0 - 4
TEAMModelOS.SDK/Models/Cosmos/Common/Homework.cs

@@ -102,8 +102,6 @@ namespace TEAMModelOS.SDK.Models
         public List<Submits> teachers { get; set; } = new List<Submits>();
         public string recordUrl { get; set; }
     }
-    
- 
 
     public class Submits {
         public string id { get; set; }
@@ -112,6 +110,4 @@ namespace TEAMModelOS.SDK.Models
         public string hw { get; set; }
         public long hwTime { get; set; }
     }
-
-    
 }

+ 2 - 0
TEAMModelOS.SDK/Models/Cosmos/Student/HomeworkRecord.cs

@@ -36,6 +36,8 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public List<Attachment> content { get; set; } = new List<Attachment>();
         public int submitCount { get; set; } = 0;
+
+        public string comid { get; set; }
     }
     
     /// <summary>

+ 43 - 19
TEAMModelOS/Controllers/Common/HomeworkController.cs

@@ -423,18 +423,17 @@ namespace TEAMModelOS.Controllers.Learn
                 {   
                     //作答记录
                     case bool when $"{_opt}".Equals("AnswerRecord", StringComparison.OrdinalIgnoreCase):
-                        if (!request.TryGetProperty("userid", out JsonElement _userid)) return BadRequest();
-                        if (!request.TryGetProperty("userType", out JsonElement _userType)) return BadRequest();
-                        
-                        string partition = $"HomeworkRecord-{userid}";
-                        if ($"{_userType}".Equals("student"))
-                        {
-                            request.TryGetProperty("userSchool", out JsonElement _userSchool);
-                            partition = $"HomeworkRecord-{_userSchool}-{userid}";
-                        }
-                       
                         try
-                        {
+                        {   // userType 为student 时,userid 为校内账号,且userSchool 需要有学校编码。
+                            //userType 为tmdid 时,userid 为醍摩豆账号,且userSchool 可以为空。
+                            if (!request.TryGetProperty("userid", out JsonElement _userid)) return BadRequest();
+                            if (!request.TryGetProperty("userType", out JsonElement _userType)) return BadRequest();
+                            string partition = $"HomeworkRecord-{_userid}";
+                            if ($"{_userType}".Equals("student"))
+                            {
+                                request.TryGetProperty("userSchool", out JsonElement _userSchool);
+                                partition = $"HomeworkRecord-{_userSchool}-{_userid}";
+                            }
                             HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(partition));
                             await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record, $"{_id}", new PartitionKey(partition));
                             return Ok(new { record });
@@ -479,13 +478,15 @@ namespace TEAMModelOS.Controllers.Learn
                                         pk = "HomeworkRecord",
                                         ttl = -1,
                                         time = now,
-                                        submitCount = 1
+                                        submitCount = 1,
+                                        comid = Guid.NewGuid().ToString()
                                     };
                                     record = await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync<HomeworkRecord>(record, new PartitionKey(partitionKey));
                                     taskStatus = 1;
                                     msgid = 1;
                                 }
                             }
+                            //TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO 
                             try
                             {
                                 if ($"{_scope}".Equals(Constant.ScopeStudent)) {
@@ -516,11 +517,25 @@ namespace TEAMModelOS.Controllers.Learn
                             return Ok(new { msgid, taskStatus ,error =400});
                         }
                     //评论
-                    case bool when $"{_opt}".Equals("Comment", StringComparison.OrdinalIgnoreCase):
+                    case bool when $"{_opt}".Equals("CommentAndStar", StringComparison.OrdinalIgnoreCase):
                         try
                         {
-                            string partitionkey = "";
-                            HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(partitionkey));
+
+                            // userType 为student 时,userid 为校内账号,且userSchool 需要有学校编码。
+                            //userType 为tmdid 时,userid 为醍摩豆账号,且userSchool 可以为空。
+                            if (!request.TryGetProperty("userid", out JsonElement __userid)) return BadRequest();
+                            if (!request.TryGetProperty("userType", out JsonElement __userType)) return BadRequest();
+                            string _partition = $"HomeworkRecord-{__userid}";
+                            if ($"{__userType}".Equals("student"))
+                            {
+                                request.TryGetProperty("userSchool", out JsonElement _userSchool);
+                                _partition = $"HomeworkRecord-{_userSchool}-{__userid}";
+                            }
+                            if (!request.TryGetProperty("comment", out JsonElement _comment)) return BadRequest();
+                            if (!request.TryGetProperty("star", out JsonElement _star)) return BadRequest();
+                            HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(_partition));
+                            ///话题对象,id为学生的作答记录的comid ,根据scope确定,  code 为Debate-{schoolId},作业活动所在的学校编码|Debate-{teacherId},作业活动所在的教师编码
+                            
                             return Ok(new { error = 404 });
                         }
                         catch (CosmosException ex)
@@ -533,12 +548,21 @@ namespace TEAMModelOS.Controllers.Learn
                     //打分
                     case bool when $"{_opt}".Equals("MarkScore", StringComparison.OrdinalIgnoreCase):
                         try
-                        {
-                            string pkey = "";
-                            HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(pkey));
+                        {   
+                            // userType 为student 时,userid 为校内账号,且userSchool 需要有学校编码。
+                            //userType 为tmdid 时,userid 为醍摩豆账号,且userSchool 可以为空。
+                            if (!request.TryGetProperty("userid", out JsonElement __userid)) return BadRequest();
+                            if (!request.TryGetProperty("userType", out JsonElement __userType)) return BadRequest();
+                            string _partition = $"HomeworkRecord-{__userid}";
+                            if ($"{__userType}".Equals("student"))
+                            {
+                                request.TryGetProperty("userSchool", out JsonElement _userSchool);
+                                _partition = $"HomeworkRecord-{_userSchool}-{__userid}";
+                            }
+                            HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(_partition));
                             if (!request.TryGetProperty("score", out JsonElement _score)) return BadRequest();
                             record.score = double.Parse($"{_score}");
-                            await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record, $"{_id}", new PartitionKey(pkey));
+                            await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record, $"{_id}", new PartitionKey(_partition));
                             return Ok(new { status = true });
                         }
                         catch (CosmosException ex)

+ 16 - 2
TEAMModelOS/Controllers/Teacher/InitController.cs

@@ -158,7 +158,7 @@ namespace TEAMModelOS.Controllers
                 jwt.Payload.TryGetValue("name", out object name);
                 jwt.Payload.TryGetValue("picture", out object picture);
                 List<object> schools = new List<object>();
-                List<TeacherArea> areas = new List<TeacherArea>();
+                List<dynamic> areas = new List<dynamic>();
                 string defaultschool = null;
                 //TODO 取得Teacher 個人相關數據(課程清單、虛擬教室清單、歷史紀錄清單等),學校數據另外API處理,多校切換時不同
                 var client = _azureCosmos.GetCosmosClient();
@@ -173,7 +173,21 @@ namespace TEAMModelOS.Controllers
                     tsize = teacher.size;
                     ///教师的总空间 包含 个人空间和学校赠送的空间累加
                     total = teacher.size;
-                    areas = teacher.areas;
+                    //areas = teacher.areas;
+                    if (teacher.areas.IsNotEmpty()) {
+                        foreach (var areat in teacher.areas) {
+                            try
+                            {
+                                Area area = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<Area>($"{areat.areaId}", new PartitionKey("Base-Area"));
+                                areas.Add(new { areaId=area.id,name=area.name,area.standard,area.standardName });
+                            }
+                            catch (CosmosException)
+                            {   
+                                //数据库捞不到数据
+                                continue;
+                            }
+                        }
+                    }
                     //检查是否有加入学校,如果加入学校,则当个人空间size是0G的时候,则免费获得一个G空间,但无论加入多少个学校,只能获取一次 1G的免费空间。没有加入学校则默认0G空间,除非自己购买空间
                     if (teacher.schools.IsNotEmpty())
                     {