|
@@ -353,13 +353,16 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
case bool when $"{grant_type}".Equals("teachers", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
|
- if (!string.IsNullOrWhiteSpace(school)) {
|
|
|
+ if (!string.IsNullOrWhiteSpace(school))
|
|
|
+ {
|
|
|
School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
string sql = $"select c.id,c.name ,c.picture from c where c.code='Teacher-{school}' ";
|
|
|
var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<SchoolTeacher>(sql, $"Teacher-{school}");
|
|
|
return Ok(new { code = 200, teachers = result.list.Select(z => new { z.id, z.name, z.picture, school, schooName = schoolbase.name }) });
|
|
|
}
|
|
|
- break;
|
|
|
+ else {
|
|
|
+ return Ok(new { code = 1, msg="没有学校信息" });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return Ok(new { code = 400 });
|
|
@@ -466,7 +469,8 @@ namespace TEAMModelOS.Controllers
|
|
|
return Ok(new { code = 3, msg = "赛课信息参数错误" });
|
|
|
}
|
|
|
contest = _contest.ToObject<Contest>();
|
|
|
- if (contest!=null) {
|
|
|
+ if (contest!=null)
|
|
|
+ {
|
|
|
contest.id=activity.id;
|
|
|
contest.code="Contest";
|
|
|
contest.pk="Contest";
|
|
@@ -474,12 +478,14 @@ namespace TEAMModelOS.Controllers
|
|
|
if (validResultContest.isVaild)
|
|
|
{
|
|
|
|
|
|
- if (contest.modules.Contains("review")) {
|
|
|
+ if (contest.modules.Contains("review"))
|
|
|
+ {
|
|
|
if (!request.TryGetProperty("reviewConfig", out JsonElement _reviewConfig))
|
|
|
{
|
|
|
return Ok(new { code = 4, msg = "评审未配置" });
|
|
|
}
|
|
|
- if (contest.review== null) {
|
|
|
+ if (contest.review== null)
|
|
|
+ {
|
|
|
return Ok(new { code = 4, msg = "评审未配置" });
|
|
|
}
|
|
|
ReviewRuleTree ruleTree = _reviewConfig.ToObject<ReviewRuleTree>();
|
|
@@ -488,12 +494,16 @@ namespace TEAMModelOS.Controllers
|
|
|
contest.review.ruleName = reviewRule.name;
|
|
|
}
|
|
|
await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).UpsertItemAsync(contest, new PartitionKey(contest.code));
|
|
|
+ break;
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
return Ok(validResult);
|
|
|
}
|
|
|
}
|
|
|
- break;
|
|
|
+ else {
|
|
|
+ return Ok(validResult);
|
|
|
+ }
|
|
|
}
|
|
|
//培训
|
|
|
case bool when module.Equals("Training"):
|
|
@@ -587,7 +597,8 @@ namespace TEAMModelOS.Controllers
|
|
|
//校级活动列表
|
|
|
case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
|
- if (!string.IsNullOrWhiteSpace(school)) {
|
|
|
+ if (!string.IsNullOrWhiteSpace(school))
|
|
|
+ {
|
|
|
School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
List<ActivityDto> activities = new List<ActivityDto>();
|
|
|
string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
@@ -606,7 +617,8 @@ namespace TEAMModelOS.Controllers
|
|
|
//部分学校
|
|
|
string sqlSchool = $"select value c from c join s in c.invitedSchools where c.scope='public' {yearSql} and (c.publish=1 or c.publish=2 ) and s.id='{school}' ";
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
|
|
|
- resultSchool.list.ForEach(z => {
|
|
|
+ resultSchool.list.ForEach(z =>
|
|
|
+ {
|
|
|
var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
if (confirmedSchool==null)
|
|
|
{
|
|
@@ -624,11 +636,13 @@ namespace TEAMModelOS.Controllers
|
|
|
//获取区级下放的
|
|
|
{
|
|
|
|
|
|
- if (!string.IsNullOrWhiteSpace(schoolbase.areaId)) {
|
|
|
+ if (!string.IsNullOrWhiteSpace(schoolbase.areaId))
|
|
|
+ {
|
|
|
//区级所有学校
|
|
|
string sqlOpen = $"select value c from c where c.scope='area'{yearSql} and (c.publish=1 or c.publish=2 ) and c.owner='{schoolbase.areaId}' and( ARRAY_LENGTH(c.invitedSchools)=0 or IS_DEFINED(c.invitedSchools) = false) ";
|
|
|
var resultOpen = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlOpen, "Activity");
|
|
|
- resultOpen.list.ForEach(z => {
|
|
|
+ resultOpen.list.ForEach(z =>
|
|
|
+ {
|
|
|
var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
if (confirmedSchool==null)
|
|
|
{
|
|
@@ -645,7 +659,8 @@ namespace TEAMModelOS.Controllers
|
|
|
//区级部分学校
|
|
|
string sqlSchool = $"select value c from c join s in c.invitedSchools where c.scope='area'{yearSql} and (c.publish=1 or c.publish=2 ) and c.owner='{schoolbase.areaId}' and s.id='{school}' ";
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
|
|
|
- resultSchool.list.ForEach(z => {
|
|
|
+ resultSchool.list.ForEach(z =>
|
|
|
+ {
|
|
|
var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
if (confirmedSchool==null)
|
|
|
{
|
|
@@ -667,13 +682,16 @@ namespace TEAMModelOS.Controllers
|
|
|
var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
|
|
|
activities.AddRange(resultSchool.list);
|
|
|
}
|
|
|
- activities.ForEach(z => {
|
|
|
+ activities.ForEach(z =>
|
|
|
+ {
|
|
|
var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(z.owner, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
|
|
|
z.sas=blob_sas;
|
|
|
});
|
|
|
- return Ok(new { activities = activities.OrderByDescending(z => z.stime) });
|
|
|
+ return Ok(new { code=200, activities = activities.OrderByDescending(z => z.stime) });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return Ok(new { code = 1, msg="没有学校信息"});
|
|
|
}
|
|
|
- break;
|
|
|
|
|
|
}
|
|
|
//教师活动列表
|
|
@@ -775,7 +793,8 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
|
|
|
if (!request.TryGetProperty("confirm", out JsonElement _confirm)) return BadRequest();
|
|
|
- if (!string.IsNullOrWhiteSpace(school)) {
|
|
|
+ if (!string.IsNullOrWhiteSpace(school))
|
|
|
+ {
|
|
|
Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
|
|
|
if (response.Status==200)
|
|
|
{
|
|
@@ -783,13 +802,15 @@ namespace TEAMModelOS.Controllers
|
|
|
if (_confirm.GetInt32()==1 ||_confirm.GetInt32()==0)
|
|
|
{
|
|
|
var invitedSchool = activity.invitedSchools.Find(z => z.id.Equals(school));
|
|
|
- if (invitedSchool!=null) {
|
|
|
+ if (invitedSchool!=null)
|
|
|
+ {
|
|
|
var confirmedSchool = activity.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
if (confirmedSchool!=null)
|
|
|
{
|
|
|
confirmedSchool.status=_confirm.GetInt32();
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
activity.confirmedSchools= new List<ActivityConfirmedSchool>() { new ActivityConfirmedSchool { id=school, status=_confirm.GetInt32(), name=schoolbase.name, picture= schoolbase.picture } };
|
|
|
}
|
|
@@ -806,8 +827,14 @@ namespace TEAMModelOS.Controllers
|
|
|
return Ok(new { code = 2, msg = "活动发布状态错误!" });
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { code = 4, msg = "活动不存在!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return Ok(new { code = 3, msg = "没有学校信息!" });
|
|
|
}
|
|
|
- break;
|
|
|
}
|
|
|
//发布或取消发布活动
|
|
|
case bool when $"{grant_type}".Equals("update-publish", StringComparison.OrdinalIgnoreCase):
|
|
@@ -857,7 +884,7 @@ namespace TEAMModelOS.Controllers
|
|
|
activityTeacher = JsonDocument.Parse(activityTeacherResponse.Content).RootElement.ToObject<ActivityTeacher>();
|
|
|
}
|
|
|
if (activityTeacher==null) {
|
|
|
- activityTeacher= new ActivityTeacher() { id=school, code=$"ActivityTeacher-{_activityId}", pk="ActivityTeacher" };
|
|
|
+ activityTeacher= new ActivityTeacher() { activityId=_activityId.GetString(), schoolNmae= confirmedSchool.name, id=school, code=$"ActivityTeacher-{_activityId}", pk="ActivityTeacher" };
|
|
|
}
|
|
|
if (_invite.ValueKind.Equals(JsonValueKind.Array)) {
|
|
|
List<InviteTeachers> inviteTeachers = _invite.ToObject<List<InviteTeachers>>();
|
|
@@ -1634,7 +1661,6 @@ namespace TEAMModelOS.Controllers
|
|
|
Azure.Response response = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
|
|
|
if (response.Status==200)
|
|
|
{
|
|
|
- int code = -1;
|
|
|
Activity activity = JsonDocument.Parse(response.Content).RootElement.ToObject<Activity>();
|
|
|
if (activity.publish==1)
|
|
|
{
|
|
@@ -1685,6 +1711,57 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
switch (true)
|
|
|
{
|
|
|
+ case bool when $"{grant_type}".Equals("remove-member", StringComparison.OrdinalIgnoreCase):
|
|
|
+ {
|
|
|
+ if (!request.TryGetProperty("removeMember", out JsonElement _removeMember)) return BadRequest();
|
|
|
+ if (tmdid.Equals(_removeMember.GetString()))
|
|
|
+ {
|
|
|
+ return Ok(new { code = 5, msg = "不能移除自己!" });
|
|
|
+ }
|
|
|
+ Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
+ if (responseActivityEnroll.Status==200)
|
|
|
+ {
|
|
|
+ ActivityEnroll enrollOld = JsonDocument.Parse(responseActivityEnroll.Content).RootElement.ToObject<ActivityEnroll>();
|
|
|
+ if (enrollOld!=null && enrollOld?.contest?.leader==1 && enrollOld?.contest?.type==1)
|
|
|
+ {
|
|
|
+ Azure.Response responseActivityEnrollRemove = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(_removeMember.GetString(), new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
+ if (responseActivityEnrollRemove.Status==200)
|
|
|
+ {
|
|
|
+ ActivityEnroll enrollRemove = JsonDocument.Parse(responseActivityEnrollRemove.Content).RootElement.ToObject<ActivityEnroll>();
|
|
|
+ if (enrollRemove!=null && enrollRemove?.contest!=null && enrollOld?.contest?.type==1)
|
|
|
+ {
|
|
|
+ if (enrollOld.contest.cipher.Equals(enrollRemove.contest.cipher))
|
|
|
+ {
|
|
|
+ enrollRemove.contest.cipher=null;
|
|
|
+ //string cipher = await ActivityService.GenCipher(client, _dingDing, _option, _activityId.GetString());
|
|
|
+ await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(enrollRemove, new PartitionKey(enrollRemove.code));
|
|
|
+ return Ok(new { code = 200, msg = "移除成功!" });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { code = 4, msg = "指定的队长不是同一团队人员!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { code = 3, msg = "指定的队长未参加本次活动!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { code = 3, msg = "指定的队长未参加本次活动!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { code = 1, msg = "你不是队长!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Ok(new { code = 2, msg = "你未参加本次活动!" });
|
|
|
+ }
|
|
|
+ }
|
|
|
///移交队长
|
|
|
case bool when $"{grant_type}".Equals("change-team-leader", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
@@ -1737,7 +1814,6 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
return Ok(new { code = 2, msg = "你未参加本次活动!" });
|
|
|
}
|
|
|
- break;
|
|
|
}
|
|
|
///取消报名
|
|
|
case bool when $"{grant_type}".Equals("cancel-enroll", StringComparison.OrdinalIgnoreCase):
|
|
@@ -1771,6 +1847,12 @@ namespace TEAMModelOS.Controllers
|
|
|
case bool when $"{grant_type}".Equals("get-enroll", StringComparison.OrdinalIgnoreCase):
|
|
|
{
|
|
|
ActivityEnroll enroll = null;
|
|
|
+ if (activity.joinMode.Equals("invite"))
|
|
|
+ {
|
|
|
+ //先获取邀请制的
|
|
|
+ string sqlInvite = $"select value c from c join t in c.inviteTeachers where t.id='{tmdid}'";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(sqlInvite, $"ActivityTeacher-{_activityId}");
|
|
|
+ }
|
|
|
Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
if (responseActivityEnroll.Status==200)
|
|
|
{
|
|
@@ -1861,15 +1943,15 @@ namespace TEAMModelOS.Controllers
|
|
|
//邀请制
|
|
|
if (activity.joinMode.Equals("invite"))
|
|
|
{
|
|
|
- Azure.Response responseActivityTeacher = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("ActivityTeacher"));
|
|
|
- if (responseActivityTeacher.Status==200)
|
|
|
+ string sqlInvite = $"select value c from c join t in c.inviteTeachers where t.id='{tmdid}' and c.pk='ActivityTeacher'";
|
|
|
+ var activityTeacherResult = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(_activityId.GetString(), $"ActivityTeacher-{_activityId}");
|
|
|
+ if (activityTeacherResult.list.IsNotEmpty())
|
|
|
{
|
|
|
- ActivityTeacher activityTeacher = JsonDocument.Parse(responseActivityTeacher.Content).RootElement.ToObject<ActivityTeacher>();
|
|
|
- var exsit = activityTeacher.inviteTeachers.Exists(z => z.id.Equals(tmdid));
|
|
|
+ var exsit = activityTeacherResult.list.Exists(z => z.id.Equals(enrollData.schoolId));
|
|
|
if (!exsit)
|
|
|
{
|
|
|
- code=1;
|
|
|
- return Ok(new { code, msg = "教师未被邀请!" });
|
|
|
+ code=16;
|
|
|
+ return Ok(new { code, msg = "填报的学校与邀请的学校不一致!" });
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -2192,7 +2274,7 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
|
|
|
ActivityEnroll enroll = null;
|
|
|
-
|
|
|
+ int captainUpload = -1;
|
|
|
Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
if (responseActivityEnroll.Status==200)
|
|
|
{
|
|
@@ -2217,6 +2299,7 @@ namespace TEAMModelOS.Controllers
|
|
|
else
|
|
|
{
|
|
|
check=1;
|
|
|
+ captainUpload=1;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -2278,6 +2361,7 @@ namespace TEAMModelOS.Controllers
|
|
|
//{
|
|
|
// string str = await httpResponse.Content.ReadAsStringAsync();
|
|
|
//}
|
|
|
+ // 处理队长统一上传
|
|
|
return Ok(new { code = 200 });
|
|
|
}
|
|
|
else
|
|
@@ -2298,6 +2382,19 @@ namespace TEAMModelOS.Controllers
|
|
|
uploadId=Guid.NewGuid().ToString()
|
|
|
};
|
|
|
await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(enroll, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
|
|
|
+ if (captainUpload==1&& !string.IsNullOrWhiteSpace(enroll.contest.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='{enroll.contest.cipher}' ";
|
|
|
+ var cipherResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(cipherSQL, $"ActivityEnroll-{_activityId}");
|
|
|
+ //队长统一上传
|
|
|
+ cipherResult.list.RemoveAll(z => z.contest.leader==1);
|
|
|
+ foreach (var z in cipherResult.list)
|
|
|
+ {
|
|
|
+ z.upload=enroll.upload;
|
|
|
+ z.upload.uploadId=Guid.NewGuid().ToString();
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(z, new PartitionKey(z.code));
|
|
|
+ }
|
|
|
+ }
|
|
|
return Ok(new { code = 200, });
|
|
|
}
|
|
|
}
|