|
@@ -38,6 +38,7 @@ using static TEAMModelOS.Controllers.FixDataController;
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
using DocumentFormat.OpenXml.Office2013.Drawing.ChartStyle;
|
|
|
using static TEAMModelOS.SDK.Models.Cosmos.Student.StudentAnalysis;
|
|
|
+using System.Net.NetworkInformation;
|
|
|
namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
|
|
@@ -2697,154 +2698,8 @@ namespace TEAMModelOS.Controllers
|
|
|
case bool when $"{grant_type}".Equals("preview-scores", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
|
if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
|
|
|
- Azure.Response responseContest = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
|
|
|
- if (responseContest.Status == 200)
|
|
|
- {
|
|
|
- List<ActivityTeacherScore> teacherScores = new List<ActivityTeacherScore>();
|
|
|
- long now = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
|
|
- Contest contest = JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
|
|
|
- string sql = $"select value c from c ";
|
|
|
- var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(sql, $"ActivityEnroll-{_activityId}");
|
|
|
- List<ActivityTeacherScoreLevel> teacherScoreLevels = new List<ActivityTeacherScoreLevel>();
|
|
|
- if (result.list.IsNotEmpty())
|
|
|
- {
|
|
|
- if (contest.sign.type==1)
|
|
|
- {
|
|
|
- var teams = result.list.Where(x => !string.IsNullOrEmpty(x.contest?.cipher)).GroupBy(z => z.contest.cipher);
|
|
|
- foreach (var team in teams)
|
|
|
- {
|
|
|
- var members = team.ToList();
|
|
|
- var leader = members.FindAll(z => z.contest.leader==1)?.FirstOrDefault();
|
|
|
- if (leader==null)
|
|
|
- {
|
|
|
- leader=members.First();
|
|
|
- }
|
|
|
- double score = leader.upload?.score??-1;
|
|
|
- if (leader.upload?.showScore==1)
|
|
|
- {
|
|
|
- score= leader.upload.maskScore;
|
|
|
- }
|
|
|
- teacherScores.Add(new ActivityTeacherScore
|
|
|
- {
|
|
|
- uploadId=leader.upload?.uploadId,
|
|
|
- uploadName=!string.IsNullOrWhiteSpace(leader.upload?.name) ? leader.upload?.name : $"{leader.contest.teamName}",
|
|
|
- score=score,
|
|
|
- tmdid=leader.id,
|
|
|
- nickname=leader.tmdName,
|
|
|
- name=leader.contest.enrollInfos.Find(z => z.code.Equals("name"))?.val,
|
|
|
- picture=leader.tmdPicture,
|
|
|
- school=leader.schoolId,
|
|
|
- schoolName=leader.schoolName,
|
|
|
- schoolPicture=leader.schoolPicture,
|
|
|
- cipher=leader.contest.cipher,
|
|
|
- teamName=leader.contest.teamName,
|
|
|
- type=leader.contest.type,
|
|
|
- members=members.Select(z => new IdNameCode { id=z.id, name=z.contest.enrollInfos.Find(x => x.code.Equals("name"))?.val, picture=z.tmdPicture, nickname=z.tmdName }).ToList(),
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ///个人组
|
|
|
- foreach (var item in result.list)
|
|
|
- {
|
|
|
- double score = item.upload?.score??-1;
|
|
|
- if (item.upload?.showScore==1)
|
|
|
- {
|
|
|
- score= item.upload.maskScore;
|
|
|
- }
|
|
|
- teacherScores.Add(new ActivityTeacherScore
|
|
|
- {
|
|
|
- uploadId=item.upload?.uploadId,
|
|
|
- uploadName=!string.IsNullOrWhiteSpace(item.upload?.name) ? item.upload?.name : $"{item.contest.enrollInfos.Find(z => z.code.Equals("name"))?.val}",
|
|
|
- score=score,
|
|
|
- tmdid=item.id,
|
|
|
- nickname=item.tmdName,
|
|
|
- name=item.contest.enrollInfos.Find(z => z.code.Equals("name"))?.val,
|
|
|
- picture=item.tmdPicture,
|
|
|
- school=item.schoolId,
|
|
|
- schoolName=item.schoolName,
|
|
|
- schoolPicture=item.schoolPicture,
|
|
|
- type=item.contest.type,
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (contest.score.showType==1)
|
|
|
- {
|
|
|
- teacherScores= teacherScores.Where(x => x.score>=0).OrderByDescending(x => x.score).ToList();
|
|
|
-
|
|
|
- if (contest.score.levelType==1)
|
|
|
- {
|
|
|
- var scoreLevels = contest.score.scoreLevels.OrderBy(x => x.order).ToList();
|
|
|
- foreach (var level in scoreLevels)
|
|
|
- {
|
|
|
- var datas = teacherScores.Take(level.top);
|
|
|
- var scores = datas.ToJsonString().ToObject<List<ActivityTeacherScoreLevel>>();
|
|
|
- scores.ForEach(z => { z.scoreLevel=level.lable; });
|
|
|
- teacherScoreLevels.AddRange(scores);
|
|
|
- teacherScores.RemoveAll(x => scores.Select(v => v.uploadId).Contains(x.uploadId));
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- foreach (var item in teacherScores)
|
|
|
- {
|
|
|
- string label = string.Empty;
|
|
|
- foreach (var level in contest.score.scoreLevels)
|
|
|
- {
|
|
|
- if (level.max==100)
|
|
|
- {
|
|
|
- if (item.score>level.min && item.score<=level.max)
|
|
|
- {
|
|
|
- label=level.lable;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (item.score>level.min && item.score<level.max)
|
|
|
- {
|
|
|
- label=level.lable;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (!string.IsNullOrWhiteSpace(label))
|
|
|
- {
|
|
|
- var score = item.ToJsonString().ToObject<ActivityTeacherScoreLevel>();
|
|
|
- score.scoreLevel=label;
|
|
|
- teacherScoreLevels.Add(score);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (contest.score.top>-1)
|
|
|
- {
|
|
|
- teacherScores= teacherScores.Where(x => x.score>=0).OrderByDescending(x => x.score).Take(contest.score.top).ToList();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- teacherScores= teacherScores.Where(x => x.score>=0).ToList();
|
|
|
- }
|
|
|
- foreach (var item in teacherScores)
|
|
|
- {
|
|
|
- double score = item.score;
|
|
|
- var teacher = item.ToJsonString().ToObject<ActivityTeacherScoreLevel>();
|
|
|
- teacher.scoreLevel=$"{score}";
|
|
|
- teacherScoreLevels.Add(teacher);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- return Ok(new {code=200, teacherScoreLevels });
|
|
|
- }
|
|
|
- else {
|
|
|
- return Ok(new { code = 1, msg="活动不存在!" });
|
|
|
- }
|
|
|
-
|
|
|
+ List<ActivityScoreLevel> contestScores = await ActivityService.ActivityScores(_azureCosmos,_activityId);
|
|
|
+ return Ok(new { code = 200, contestScores });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3090,19 +2945,12 @@ namespace TEAMModelOS.Controllers
|
|
|
activity.url=blob_uri;
|
|
|
long now = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
|
|
activity.publish=now>activity.etime ? 2 : activity.publish;
|
|
|
+ List<ActivityScoreLevel> contestScores = null;
|
|
|
if (contest.score!=null && contest.score.scoreStatus==1 && now>contest.score?.stime && now<contest.score.etime)
|
|
|
{
|
|
|
- string sql = $"select value c from c ";
|
|
|
- var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(sql, $"ActivityEnroll-{_activityId}");
|
|
|
- if (result.list.IsNotEmpty()) {
|
|
|
-
|
|
|
- if (contest.score.top>-1)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ contestScores = await ActivityService.ActivityScores(_azureCosmos, _activityId);
|
|
|
}
|
|
|
- return Ok(new { code = 200, activity, contest, reviewRule, training, research });
|
|
|
+ return Ok(new { code = 200, activity, contest, reviewRule, training, research, contestScores });
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -3632,9 +3480,33 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
}
|
|
|
enroll= JsonDocument.Parse(responseActivityEnroll.Content).RootElement.ToObject<ActivityEnroll>();
|
|
|
+
|
|
|
+ double score = -1;
|
|
|
+ int levelStatus = -1;
|
|
|
+ string scoreLevel = string.Empty;
|
|
|
+ if (contest.score!=null && contest.score.scoreStatus==1 && now>contest.score?.stime && now<contest.score.etime)
|
|
|
+ {
|
|
|
+ score=enroll.upload.score;
|
|
|
+ if (enroll.upload.showScore==1) {
|
|
|
+ score=enroll.upload.maskScore;
|
|
|
+ }
|
|
|
+ List<ActivityScoreLevel> contestScores = await ActivityService.ActivityScores(_azureCosmos, _activityId, enroll.id);
|
|
|
+ var levels = contestScores.SelectMany(x => x.scores).Where(x => x.tmdid.Equals(enroll.id));
|
|
|
+ ActivityTeacherScoreLevel level = null;
|
|
|
+ if (level!=null && levels.Count()>0)
|
|
|
+ {
|
|
|
+ level=levels.First();
|
|
|
+ levelStatus=1;
|
|
|
+ scoreLevel=level.scoreLevel;
|
|
|
+ score= level.score;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ levelStatus=0;
|
|
|
+ }
|
|
|
+ }
|
|
|
enroll.upload.score=-1;
|
|
|
enroll.upload.maskScore=-1;
|
|
|
- return Ok(new { code = 200, enroll });
|
|
|
+ return Ok(new { code = 200, enroll,scoreData=new { levelStatus , score, scoreLevel, showType=contest.score.showType } });
|
|
|
}
|
|
|
return Ok(new { code = 1, msg = "暂无报名数据!", });
|
|
|
|