CrazyIter_Bin 1 year ago
parent
commit
fad7839b22

+ 7 - 1
TEAMModelOS.FunctionV4/Properties/serviceDependencies.TEAMModelOSFunction - Zip Deploy.json

@@ -1,3 +1,9 @@
 {
 {
-  "dependencies": {}
+  "dependencies": {
+    "storage1": {
+      "resourceId": "/subscriptions/[parameters('subscriptionId')]/resourceGroups/[parameters('resourceGroupName')]/providers/Microsoft.Storage/storageAccounts/teammodellog",
+      "type": "storage.azure",
+      "connectionId": "AzureWebJobsStorage"
+    }
+  }
 }
 }

+ 6 - 1
TEAMModelOS.FunctionV4/Properties/serviceDependencies.json

@@ -1,3 +1,8 @@
 {
 {
-  "dependencies": {}
+  "dependencies": {
+    "storage1": {
+      "type": "storage",
+      "connectionId": "AzureWebJobsStorage"
+    }
+  }
 }
 }

+ 26 - 2
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -271,8 +271,25 @@ namespace TEAMModelOS.SDK.Models
     }
     }
     public class ContestScore
     public class ContestScore
     {
     {
+        /// <summary>
+        /// 0未展示,1展示
+        /// </summary>
+        public int scoreStatus { get; set; }
+        /// <summary>
+        /// 0 分数展示,1等级展示
+        /// </summary>
+        public int showType { get; set; }
+        public List<ScoreLevel> scoreLevels { get; set; } = new List<ScoreLevel>();
+
         public long stime { get; set; }
         public long stime { get; set; }
         public long etime { get; set; }
         public long etime { get; set; }
+       
+    }
+    public class ScoreLevel
+    {
+        public string lable { get; set; }
+        public double min { get; set; }
+        public double max { get; set; }
     }
     }
     public class ContestReview
     public class ContestReview
     {
     {
@@ -679,10 +696,13 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         /// </summary>
         public double score { get; set; } = -1;
         public double score { get; set; } = -1;
         /// <summary>
         /// <summary>
-        /// 掩饰分数 -1未评分
+        /// 调整分数 -1未评分
         /// </summary>
         /// </summary>
         public double maskScore { get; set; } = -1;
         public double maskScore { get; set; } = -1;
-
+        /// <summary>
+        /// 展示分数,0真实得分,1调整分数,默认真实得分
+        /// </summary>
+        public int showScore { get; set; }
         //public List<ExpertUploadScore> expertScore { get; set; } = new List<ExpertUploadScore>();
         //public List<ExpertUploadScore> expertScore { get; set; } = new List<ExpertUploadScore>();
     }
     }
 
 
@@ -946,11 +966,15 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         /// </summary>
         public string tmdid { get; set; }
         public string tmdid { get; set; }
         public List<string> tag { get; set; } = new List<string>();
         public List<string> tag { get; set; } = new List<string>();
+        public string lessonId { get; set; }
     }
     }
 
 
     public class ContestSokrates
     public class ContestSokrates
     { 
     { 
         public string name { get; set; }
         public string name { get; set; }
+        /// <summary>
+        /// 地址
+        /// </summary>
         public  string url {  get; set; }
         public  string url {  get; set; }
         /// <summary>
         /// <summary>
         /// 视频播放时长
         /// 视频播放时长

+ 1 - 1
TEAMModelOS.SDK/Models/Service/IESActivityService.cs

@@ -628,7 +628,7 @@ namespace TEAMModelOS.SDK
                 {
                 {
                     foreach (var x in tchActivities)
                     foreach (var x in tchActivities)
                     {
                     {
-                        tasks.Add(client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(x, new PartitionKey(x.code)));
+                        tasks.Add(client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(x, new PartitionKey(x.code)));
                     }
                     }
                 }
                 }
 
 

+ 147 - 3
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -1799,7 +1799,6 @@ namespace TEAMModelOS.Controllers
                             }
                             }
                             return Ok(new { expertTasks, code = 200 });
                             return Ok(new { expertTasks, code = 200 });
                         }
                         }
-
                     case bool when $"{grant_type}".Equals("update-reviewStatus", StringComparison.OrdinalIgnoreCase): 
                     case bool when $"{grant_type}".Equals("update-reviewStatus", StringComparison.OrdinalIgnoreCase): 
                         {
                         {
 
 
@@ -1836,8 +1835,6 @@ namespace TEAMModelOS.Controllers
                             else {
                             else {
                                 return Ok(new { code = 3, msg = "活动不存在!" });
                                 return Ok(new { code = 3, msg = "活动不存在!" });
                             }
                             }
-                            
-                             
                         }
                         }
                     //分配评审作品任务-检查,自动分配
                     //分配评审作品任务-检查,自动分配
                     case bool when $"{grant_type}".Equals("allocation-task-auto-assign", StringComparison.OrdinalIgnoreCase):
                     case bool when $"{grant_type}".Equals("allocation-task-auto-assign", StringComparison.OrdinalIgnoreCase):
