|
@@ -1634,16 +1634,102 @@ namespace TEAMModelOS.Controllers
|
|
|
Activity activity= JsonDocument.Parse(response.Content).RootElement.ToObject<Activity>();
|
|
|
if (activity.publish==1) {
|
|
|
switch (true)
|
|
|
- {
|
|
|
+ {
|
|
|
+ case bool when $"{grant_type}".Equals("cancel-enroll", StringComparison.OrdinalIgnoreCase):
|
|
|
+ {
|
|
|
+ ActivityEnroll enroll = null;
|
|
|
+ Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
+ if (responseActivityEnroll.Status==200)
|
|
|
+ {
|
|
|
+ enroll= JsonDocument.Parse(responseActivityEnroll.Content).RootElement.ToObject<ActivityEnroll>();
|
|
|
+ if (enroll.contest!=null && enroll.contest.leader==1) {
|
|
|
+ return Ok(new { code = 3, msg = "请移交队长后再取消参赛!" });
|
|
|
+ }
|
|
|
+ Azure.Response responseActivityEnrollDel = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).DeleteItemStreamAsync(enroll.id, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
+ if (responseActivityEnrollDel.Status==201)
|
|
|
+ {
|
|
|
+ return Ok(new { code = 201, });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return Ok(new { code = 2,msg="取消失败!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Ok(new { code = 1, msg = "暂无报名数据!", });
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ case bool when $"{grant_type}".Equals("get-enroll", StringComparison.OrdinalIgnoreCase):
|
|
|
+ {
|
|
|
+ ActivityEnroll enroll = null;
|
|
|
+ Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
+ if (responseActivityEnroll.Status==200)
|
|
|
+ {
|
|
|
+ enroll= JsonDocument.Parse(responseActivityEnroll.Content).RootElement.ToObject<ActivityEnroll>();
|
|
|
+ return Ok(new { code = 200, enroll });
|
|
|
+ }
|
|
|
+ return Ok(new { code = 1, msg= "暂无报名数据!", });
|
|
|
+
|
|
|
+ }
|
|
|
//生成组队口令
|
|
|
case bool when $"{grant_type}".Equals("gen-cipher", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
|
- break;
|
|
|
+ Azure.Response responseContest = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
|
|
|
+ if (responseContest.Status==200 && activity.modules.Contains("Contest"))
|
|
|
+ {
|
|
|
+ Contest contest = JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
|
|
|
+ if (contest.modules.Contains("sign") && contest.sign!=null && contest.sign.type==1)
|
|
|
+ {
|
|
|
+ string cipher = await ActivityService.GenCipher(client, _dingDing, _option, _activityId.GetString());
|
|
|
+ return Ok(new { code = 200, cipher });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Ok(new { code = 1, msg = "组队口令生成失败!" });
|
|
|
}
|
|
|
//根据口令获取团队和队员信息
|
|
|
- case bool when $"{grant_type}".Equals("get-team-by-cipher", StringComparison.OrdinalIgnoreCase):
|
|
|
- {
|
|
|
- break;
|
|
|
+ case bool when $"{grant_type}".Equals("search-team-by-cipher", StringComparison.OrdinalIgnoreCase):
|
|
|
+ {
|
|
|
+ if (!request.TryGetProperty("cipher", out JsonElement _cipher)) return BadRequest();
|
|
|
+
|
|
|
+ Azure.Response responseContest = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Contest"));
|
|
|
+ if (responseContest.Status==200 && activity.modules.Contains("Contest"))
|
|
|
+ {
|
|
|
+ Contest contest = JsonDocument.Parse(responseContest.Content).RootElement.ToObject<Contest>();
|
|
|
+ if (contest.modules.Contains("sign") && contest.sign!=null && contest.sign.type==1)
|
|
|
+ {
|
|
|
+ string cipherSQL = $"select value c from c where c.contest!=null and c.activityId='{_activityId}' and c.contest.type=1 and c.contest.cipher='{_cipher}' ";
|
|
|
+ var cipherResult = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(cipherSQL, $"ActivityEnroll-{_activityId}");
|
|
|
+ List<TeacherEnrollContestDto> teamMembers = new List<TeacherEnrollContestDto>();
|
|
|
+ teamMembers= cipherResult.list.Select(z => new TeacherEnrollContestDto
|
|
|
+ {
|
|
|
+ tmdid= z.id,
|
|
|
+ tmdPicture= z.tmdPicture,
|
|
|
+ tmdName= z.tmdName,
|
|
|
+ schoolName=z.schoolName,
|
|
|
+ schoolPicture= z.schoolPicture,
|
|
|
+ schoolId= z.schoolId,
|
|
|
+ cipher= z.contest.cipher,
|
|
|
+ enrollTime= z.contest.enrollTime,
|
|
|
+ leader= z.contest.leader,
|
|
|
+ teamName= z.contest.teamName,
|
|
|
+ type=z.contest.type
|
|
|
+ }).ToList();
|
|
|
+ return Ok(new { code=200, teamMembers = teamMembers.Select(z => new {
|
|
|
+ z.tmdid,
|
|
|
+ z.tmdPicture,
|
|
|
+ z.tmdName,
|
|
|
+ z.schoolName,
|
|
|
+ z.schoolPicture,
|
|
|
+ z.schoolId,
|
|
|
+ z.cipher,
|
|
|
+ z.enrollTime,
|
|
|
+ z.leader,
|
|
|
+ z.teamName,
|
|
|
+ z.type
|
|
|
+ })
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Ok(new { code = 1, msg = "未找到团队!" });
|
|
|
}
|
|
|
//教师报名参加
|
|
|
case bool when $"{grant_type}".Equals("sign-contest", StringComparison.OrdinalIgnoreCase):
|
|
@@ -1764,9 +1850,10 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
//检查团队组,检查口令
|
|
|
int checkTeam = -1;
|
|
|
+ int cipherChange = -1;
|
|
|
if (contest.sign.type==1)
|
|
|
{
|
|
|
- if (enrollData.type==1)
|
|
|
+ if (enrollData.type==1 && !string.IsNullOrWhiteSpace(enrollData.cipher))
|
|
|
{
|
|
|
|
|
|
//检查组队口令
|
|
@@ -1786,11 +1873,22 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ //队长更改信息。
|
|
|
+ //检查 更新信息的 组队口令是否有变化,如果有变化则队员的组队口令也跟着变化
|
|
|
+ if (!string.IsNullOrWhiteSpace(enroll?.contest?.cipher) && !enroll.contest.cipher.Equals(enrollData.cipher)) {
|
|
|
+ cipherChange=1;
|
|
|
+ }
|
|
|
checkTeam=1;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
- {
|
|
|
+ {
|
|
|
+ //队长更改信息。
|
|
|
+ //检查 更新信息的 组队口令是否有变化,如果有变化则队员的组队口令也跟着变化
|
|
|
+ if (!string.IsNullOrWhiteSpace(enroll?.contest?.cipher) && !enroll.contest.cipher.Equals(enrollData.cipher))
|
|
|
+ {
|
|
|
+ cipherChange=1;
|
|
|
+ }
|
|
|
checkTeam=1;
|
|
|
}
|
|
|
}
|
|
@@ -1875,7 +1973,50 @@ namespace TEAMModelOS.Controllers
|
|
|
};
|
|
|
}
|
|
|
await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(enroll, new PartitionKey(enroll.code));
|
|
|
- return Ok(new { code = 200, enroll });
|
|
|
+ List<TeacherEnrollContestDto> teamMembers = new List<TeacherEnrollContestDto>();
|
|
|
+ //获取组队队员信息
|
|
|
+ if (enrollData.type==1 && !string.IsNullOrWhiteSpace(enrollData.cipher)) {
|
|
|
+ //获取队员报名信息
|
|
|
+ string cipherSQL = $"select value c from c where c.contest!=null and c.activityId='{_activityId.GetString()}' and c.contest.type=1 and c.contest.cipher='{enrollData.cipher}' ";
|
|
|
+ var cipherResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(cipherSQL, $"ActivityEnroll-{_activityId}");
|
|
|
+ if (cipherChange==1)
|
|
|
+ {
|
|
|
+ //队长更新其他队员的组队口令
|
|
|
+ cipherResult.list.RemoveAll(z => z.contest.leader==1);
|
|
|
+ foreach (var z in cipherResult.list)
|
|
|
+ {
|
|
|
+ z.contest.cipher=enrollData.cipher;
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(z, new PartitionKey(z.code));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ teamMembers= cipherResult.list.Select(z => new TeacherEnrollContestDto
|
|
|
+ {
|
|
|
+ tmdid= z.id,
|
|
|
+ tmdPicture= z.tmdPicture,
|
|
|
+ tmdName= z.tmdName,
|
|
|
+ schoolName=z.schoolName,
|
|
|
+ schoolPicture= z.schoolPicture,
|
|
|
+ schoolId= z.schoolId,
|
|
|
+ cipher= z.contest.cipher,
|
|
|
+ enrollTime= z.contest.enrollTime,
|
|
|
+ leader= z.contest.leader,
|
|
|
+ teamName= z.contest.teamName,
|
|
|
+ type=z.contest.type
|
|
|
+ }).ToList();
|
|
|
+ }
|
|
|
+ return Ok(new { code = 200, enroll , teamMembers= teamMembers.Select(z => new {
|
|
|
+ z.tmdid ,
|
|
|
+ z.tmdPicture ,
|
|
|
+ z.tmdName ,
|
|
|
+ z.schoolName,
|
|
|
+ z.schoolPicture,
|
|
|
+ z.schoolId,
|
|
|
+ z.cipher ,
|
|
|
+ z.enrollTime,
|
|
|
+ z.leader,
|
|
|
+ z.teamName,
|
|
|
+ z.type
|
|
|
+ })});
|
|
|
}
|
|
|
else
|
|
|
{
|