CrazyIter_Bin 1 anno fa
parent
commit
c3777257a2

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

@@ -696,7 +696,9 @@ namespace TEAMModelOS.SDK.Models
         /// <summary>
         /// 专家在优课评选中的评审任务
         /// </summary>
+     
         public List<ExpertContestTask>  contestTasks{ get; set; }
+     
     }
     [Serializable]
     public class ExpertContestTaskDto : ExpertContestTask

+ 39 - 11
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -1366,7 +1366,7 @@ namespace TEAMModelOS.Controllers
                                             {
                                                 foreach (var task in item.contestTasks)
                                                 {
-                                                    var teachers = inviteEnrollTeachers.FindAll(z => z.uploadContestId.Equals(task.uploadId));
+                                                    var teachers = inviteEnrollTeachers.FindAll(z => !string.IsNullOrWhiteSpace(z.uploadContestId) && z.uploadContestId.Equals(task.uploadId));
                                                     if (teachers!=null)
                                                     {
                                                         teachers.ForEach(z => { z.reviewContestAssignCount+=1; z.reviewContestExperts.Add(new IdNameCode { id= item.id, name=item.name, nickname=item.tmdname, picture=item.picture }); });
@@ -1757,7 +1757,7 @@ namespace TEAMModelOS.Controllers
                                 {
                                     contest = JsonDocument.Parse(contestResponse.Content).RootElement.ToObject<Contest>();
                                 }
-                                var expertDtos = activityExpert.experts.Select(z => z.ToJsonString().ToObject<ExpertDto>());
+                                List<ExpertDto> expertDtos = activityExpert.experts.Select(z => z.ToJsonString().ToObject<ExpertDto>()).ToList();
                                 long now = DateTimeOffset.Now.ToUnixTimeMilliseconds();
                                 //进入评审环节
                                 if (contest.review!= null  && now > contest.review.stime) {
@@ -1769,17 +1769,18 @@ namespace TEAMModelOS.Controllers
                                         {
                                             string taskSql = $"select value c from c where c.id in ({string.Join(",", hasIds.Select(z => $"'{z.id}'"))})";
                                             var taskResults = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityExpertTask>(taskSql, $"ActivityExpertTask-{_activityId}");
-                                            foreach (var dto in expertDtos)
-                                            {
-                                                var task = taskResults.list.Find(z => z.id.Equals(dto.id));
-                                                if (task!=null)
+
+                                            foreach (var item in taskResults.list) {
+                                                var dto = expertDtos.Find(z => !string.IsNullOrWhiteSpace(z.id)  &&  z.id.Equals(item.id));
+                                                if (dto!=null  )
                                                 {
-                                                    dto.taskCount =task.contestTasks.Count();
-                                                    dto.teacherCount=task.contestTasks.SelectMany(z => z.members).Count();
-                                                    dto.completeCount=task.contestTasks.Where(z => z.status==1).Count();
-                                                    dto.uploads=  task.contestTasks.Select(z => new IdCodeCount { name = z.name, id=z.uploadId, code=string.Join(",", z.uploadTypes), count=z.count }).ToList();
+                                                    dto.taskCount =item.contestTasks.Count();
+                                                    dto.teacherCount=item.contestTasks.SelectMany(z => z.members).Count();
+                                                    dto.completeCount=item.contestTasks.Where(z => z.status==1).Count();
+                                                    dto.uploads=  item.contestTasks.Select(z => new IdCodeCount { name = z.name, id=z.uploadId, code=string.Join(",", z.uploadTypes), count=z.count }).ToList();
                                                 }
                                             }
+                                           
                                         }
                                     }
                                 }
@@ -2033,7 +2034,7 @@ namespace TEAMModelOS.Controllers
                                 if (expertIds != null && expertIds.Count > 0)
                                 {
                                     string taskSQL = $"select value c from c where c.pk='ActivityExpertTask' and c.id in ({string.Join(",", expertIds.Select(z => $"'{z}'"))})";
-                                    List<ExpertContestTaskDto> worksDB = new List<ExpertContestTaskDto>();
+                                  
                                     var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityExpertTask>(taskSQL, $"ActivityExpertTask-{_activityId}");
                                     if (result.list.IsNotEmpty())
                                     {
@@ -2041,12 +2042,28 @@ namespace TEAMModelOS.Controllers
                                     }
                                 }
                                 HashSet<ActivityExpertTask> expertTasksChange = new HashSet<ActivityExpertTask>();
+                                Azure.Response responseContest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
+                                Contest contest = null;
+                                if (responseContest.Status == 200)
+                                {
+                                    long now = DateTimeOffset.Now.ToUnixTimeMilliseconds();
+                                    contest= JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
+                                    if (contest.modules.Contains("review") && contest.review != null)
+                                    {
+
+                                        if (now < contest.review.stime || now > contest.review.etime)
+                                        {
+                                            return Ok(new { code = 12, msg = "不在评审时间范围内!" });
+                                        }
+                                    }
+                                }
                                 foreach (var contestTask in contestTasks)
                                 {
                                     ExpertContestTask expertContestTask = contestTask.ToJsonString().ToObject<ExpertContestTask>();
                                     var expertTask = expertTasks.Find(z => z.id.Equals(contestTask.expertId));
                                     if (expertTask != null)
                                     {
+                                       
                                         var task = expertTask.contestTasks.Find(z => z.uploadId.Equals(contestTask.uploadId));
                                         if (task == null)
                                         {
@@ -2107,6 +2124,7 @@ namespace TEAMModelOS.Controllers
                                         score=z.score,
                                         status=z.status,
                                         detailScore=z.detailScore,
+
                                         activityId=_activityId.GetString()
                                     }));
                                 }
@@ -2643,6 +2661,16 @@ namespace TEAMModelOS.Controllers
                 //获取分配的任务
                 case bool when $"{grant_type}".Equals("list-task", StringComparison.OrdinalIgnoreCase):
                     {
+                        string sql = $"select c.activityId as code ,array_length(c.contestTasks) as 'value'  from c where c.id='{tmdid}' and  c.pk='ActivityExpertTask'";
+                        var result =  await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<CodeLong>(sql);
+                        if (result.list.IsNotEmpty()) {
+                            string baseSQL = $"select value c from c where c.id in ({string.Join(",",result.list.Select(z=>$"'{z}'"))}) ";
+                            var activityResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Activity>(baseSQL, "Activity");
+                            var contestResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<Contest>(baseSQL, "Contest");
+                            foreach (var item in activityResult.list) { 
+                                
+                            }
+                        }
                         break;
                     }
                 ///评分