@@ -2385,6 +2382,153 @@ namespace TEAMModelOS.Controllers
                             }
                             }
                           
                           
                         }
                         }
+                    //修改活动成绩公示状态
+                    case bool when $"{grant_type}".Equals("update-scoreStatus", StringComparison.OrdinalIgnoreCase): 
+                        {
+                            if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
+                            if (!request.TryGetProperty("scoreStatus", out JsonElement _scoreStatus)) return BadRequest();
+                            Azure.Response responseContest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
+                            if (responseContest.Status == 200)
+                            {
+                                long now = DateTimeOffset.Now.ToUnixTimeMilliseconds();
+                                Contest contest = JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
+                                if (contest.modules.Contains("score") && contest.score != null)
+                                {
+
+                                    if (now < contest.score.stime || now > contest.score.etime)
+                                    {
+                                        return Ok(new { code = 1, msg = "不在成绩公布时间范围内!" });
+                                    }
+                                }
+                                else
+                                {
+                                    return Ok(new { code = 2, msg = "未配置成绩公布模块!" });
+                                }
+                                if (int.TryParse($"{_scoreStatus}", out int scoreStatus))
+                                {
+                                    contest.score.scoreStatus = scoreStatus;
+                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).UpsertItemAsync(contest, new PartitionKey("Contest"));
+                                    return Ok(new { code = 200, msg = "操作成功!" });
+                                }
+                                else
+                                {
+                                    return Ok(new { code = 4, msg = "成绩公布参数错误!" });
+                                }
+                            }
+                            else
+                            {
+                                return Ok(new { code = 3, msg = "活动不存在!" });
+                            }
+                        }
+                        //修改活动成绩公布类型或等级
+                    case bool when $"{grant_type}".Equals("update-scoreShowTypeOrLevel", StringComparison.OrdinalIgnoreCase):
+                        {
+                            if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
+                            if (!request.TryGetProperty("showType", out JsonElement _showType)) return BadRequest();
+                            List<ScoreLevel> scoreLevels = new List<ScoreLevel>();
+                            bool ok = true;
+                            string msg = string.Empty;
+                            int code = 200;
+                            if (int.TryParse($"{_showType}", out int showType))
+                            {
+                                if (showType==1)
+                                {
+                                    if (!request.TryGetProperty("scoreLevels", out JsonElement _scoreLevels))
+                                    {
+                                        code=1;
+                                        ok = false;
+                                        msg="参数错误";
+                                    }
+                                    else
+                                    {
+                                        scoreLevels= _scoreLevels.ToObject<List<ScoreLevel>>();
+                                        if (scoreLevels.IsNotEmpty())
+                                        {
+                                            scoreLevels= scoreLevels.OrderBy(z => z.min).ToList();
+                                            double max = 0;
+                                            foreach (ScoreLevel scoreLevel in scoreLevels)
+                                            {
+                                                //检查当前值最大大于最小
+                                                if (scoreLevel.max>scoreLevel.min)
+                                                {   //当前最小大于上一轮的最大值
+                                                    if (scoreLevel.min==max)
+                                                    {
+                                                      
+                                                        max = scoreLevel.max;
+                                                    }
+                                                    else
+                                                    {
+                                                        ok=false;
+                                                        code=3;
+                                                        msg=$"相邻等级的分数设置错误";
+                                                        break;
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    ok=false;
+                                                    code=4;
+                                                    msg=$"等级的最大值小于最小值";
+                                                    break;
+                                                }
+                                            }
+                                            
+                                        }
+                                        else
+                                        {
+                                            code=2;
+                                            ok = false;
+                                            msg="分数等级未设置!";
+                                        }
+                                    }
+                                }
+                                else if (showType==0)
+                                {
+                                    ok=true;
+                                    code=200;
+                                }
+                                else
+                                {
+                                    code=1;
+                                    ok = false;
+                                    msg="参数错误";
+                                }
+                            }
+                            else
+                            {
+                                code=1;
+                                ok = false;
+                                msg="参数错误";
+                            }
+                            if (code==200 && ok==true)
+                            {
+                                Azure.Response responseContest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
+                                if (responseContest.Status == 200)
+                                {
+                                    long now = DateTimeOffset.Now.ToUnixTimeMilliseconds();
+                                    Contest contest = JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
+                                    if (contest.modules.Contains("score") && contest.score != null)
+                                    {
+                                        contest.score.showType=showType;
+                                        contest.score.scoreLevels=scoreLevels;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).UpsertItemAsync(contest, new PartitionKey("Contest"));
+                                        return Ok(new { code = 200, msg = "操作成功" });
+                                    }
+                                    else
+                                    {
+                                        return Ok(new { code = 5, msg = "未配置成绩公布模块!" });
+                                    }
+
+                                }
+                                else
+                                {
+                                    return Ok(new { code = 6, msg = "活动不存在!" });
+                                }
+                            }
+                            else {
+                                return Ok(new { code, msg });
+                            }
+                        }
                 }
                 }
             }
             }
             catch (Exception ex)
             catch (Exception ex)