CrazyIter_Bin 1 سال پیش
والد
کامیت
49d281bdc1

+ 25 - 0
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -529,6 +529,31 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                     if (groupChange.stuleave.Count > 0)
                         await BIStats.SetTypeAddStats(client, _dingDing, groupChange.school, "Student", -groupChange.stuleave.Count);//BI统计增/减量
                 }
+                if ((groupChange.type.Equals("class") || groupChange.type.Equals("teach") || groupChange.type.Equals("student"))  && "school".Equals(groupChange.scope) &&  "upsert".Equals(groupChange.status) && !string.IsNullOrWhiteSpace(groupChange.school)) {
+                   
+                    var data = await  GroupListService.GetMemberByListids(_coreAPIHttpService, client, _dingDing, new List<string> { groupChange.listid }, groupChange.school);
+                    if (data.groups.IsNotEmpty()) {
+                        School school = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(groupChange.school, new PartitionKey("Base"));
+                        
+                        //
+                       var period = school.period.Find(z => z.id.Equals(data.groups.First().periodId));
+                        if (period != null)
+                        {
+                            var dataSemester =  SchoolService.GetSemester(period,DateTimeOffset.Now.ToUnixTimeMilliseconds());
+
+                            string id = $"{dataSemester.studyYear}-{dataSemester.currSemester.id}-{data.groups.First().id}";
+                            string code = $"GroupListSemester-{groupChange.school}";
+                            GroupListSemester groupListSemester = data.groups.First().ToJsonString().ToObject<GroupListSemester>();
+                            groupListSemester.id = id ;
+                            groupListSemester.code = code ;
+                            groupListSemester.pk="GroupListSemester";
+                            groupListSemester.semesterId=dataSemester.currSemester.id;
+                            groupListSemester.groupListId=data.groups.First().id ;
+                            groupListSemester.studyYear=dataSemester.studyYear;
+                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).UpsertItemAsync<GroupListSemester>(groupListSemester, new PartitionKey(groupListSemester.code));
+                        }
+                    }
+                }
             }
             catch (Exception ex)
             {

+ 71 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/GroupList.cs

@@ -252,6 +252,7 @@ namespace TEAMModelOS.SDK.Models
         //所在名单集合
         public List<string> groupListIds { get; set; } = new List<string>();
         public int year { get; set; }
+        public string periodId { get; set; }
 
     }
     public class GroupListGrp
@@ -437,4 +438,74 @@ namespace TEAMModelOS.SDK.Models
         public string picture { get; set; }
         public string nickname { get; set; }
     }
+
+
+    public class GroupListSemester:CosmosEntity
+    {
+        //id 学年-学期-id
+        //code GroupListSemester-hbcn
+        public GroupListSemester()
+        {
+            pk = "GroupListSemester";
+        }
+        public string groupListId { get; set; }
+        public string semesterId { get; set; }
+        public int studyYear { get; set; }
+        public string name { get; set; }
+        //标记该名单唯一code
+        public string no { get; set; }
+        public string periodId { get; set; }
+        //课程id,需要标记则标记
+        //public string courseId { get; set; }
+        public string scope { get; set; }
+        public string school { get; set; }
+        public string creatorId { get; set; }
+        /// <summary>
+        ///研修培训名单,yxtrain 教学班teach ,行政班(学生搜寻classId动态返回)class ,教研组research,学科组(学科搜寻动态返回)subject,好友friend,管理manage,群组group等,"activity",
+        ///TeacherAll 全体教师,StudentAll全体学生 TchStuAll,全体师生 动态返回
+        /// </summary>
+        public string type { get; set; } = "teach";
+        public int year { get; set; }
+        /// <summary>
+        /// 名单过期时间。
+        /// </summary>
+        public long expire { get; set; } = 0;
+        /// <summary>
+        /// 醍摩豆id成员数量
+        /// </summary>
+        public int tcount { get; set; }
+        /// <summary>
+        /// 校内账号成员数量
+        /// </summary>
+        public int scount { get; set; }
+        public List<RMember> members { get; set; } = new List<RMember>();
+        public string leader { get; set; }
+        public int froms { get; set; } = 0;
+        /// <summary>
+        /// 个人名单是否开放 加入。0 不允许,1 允许。
+        /// </summary>
+        public int joinLock { get; set; } = 1;
+        /// <summary>
+        ///补充毕业0在校,1毕业 
+        /// </summary>
+        public int graduate { get; set; } = 0;
+        /// <summary>
+        /// 是否开启审核,0未开启,1开启。
+        /// </summary>
+        public int review { get; set; } = 0;
+        /// <summary>
+        /// 加入人数200人,学生加入已满200 自动关闭加入。可手动解除限制,开启审核时,关闭人数上限设置机制
+        /// </summary>
+        public int limitCount { get; set; } = 200;
+        /// <summary>
+        /// 二维码过期时间
+        /// </summary>
+        public long qrcodeExpire { get; set; }
+        /// <summary>
+        /// 二维码 天数
+        /// </summary>
+        public int qrcodeDays { get; set; }
+        public HashSet<int> grades { get; set; } = new HashSet<int>();
+    }
+
 }

