|
@@ -25,311 +25,7 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
public static class ActivityService
|
|
|
{
|
|
|
-
|
|
|
- /*
|
|
|
- /// <summary>
|
|
|
- /// 分配作品
|
|
|
- /// </summary>
|
|
|
- /// <param name="_azureCosmos"></param>
|
|
|
- /// <param name="activity"></param>
|
|
|
- /// <returns></returns>
|
|
|
-
|
|
|
- public static async Task<(List<ExpertContestTaskDto> expertContestTasks, List<ExpertContestTaskDto > activityEnrollsInvalid, List<ExpertContestTaskDto> expertContestTasksDB)> AllocationTask(AzureCosmosFactory _azureCosmos, IEnumerable<ExpertPeriodSubjectDto> experts, Contest activity,HashSet<string> periodSubjectKeys,string distribute, int taskCount)
|
|
|
- {
|
|
|
- //检查报名,学段和科目是否匹配
|
|
|
- string enrollSQL = "select value c from c where c.pk='ActivityEnroll'";
|
|
|
- var resultActivityEnroll= await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(enrollSQL, $"ActivityEnroll-{activity.id}");
|
|
|
- List<ExpertContestTaskDto > activityEnrollsInvalid = new List<ExpertContestTaskDto>();
|
|
|
- Dictionary<string, List<ActivityEnroll>> uploads = new Dictionary<string, List<ActivityEnroll>>();
|
|
|
- foreach (ActivityEnroll enroll in resultActivityEnroll.list)
|
|
|
- {
|
|
|
- var period = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
|
|
|
- var subject = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
|
|
|
- string periodSubjectKey =string.Empty;
|
|
|
- int count = 0;
|
|
|
-
|
|
|
- if (enroll.upload != null && enroll.upload.sokrates.IsNotEmpty())
|
|
|
- {
|
|
|
- count += enroll.upload.sokrates.Count;
|
|
|
- }
|
|
|
- if (enroll.upload != null && enroll.upload.files.IsNotEmpty())
|
|
|
- {
|
|
|
- count += enroll.upload.files.Count;
|
|
|
- }
|
|
|
- //学段学科不匹配
|
|
|
- var taskDto = new ExpertContestTaskDto
|
|
|
- {
|
|
|
- uploadId = enroll.upload?.uploadId,
|
|
|
- name = $"{enroll?.schoolName}-{enroll?.tmdName}",
|
|
|
- uploadTypes = new List<string> { enroll?.upload.type },
|
|
|
- count = count,
|
|
|
- cipher = enroll.contest?.cipher,
|
|
|
- type = enroll.contest != null ? enroll.contest.type : 0,
|
|
|
- leader = enroll.contest != null ? enroll.contest.type : 0,
|
|
|
- tmdid = enroll.id,
|
|
|
- status = -1,
|
|
|
- score = -1,
|
|
|
- //detailScore=new List<RuleConfig>()
|
|
|
- members = new List<IdNameCode>(),
|
|
|
- periodSubjectKey = periodSubjectKey,
|
|
|
- period = period?.val,
|
|
|
- subject = subject?.val,
|
|
|
-
|
|
|
- };
|
|
|
- if (distribute.Equals("period"))
|
|
|
- {
|
|
|
- if (period != null)
|
|
|
- {
|
|
|
- periodSubjectKey = $"{period.val}-";
|
|
|
- }
|
|
|
- else {
|
|
|
- taskDto.available = 2;
|
|
|
- activityEnrollsInvalid.Add(taskDto);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else if (distribute.Equals("subject"))
|
|
|
- {
|
|
|
-
|
|
|
- if (subject != null)
|
|
|
- {
|
|
|
- periodSubjectKey = $"-{subject.val}";
|
|
|
- }
|
|
|
- else {
|
|
|
- taskDto.available = 3;
|
|
|
- activityEnrollsInvalid.Add(taskDto);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else if (distribute.Equals("periodAndSubject"))
|
|
|
- {
|
|
|
-
|
|
|
- if (period != null && subject != null)
|
|
|
- {
|
|
|
- periodSubjectKey = $"{period.val}-{subject.val}";
|
|
|
- }
|
|
|
- else {
|
|
|
- taskDto.available = 4;
|
|
|
- activityEnrollsInvalid.Add(taskDto);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- //else if (distribute.Equals("none"))
|
|
|
- //{
|
|
|
-
|
|
|
- //}
|
|
|
- else {
|
|
|
- periodSubjectKey = "-";
|
|
|
- }
|
|
|
-
|
|
|
- if (periodSubjectKeys.Contains(periodSubjectKey))
|
|
|
- {
|
|
|
- if (!string.IsNullOrWhiteSpace(enroll.upload?.uploadId))
|
|
|
- {
|
|
|
- if (uploads.ContainsKey(enroll.upload.uploadId))
|
|
|
- {
|
|
|
- uploads[enroll.upload.uploadId].Add(enroll);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- uploads[enroll.upload.uploadId]= new List<ActivityEnroll>() { enroll};
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- taskDto.available = 5;
|
|
|
- activityEnrollsInvalid.Add(taskDto);
|
|
|
- //未上传作品
|
|
|
- //activityEnrollsInvalid.Add((enroll, 2));
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- taskDto.available =6;
|
|
|
- activityEnrollsInvalid.Add(taskDto);
|
|
|
- //学段学科不匹配
|
|
|
- //activityEnrollsInvalid.Add((enroll, 1));
|
|
|
- }
|
|
|
- }
|
|
|
- List<ExpertContestTaskDto> expertContestTasks = new List<ExpertContestTaskDto>();
|
|
|
- List<ExpertContestTaskDto> expertContestTasksDB = new List<ExpertContestTaskDto>();
|
|
|
- foreach (var upload in uploads.Keys)
|
|
|
- {
|
|
|
-
|
|
|
- var team = uploads[upload].FindAll(z => z.contest?.type==1);
|
|
|
- if (team.IsNotEmpty())
|
|
|
- {
|
|
|
- var leader = team.FindAll(z => z.contest?.leader==1);
|
|
|
- //有队长,说明是作品是一个人的队伍的作品。或者是由队长统一上传的作品。
|
|
|
- if (leader.IsNotEmpty())
|
|
|
- {
|
|
|
- List<IdNameCode> members = team.Select(z => new IdNameCode { id=z.id,code=z.schoolId,picture=z.tmdPicture,nickname=z.tmdName,name=z.contest?.enrollInfos?.Find(e=>e.code.Equals("name")).val}).ToList();
|
|
|
- //队长的报名信息
|
|
|
- var enroll = leader?.First();
|
|
|
- if (enroll!= null)
|
|
|
- {
|
|
|
- string name = enroll.contest?.teamName;
|
|
|
- var period = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
|
|
|
- var subject = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
|
|
|
- string periodSubjectKey = $"{period?.val}-{subject?.val}";
|
|
|
- if (string.IsNullOrEmpty(name))
|
|
|
- {
|
|
|
- name=$"{enroll.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val}({team.Count})";
|
|
|
- }
|
|
|
- int count = 0;
|
|
|
- if (enroll.upload.sokrates.IsNotEmpty())
|
|
|
- {
|
|
|
- count+=enroll.upload.sokrates.Count;
|
|
|
- }
|
|
|
- if (enroll.upload.files.IsNotEmpty())
|
|
|
- {
|
|
|
- count+=enroll.upload.files.Count;
|
|
|
- }
|
|
|
- expertContestTasks.Add(new ExpertContestTaskDto
|
|
|
- {
|
|
|
- uploadId = upload,
|
|
|
- name = $"{uploads[upload].First()?.schoolName}-{name}",
|
|
|
- uploadTypes = new List<string> { enroll?.upload.type },
|
|
|
- count = count,
|
|
|
- cipher = enroll.contest?.cipher,
|
|
|
- type = 1,
|
|
|
- leader = 1,
|
|
|
- tmdid = enroll.id,
|
|
|
- status = -1,
|
|
|
- score = -1,
|
|
|
- //detailScore=new List<RuleConfig>()
|
|
|
- members = members,
|
|
|
- periodSubjectKey = periodSubjectKey,
|
|
|
- period = period?.val,
|
|
|
- subject = subject?.val
|
|
|
- }) ;
|
|
|
- }
|
|
|
- }
|
|
|
- //没有队长,则是队员上传的作品(队员自己上传,不是队长统一上传的)、
|
|
|
- else {
|
|
|
- if (team.Count==1) {
|
|
|
- var enroll = team?.First();
|
|
|
- if (enroll!= null)
|
|
|
- {
|
|
|
- var period = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
|
|
|
- var subject = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
|
|
|
- string periodSubjectKey = $"{period?.val}-{subject?.val}";
|
|
|
- string name = enroll.contest?.teamName;
|
|
|
- if (string.IsNullOrEmpty(name))
|
|
|
- {
|
|
|
- name=$"{enroll.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val}({team.Count})";
|
|
|
- }
|
|
|
- int count = 0;
|
|
|
- if (enroll.upload.sokrates.IsNotEmpty())
|
|
|
- {
|
|
|
- count+=enroll.upload.sokrates.Count;
|
|
|
- }
|
|
|
- if (enroll.upload.files.IsNotEmpty())
|
|
|
- {
|
|
|
- count+=enroll.upload.files.Count;
|
|
|
- }
|
|
|
- expertContestTasks.Add(new ExpertContestTaskDto
|
|
|
- {
|
|
|
- uploadId = upload,
|
|
|
- name=$"{uploads[upload].First()?.schoolName}-{name}",
|
|
|
- uploadTypes=new List<string> { enroll?.upload.type },
|
|
|
- count=count,
|
|
|
- cipher=enroll.contest?.cipher,
|
|
|
- type=1,
|
|
|
- leader=0,
|
|
|
- tmdid=enroll.id,
|
|
|
- status=-1,
|
|
|
- score=-1,
|
|
|
- //detailScore=new List<RuleConfig>()
|
|
|
- // members= new List<IdNameCode>()
|
|
|
- periodSubjectKey=periodSubjectKey,
|
|
|
- period = period?.val,
|
|
|
- subject = subject?.val
|
|
|
- }) ;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- //个人
|
|
|
- var enroll = uploads[upload]?.First();
|
|
|
- if (enroll!= null) {
|
|
|
- var period = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("period"));
|
|
|
- var subject = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("subject"));
|
|
|
- string periodSubjectKey = $"{period?.val}-{subject?.val}";
|
|
|
- string name = enroll.contest?.enrollInfos?.Find(z => z.code.Equals("name"))?.val;
|
|
|
- if (!string.IsNullOrEmpty(name))
|
|
|
- {
|
|
|
- name=$"({name})";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- name=string.Empty;
|
|
|
- }
|
|
|
- int count = 0;
|
|
|
- if (enroll.upload.sokrates.IsNotEmpty()) {
|
|
|
- count+=enroll.upload.sokrates.Count;
|
|
|
- }
|
|
|
- if (enroll.upload.files.IsNotEmpty())
|
|
|
- {
|
|
|
- count+=enroll.upload.files.Count;
|
|
|
- }
|
|
|
- expertContestTasks.Add(new ExpertContestTaskDto
|
|
|
- {
|
|
|
- uploadId = upload,
|
|
|
- name=$"{uploads[upload].First()?.schoolName}-{uploads[upload].First()?.tmdName}{name}",
|
|
|
- uploadTypes=new List<string> { enroll?.upload.type },
|
|
|
- count=count,
|
|
|
- cipher=null,
|
|
|
- type=0,
|
|
|
- leader=-1,
|
|
|
- tmdid=enroll.id,
|
|
|
- status=-1,
|
|
|
- score=-1,
|
|
|
- //detailScore=new List<RuleConfig>()
|
|
|
- //members= new List<IdNameCode>()
|
|
|
- periodSubjectKey=periodSubjectKey,
|
|
|
- period = period?.val,
|
|
|
- subject = subject?.val
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (expertContestTasks.IsNotEmpty() && experts!=null && experts.Count()>0 && taskCount > 0) {
|
|
|
-
|
|
|
- string taskSQL = $"select value c from c where c.pk='ActivityExpertTask'";
|
|
|
- List<ExpertContestTaskDto> worksDB= new List<ExpertContestTaskDto>();
|
|
|
- var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityExpertTask>(taskSQL, $"ActivityExpertTask-{activity.id}") ;
|
|
|
- if (result.list.IsNotEmpty()) {
|
|
|
- foreach(var item in result.list)
|
|
|
- {
|
|
|
- worksDB.AddRange(item.contestTasks.Select(z =>
|
|
|
- new ExpertContestTaskDto
|
|
|
- {
|
|
|
- expertId = item.id,
|
|
|
- available = 1,
|
|
|
- uploadId = z.uploadId,
|
|
|
- name = z.name,
|
|
|
- uploadTypes = z.uploadTypes,
|
|
|
- count = z.count,
|
|
|
- cipher=z.cipher,type=z.type,
|
|
|
- leader=z.leader,members=z.members,
|
|
|
- tmdid=z.tmdid,
|
|
|
- score=z.score,
|
|
|
- status=z.status,
|
|
|
- detailScore=z.detailScore
|
|
|
- }));
|
|
|
- }
|
|
|
- }
|
|
|
- var data = AssignWorksToExperts(expertContestTasks, worksDB, experts, taskCount);
|
|
|
- expertContestTasks = data.assignmentsAdd;
|
|
|
- expertContestTasksDB = worksDB;
|
|
|
- activityEnrollsInvalid.AddRange(data.assignmentsInvalid);
|
|
|
- }
|
|
|
- return (expertContestTasks, activityEnrollsInvalid, expertContestTasksDB);
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
public static async Task<(List<ExpertContestTaskDto> expertContestTasks, List<ExpertContestTaskDto> activityEnrollsInvalid, List<ExpertContestTaskDto> expertContestTasksDB)>
|
|
|
AllocationTask(AzureCosmosFactory _azureCosmos, IEnumerable<ExpertPeriodSubjectDto> experts, Contest contest, HashSet<string> periodSubjectKeys, string distribute, int taskCount)
|
|
|
{
|
|
@@ -735,15 +431,134 @@ namespace TEAMModelOS.SDK
|
|
|
}
|
|
|
return no;
|
|
|
}
|
|
|
- public static async Task<List<TeacherActivityDto>> TeacherActivityList(AzureCosmosFactory _azureCosmos,AzureStorageFactory _azureStorage, JsonElement request, string tmdid)
|
|
|
+ public static async Task<IEnumerable<ActivityDto>> AreaActivityList(AzureCosmosFactory _azureCosmos, AzureStorageFactory _azureStorage, JsonElement request, string _areaId, int isCount = 0)
|
|
|
+ {
|
|
|
+ string yearSql = string.Empty;
|
|
|
+ if (isCount==0) {
|
|
|
+ yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
|
+ if (request.TryGetProperty("year", out JsonElement _year))
|
|
|
+ {
|
|
|
+ yearSql = $" and c.year={_year}";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ string sql = $"select value c from c where c.owner='{_areaId}' {yearSql} ";
|
|
|
+ var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sql, "Activity");
|
|
|
+ result.list.ForEach(z => {
|
|
|
+ var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(z.owner, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
|
|
|
+ z.sas=blob_sas;
|
|
|
+ });
|
|
|
+ return result.list.OrderByDescending(z => z.stime);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static async Task<List<ActivityDto>> SchoolActivityList(AzureCosmosFactory _azureCosmos, AzureStorageFactory _azureStorage, JsonElement request, string school, int isCount = 0) {
|
|
|
+ School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
+ List<ActivityDto> activities = new List<ActivityDto>();
|
|
|
+ string yearSql = string.Empty;
|
|
|
+ if (isCount==0)
|
|
|
+ {
|
|
|
+ yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
|
+ if (request.TryGetProperty("year", out JsonElement _year))
|
|
|
+ {
|
|
|
+ yearSql = $" and c.year={_year}";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取开放的
|
|
|
+ {
|
|
|
+
|
|
|
+ //完全开放 所有的学校
|
|
|
+ string sqlOpen = $"select value c from c where c.scope='public' {yearSql} and (c.publish=1 or c.publish=2 ) 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");
|
|
|
+ activities.AddRange(resultOpen.list);
|
|
|
+ //部分学校
|
|
|
+ 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 =>
|
|
|
+ {
|
|
|
+ var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
+ if (confirmedSchool==null)
|
|
|
+ {
|
|
|
+ z.confirmedSchools.Add(new ActivityConfirmedSchool
|
|
|
+ {
|
|
|
+ id=schoolbase.id,
|
|
|
+ name=schoolbase.name,
|
|
|
+ picture=schoolbase.picture,
|
|
|
+ status=0
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ activities.AddRange(resultSchool.list);
|
|
|
+ }
|
|
|
+ //获取区级下放的
|
|
|
+ {
|
|
|
+
|
|
|
+ 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 =>
|
|
|
+ {
|
|
|
+ var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
+ if (confirmedSchool==null)
|
|
|
+ {
|
|
|
+ z.confirmedSchools.Add(new ActivityConfirmedSchool
|
|
|
+ {
|
|
|
+ id=schoolbase.id,
|
|
|
+ name=schoolbase.name,
|
|
|
+ picture=schoolbase.picture,
|
|
|
+ status=0
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ activities.AddRange(resultOpen.list);
|
|
|
+ //区级部分学校
|
|
|
+ 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 =>
|
|
|
+ {
|
|
|
+ var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
|
|
|
+ if (confirmedSchool==null)
|
|
|
+ {
|
|
|
+ z.confirmedSchools.Add(new ActivityConfirmedSchool
|
|
|
+ {
|
|
|
+ id=schoolbase.id,
|
|
|
+ name=schoolbase.name,
|
|
|
+ picture=schoolbase.picture,
|
|
|
+ status=0
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ activities.AddRange(resultSchool.list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取学校自己的
|
|
|
+ {
|
|
|
+ string sqlSchool = $"select value c from c where c.scope='school'{yearSql} and c.owner='{school}' ";
|
|
|
+ var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
|
|
|
+ activities.AddRange(resultSchool.list);
|
|
|
+ }
|
|
|
+ activities.ForEach(z =>
|
|
|
+ {
|
|
|
+ var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(z.owner, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
|
|
|
+ z.sas=blob_sas;
|
|
|
+ });
|
|
|
+
|
|
|
+ return activities;
|
|
|
+ }
|
|
|
+ public static async Task<List<TeacherActivityDto>> TeacherActivityList(AzureCosmosFactory _azureCosmos,AzureStorageFactory _azureStorage, JsonElement request, string tmdid, int isCount = 0)
|
|
|
{
|
|
|
List<TeacherActivityDto> activities = new List<TeacherActivityDto>();
|
|
|
HashSet<string> inviteActivityIds = new HashSet<string>();
|
|
|
- string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
|
- if (request.TryGetProperty("year", out JsonElement _year) && int.TryParse($"{_year}",out int year ))
|
|
|
+ string yearSql = string.Empty;
|
|
|
+ if (isCount==0)
|
|
|
{
|
|
|
- yearSql = $" and c.year={year}";
|
|
|
+ yearSql = $" and c.year={DateTimeOffset.Now.Year}";
|
|
|
+ if (request.TryGetProperty("year", out JsonElement _year) && int.TryParse($"{_year}", out int year))
|
|
|
+ {
|
|
|
+ yearSql = $" and c.year={year}";
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
//先获取邀请制的
|
|
|
string sqlInvite = $"select value c from c join t in c.inviteTeachers where t.id='{tmdid}' and c.pk='ActivityTeacher'";
|
|
|
var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(sqlInvite);
|