Bläddra i källkod

作业活动评论。

CrazyIter_Bin 3 år sedan
förälder
incheckning
f9b3488848

+ 1 - 0
TEAMModelOS.SDK/Models/Cosmos/School/Debate.cs

@@ -111,6 +111,7 @@ namespace TEAMModelOS.SDK.Models
         /// 回复者的昵称
         /// </summary>
         public string tmdname { get; set; }
+
         /// <summary>
         /// 回复的评语
         /// </summary>

+ 8 - 9
TEAMModelOS.SDK/Models/Cosmos/Student/HomeworkRecord.cs

@@ -45,26 +45,25 @@ namespace TEAMModelOS.SDK.Models
     /// </summary>
     public class HomeworkComment {
         /// <summary>
-        /// 身份类型  校内学生账号 student   醍摩豆账号 tmdid  
+        /// 身份类型   student  teacher
         /// </summary>
-        public string idtype { get; set; }
+        public string identity { get; set; }
+
+        public string userType { get; set; }
+        
         /// <summary>
         /// 评论人的id
         /// </summary>
-        public string id { get; set; }
+        public string userid { get; set; }
         /// <summary>
         /// 评论人
         /// </summary>
-        public string name { get; set; }
+        public string username { get; set; }
         /// <summary>
         /// 学校
         /// </summary>
         public string school { get; set; }
-        /// <summary>
-        /// 评分
-        /// </summary>
-        public int score { get; set; } = -1;
+        public double star { get; set; }
         public List<string> replyIds { get; set; } = new List<string>();
-        public long time { get; set; }
     }
 }

+ 90 - 5
TEAMModelOS/Controllers/Common/HomeworkController.cs

@@ -399,7 +399,7 @@ namespace TEAMModelOS.Controllers.Learn
         {
             if (!HttpContext.Items.TryGetValue("Scope", out object _scope)) return BadRequest();
             var client = _azureCosmos.GetCosmosClient();
-            var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
+            var (userid, name, _, school) = HttpContext.GetAuthTokenInfo();
             long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
             if (!request.TryGetProperty("opt", out JsonElement _opt)) return BadRequest();
             if (!request.TryGetProperty("id", out JsonElement _id)) return BadRequest();
@@ -533,13 +533,87 @@ namespace TEAMModelOS.Controllers.Learn
                             }
                             if (!request.TryGetProperty("comment", out JsonElement _comment)) return BadRequest();
                             if (!request.TryGetProperty("star", out JsonElement _star)) return BadRequest();
+                            double star = -1;
+                            double.TryParse($"{_star}",out   star);
                             HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(_partition));
                             ///话题对象,id为学生的作答记录的comid ,根据scope确定,  code 为Debate-{schoolId},作业活动所在的学校编码|Debate-{teacherId},作业活动所在的教师编码
                             Homework homework= await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<Homework>($"{_id}", new PartitionKey(_partition));
-                            if(homework.scope.Equals("school"))
-                            { 
-                            
+                            string debateCode = "";
+                            if (homework.scope.Equals("school"))
+                            {
+                                debateCode = $"Debate-{homework.school}";
+                            }
+                            else {
+                                debateCode = $"Debate-{homework.creatorId}";
+                            }
+                            string replyId = Guid.NewGuid().ToString();
+                            DebateReply debateReply = new DebateReply
+                            {
+                                atUserType = $"{__userType}",
+                                userType =$"{_scope}".Equals("student")?"student":"tmdid",
+                                id = replyId,
+                                pid = $"{record.comid}",
+                                tmdid = userid,
+                                tmdname = name,
+                                school=homework.school,
+                                comment = $"{_comment}",
+                                atTmdid = $"{__userid}",
+                                atTmdname = $"{__userName}" ,
+                                time = now
+                            };
+                            Debate debate = null;
+                            try 
+                            {
+                                debate = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<Debate>($"{record.comid}", new PartitionKey(debateCode));
+                                debate.replies.Add(debateReply);
+                                await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<Debate>(debate,$"{record.comid}", new PartitionKey(debateCode));
+                            } catch (CosmosException ex) {
+                                debate = new Debate
+                                {
+                                    userType = $"{__userType}",
+                                    comid = $"{homework.id}",
+                                    code = debateCode,
+                                    id = $"{record.comid}",
+                                    tmdid = $"{__userid}",
+                                    tmdname = $"{__userName}",
+                                    title = $"{__userName}-{homework.name}",
+                                    time = now,
+                                    comment = "",
+                                    school =homework.school,
+                                    replies = new List<DebateReply>() { debateReply },
+                                    source = "homework",
+                                    openType = 0,
+                                    ttl = -1,
+                                    pk = "Debate"
+                                };
+                                await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync<Debate>(debate, new PartitionKey(debateCode));
+                            }
+                            string identity = "student";
+                            if (userid.Equals($"{_code}"))
+                            {
+                                identity = "teacher";
                             }
+                            HomeworkComment homeworkComment = record.comments.Find(x => x.userid.Equals(userid));
+                            if (homeworkComment != null)
+                            {
+                                homeworkComment.star = star;
+                                homeworkComment.replyIds.Add(replyId);
+                            }
+                            else
+                            {
+                                homeworkComment = new HomeworkComment
+                                {
+                                    star= star,
+                                    identity = identity,
+                                    userType = $"{_scope}".Equals("student") ? "student" : "tmdid",
+                                    userid = userid,
+                                    username = name,
+                                    school = school,
+                                    replyIds = new List<string> { replyId }
+                                };
+                                record.comments.Add(homeworkComment);
+                            }
+                            record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record,$"{_id}", new PartitionKey(_partition));
                             return Ok(new { error = 404 });
                         }
                         catch (CosmosException ex)
@@ -585,7 +659,18 @@ namespace TEAMModelOS.Controllers.Learn
             }
             return Ok();
         }
-
+        public class HomeworkReply
+        {
+            /// <summary>
+            /// 角色类型  成员 student   学校 teacher
+            /// </summary>
+            public string roleType { get; set; }
+            /// <summary>
+            /// 某人对你这个能力点的学习评价的的评语记录的Id集合。
+            /// </summary>
+            public string reply { get; set; }
+           
+        }
 
         //    /// <summary>
         //    /// 撤消作业