+ 1 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/Inner/GroupChange.cs

@@ -55,5 +55,6 @@ namespace TEAMModelOS.SDK.Models
         /// 名单的状态 upsert(创建或更新)   delete(删除状态,用于移除课程名单id,活动名单id) ,默认upsert
         /// </summary>
         public string status { get; set; } = "upsert";
+        public string periodId { get; set; }
     }
 }

+ 29 - 3
TEAMModelOS.SDK/Models/Service/GroupListService.cs

@@ -781,6 +781,7 @@ namespace TEAMModelOS.SDK
             {
                 return (members, groupLists);
             }
+            string periodId = string.Empty;
             if (classes.Count == 1 && classes.First().Equals("TeacherAll") && !string.IsNullOrEmpty(school))
             {
                 //默认的教研组
@@ -949,6 +950,7 @@ namespace TEAMModelOS.SDK
                     }
                 }
                 groupLists.AddRange(groups.SelectMany(x => x.Value).ToList());
+              
                 if (students.IsNotEmpty())
                 {
                     List<string> sqlList = students.Select(x => x.classId).ToList();
@@ -975,6 +977,7 @@ namespace TEAMModelOS.SDK
                                 year= y.year,
                                 graduate = y.graduate,
                                 gender= y.gender,
+                                periodId=y.periodId,
                             }).ToList();
                         members.AddRange(smembers);
 
@@ -1048,10 +1051,29 @@ namespace TEAMModelOS.SDK
                 {
                     rmembers.AddRange(students);
                 }
+                groupLists.ForEach(x => {
+                    if (string.IsNullOrWhiteSpace(x.periodId)) {
+                        var meb = x.members.Where(z => !string.IsNullOrWhiteSpace(z.periodId)).FirstOrDefault();
+                        if (meb!= null)
+                        {
+                            x.periodId=meb?.periodId;
+                        }
+                    }
+                });
                 return (rmembers, groupLists);
             }
             else
             {
+                groupLists.ForEach(x => {
+                    if (string.IsNullOrWhiteSpace(x.periodId))
+                    {
+                        var meb = x.members.Where(z => !string.IsNullOrWhiteSpace(z.periodId)).FirstOrDefault();
+                        if (meb!= null)
+                        {
+                            x.periodId=meb?.periodId;
+                        }
+                    }
+                });
                 return (members, groupLists);
             }
         }
@@ -1147,6 +1169,7 @@ namespace TEAMModelOS.SDK
                 List<RMember> students = members.FindAll(x => x.type == 2).Where((x, i) => members.FindAll(x => x.type == 2).FindIndex(n => n.id.Equals(x.id) && n.code.Equals(x.code)) == i).ToList();
                 var stu = students.GroupBy(x => x.code).Select(y => new { key = y.Key, list = y.ToList() });
                 List<Student> studentsData = new List<Student>();
+                string periodId = "";
                 if (stu != null)
                 {
                     foreach (var item in stu)
@@ -1154,12 +1177,13 @@ namespace TEAMModelOS.SDK
                         var ids = item.list.Select(x => x.id).ToList();
                         if (ids.IsNotEmpty())
                         {
-                            StringBuilder stuSql = new StringBuilder($"SELECT distinct c.name,c.id,c.code,c.picture,c.no,c.irs,c.classId ,c.graduate,c.year FROM c ");
+                            StringBuilder stuSql = new StringBuilder($"SELECT distinct c.name,c.id,c.code,c.picture,c.no,c.irs,c.classId ,c.graduate,c.year ,c.periodId  FROM c ");
                             string insql = string.Join(",", ids.Select(x => $"'{x}'"));
                             stuSql.Append($"where  c.id in ({insql})");
                             await foreach (var student in client.GetContainer(Constant.TEAMModelOS, "Student").GetItemQueryIterator<Student>(queryText: stuSql.ToString(),
                                 requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-{item.key}") }))
                             {
+                                periodId=student.periodId;
                                 student.schoolId = item.key;
                                 studentsData.Add(student);
                             }
@@ -1333,6 +1357,7 @@ namespace TEAMModelOS.SDK
                         x.graduate = student.graduate;
                         x.year = student.year;
                         x.gender= student.gender;
+                        x.periodId = student.periodId;
                     }
                 });
                 var mbs = tmdids;
@@ -1370,8 +1395,8 @@ namespace TEAMModelOS.SDK
                                 y.graduate = student.graduate;
                                 y.gender = student.gender;
                                 y.year = student.year;
-                                y.gender = student.gender;
-                                x.grades.Add(student.year);
+                                x.periodId = student.periodId;
+                                x.grades.Add(student.year); 
                             }
                         }
                     });
@@ -1386,6 +1411,7 @@ namespace TEAMModelOS.SDK
                             }
                         }
                     }
+                    x.periodId=periodId;
                 });
                 HashSet<string> schoolCodes = groups.SelectMany(x => x.members).Where(y => !string.IsNullOrEmpty(y.code)).Select(z => z.code).ToHashSet();
                 if (schoolCodes != null && schoolCodes.Count > 0)