|
@@ -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;
|
|
|
}
|