소스 검색

处理名单返回结构。

CrazyIter_Bin 3 년 전
부모
커밋
98d8cc7a8f
1개의 변경된 파일25개의 추가작업 그리고 9개의 파일을 삭제
  1. 25 9
      TEAMModelOS.SDK/Models/Service/GroupListService.cs

+ 25 - 9
TEAMModelOS.SDK/Models/Service/GroupListService.cs

@@ -12,8 +12,9 @@ using System.Text.Json;
 using TEAMModelOS.Models;
 using Azure.Messaging.ServiceBus;
 using Microsoft.Extensions.Configuration;
+using TEAMModelOS.SDK.Models.Service;
 
-namespace TEAMModelOS.SDK.Models.Service
+namespace TEAMModelOS.SDK.Models
 {
     public class GroupListService
     {
@@ -395,7 +396,7 @@ namespace TEAMModelOS.SDK.Models.Service
             try {
                 var members = groups.SelectMany(y => y.members).ToList();
                 //去重
-                List<RMember> tmids = members.FindAll(x => x.type == 1).Where((x, i) => members.FindAll(x => x.type == 1).FindIndex(n => n.id.Equals(x.id)) == i).ToList();
+                List<RMember> tmdids = members.FindAll(x => x.type == 1).Where((x, i) => members.FindAll(x => x.type == 1).FindIndex(n => n.id.Equals(x.id)) == i).ToList();
                 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>();
@@ -419,7 +420,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     }
                 }
                 List<TmdUser> tmdsData = new List<TmdUser>();
-                if (tmids.IsNotEmpty())
+                if (tmdids.IsNotEmpty())
                 {
                     string memberTbname = "";
                     //可能会出现在两种表中
@@ -427,7 +428,7 @@ namespace TEAMModelOS.SDK.Models.Service
                         || $"{type}".Equals("friend") || $"{type}".Equals("manage") || $"{type}".Equals("subject"))
                     {
                         StringBuilder tmdidSql = new StringBuilder($"SELECT distinct c.name,c.id,c.picture FROM c ");
-                        string insql = string.Join(",", tmids.Select(x => $"'{x.id}'"));
+                        string insql = string.Join(",", tmdids.Select(x => $"'{x.id}'"));
                         tmdidSql.Append($" where  c.id in ({insql})");
                         memberTbname = "Teacher";
                         await foreach (var tmd in client.GetContainer(Constant.TEAMModelOS, memberTbname).GetItemQueryIterator<TmdUser>(queryText: tmdidSql.ToString(),
@@ -439,7 +440,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     if ($"{type}".Equals("teach") || $"{type}".Equals("friend") || $"{type}".Equals("group"))
                     {
                         //取差集,减少二次搜寻
-                        var tmdidexp = tmids.Select(x => x.id).Except(tmdsData.Select(y => y.id)).ToList();
+                        var tmdidexp = tmdids.Select(x => x.id).Except(tmdsData.Select(y => y.id)).ToList();
                         if (tmdidexp.IsNotEmpty())
                         {
                             StringBuilder tmdidSql = new StringBuilder($"SELECT distinct c.name,c.id,c.picture FROM c ");
@@ -458,7 +459,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     tmdsData = tmdsData.Where((x, i) => tmdsData.FindIndex(n => n.id.Equals(x.id)) == i).ToList();
                 }
                 HashSet<RGroupList> changes = new HashSet<RGroupList>();
-                var unexist_tmdid = tmids.Select(x => x.id).Except(tmdsData.Select(y => y.id)).ToList();
+                var unexist_tmdid = tmdids.Select(x => x.id).Except(tmdsData.Select(y => y.id)).ToList();
                 groups.ForEach(x =>
                 {
                     int item = x.members.RemoveAll(y => unexist_tmdid.Contains(y.id) && y.type == 1);
@@ -476,7 +477,7 @@ namespace TEAMModelOS.SDK.Models.Service
                         changes.Add(x);
                     }
                 });
-                tmids.ForEach(x =>
+                tmdids.ForEach(x =>
                 {
                     var user = tmdsData.Find(y => y.id.Equals(x.id));
                     x.name = user?.name;
@@ -490,7 +491,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     x.no = student?.no;
                     x.classId = student?.classId;
                 });
-                var mbs = tmids;
+                var mbs = tmdids;
                 mbs.AddRange(students);
                 if (changes.Count > 0 && !string.IsNullOrEmpty(groupTbname))
                 {
@@ -502,6 +503,21 @@ namespace TEAMModelOS.SDK.Models.Service
                         await client.GetContainer(Constant.TEAMModelOS, groupTbname).ReplaceItemAsync(group, group.id, new PartitionKey(group.code));
                     }
                 }
+                groups.ForEach(x => x.members.ForEach(y=> {
+                    if (y.type == 1) {
+                        var tmd =tmdids.Find(t => t.id.Equals(y.id));
+                        y.name = tmd?.name;
+                        y.picture = tmd?.picture;
+                    }
+                    if (y.type == 2)
+                    {
+                        var student = students.Find(t => t.id.Equals(y.id)&& t.code.Equals(y.code));
+                        y.name = student?.name;
+                        y.picture = student?.picture;
+                        y.no = student?.no;
+                        y.classId = student?.classId;
+                    }
+                }));
                 return (groups, mbs);
             } catch (Exception ex) {
                 await _dingDing.SendBotMsg($"OS,GetGroupListMemberInfo()\n{ex.Message}{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
@@ -556,7 +572,7 @@ namespace TEAMModelOS.SDK.Models.Service
                 foreach (MQActivity activity in datas)
                 {
                     //已经完结的不再允许加入,还未开始的。
-                    if (string.IsNullOrEmpty(activity.progress)|| activity.progress.Equals("finish") || activity.progress.Equals("pending"))
+                    if (activity.progress.Equals("finish") || activity.progress.Equals("pending"))
                     {
                         continue;
                     }