|
@@ -22,6 +22,7 @@ using TEAMModelOS.SDK.Helper.Common.StringHelper;
|
|
using System.Dynamic;
|
|
using System.Dynamic;
|
|
using Azure;
|
|
using Azure;
|
|
using TEAMModelOS.SDK.Models.Cosmos.Common;
|
|
using TEAMModelOS.SDK.Models.Cosmos.Common;
|
|
|
|
+using Azure.Messaging.ServiceBus;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
namespace TEAMModelOS.Controllers
|
|
{
|
|
{
|
|
@@ -35,12 +36,13 @@ namespace TEAMModelOS.Controllers
|
|
private AzureCosmosFactory _azureCosmos;
|
|
private AzureCosmosFactory _azureCosmos;
|
|
private readonly DingDing _dingDing;
|
|
private readonly DingDing _dingDing;
|
|
private readonly Option _option;
|
|
private readonly Option _option;
|
|
-
|
|
|
|
- public CourseController(AzureCosmosFactory azureCosmos, DingDing dingDing, IOptionsSnapshot<Option> option)
|
|
|
|
|
|
+ private readonly AzureServiceBusFactory _serviceBus;
|
|
|
|
+ public CourseController(AzureCosmosFactory azureCosmos, DingDing dingDing, IOptionsSnapshot<Option> option , AzureServiceBusFactory serviceBus)
|
|
{
|
|
{
|
|
_azureCosmos = azureCosmos;
|
|
_azureCosmos = azureCosmos;
|
|
_dingDing = dingDing;
|
|
_dingDing = dingDing;
|
|
_option = option?.Value;
|
|
_option = option?.Value;
|
|
|
|
+ _serviceBus = serviceBus;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -191,35 +193,131 @@ namespace TEAMModelOS.Controllers
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
string originCode = stuList.code;
|
|
string originCode = stuList.code;
|
|
stuList.code = stuList.pk + "-" + stuList.code;
|
|
stuList.code = stuList.pk + "-" + stuList.code;
|
|
|
|
+
|
|
if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
if (scope.ToString().Equals("school", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
{
|
|
|
|
+ StuListChange change = new StuListChange() {
|
|
|
|
+ scope=$"{scope}",
|
|
|
|
+ originCode= originCode
|
|
|
|
+ };
|
|
|
|
+ var query = $"SELECT distinct value(c) FROM c where c.id='{stuList.id}'";
|
|
|
|
+ List<StuList> odlStus = new List<StuList>();
|
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<StuList>(queryText: query,
|
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList-{originCode}") }))
|
|
|
|
+ {
|
|
|
|
+ odlStus.Add(item);
|
|
|
|
+ }
|
|
if (stuList.students.IsNotEmpty()) {
|
|
if (stuList.students.IsNotEmpty()) {
|
|
- var query = $"SELECT distinct value(c) FROM c where c.id='{stuList.id}'";
|
|
|
|
- List<StuList> odlStus = new List<StuList>();
|
|
|
|
- await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<StuList>(queryText: query,
|
|
|
|
- requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList-{originCode}") }))
|
|
|
|
- {
|
|
|
|
- odlStus.Add(item);
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
if (odlStus.Count > 0 && odlStus[0].students.IsNotEmpty())
|
|
if (odlStus.Count > 0 && odlStus[0].students.IsNotEmpty())
|
|
{
|
|
{
|
|
StuList oldStu = odlStus[0];
|
|
StuList oldStu = odlStus[0];
|
|
- foreach (var stu in oldStu.students) {
|
|
|
|
- stuList.students.ForEach(x => {
|
|
|
|
- // x.id
|
|
|
|
- });
|
|
|
|
|
|
+ foreach (var stu in stuList.students) {
|
|
|
|
+ bool flag = false;
|
|
|
|
+ //判断新增名单成员不在已经存在的名单
|
|
|
|
+ foreach (var old in oldStu.students) {
|
|
|
|
+ if (old.id == stu.id && old.code == stu.code) {
|
|
|
|
+ flag = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (flag == false) {
|
|
|
|
+ change.stujoin.Add(stu);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- stuList = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "School").UpsertItemAsync(stuList, new PartitionKey($"StuList-{originCode}"));
|
|
|
|
|
|
+ if (stuList.tmids.IsNotEmpty()) {
|
|
|
|
+ if (odlStus.Count > 0 && odlStus[0].tmids.IsNotEmpty()) {
|
|
|
|
+ StuList oldStu = odlStus[0];
|
|
|
|
+ foreach (var tmdid in stuList.tmids) {
|
|
|
|
+ bool flag = false;
|
|
|
|
+ //判断新增名单成员不在已经存在的名单
|
|
|
|
+ foreach (var old in oldStu.tmids)
|
|
|
|
+ {
|
|
|
|
+ if (old==tmdid)
|
|
|
|
+ {
|
|
|
|
+ flag = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (flag == false)
|
|
|
|
+ {
|
|
|
|
+ change.tmdjoin.Add(tmdid);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var messageChange = new ServiceBusMessage(change.ToJsonString());
|
|
|
|
+ messageChange.ApplicationProperties.Add("name", "StuList");
|
|
|
|
+ await _serviceBus.GetServiceBusClient().SendMessageAsync("active-task", messageChange);
|
|
|
|
+ stuList = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "School").UpsertItemAsync(stuList, new PartitionKey($"StuList-{originCode}"));
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ StuListChange change = new StuListChange()
|
|
|
|
+ {
|
|
|
|
+ scope = $"{scope}",
|
|
|
|
+ originCode = originCode
|
|
|
|
+ };
|
|
|
|
+ var query = $"SELECT distinct value(c) FROM c where c.id='{stuList.id}'";
|
|
|
|
+ List<StuList> odlStus = new List<StuList>();
|
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<StuList>(queryText: query,
|
|
|
|
+ requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList") }))
|
|
|
|
+ {
|
|
|
|
+ odlStus.Add(item);
|
|
|
|
+ }
|
|
|
|
+ if (stuList.students.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ if (odlStus.Count > 0 && odlStus[0].students.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ StuList oldStu = odlStus[0];
|
|
|
|
+ foreach (var stu in stuList.students)
|
|
|
|
+ {
|
|
|
|
+ bool flag = false;
|
|
|
|
+ //判断新增名单成员不在已经存在的名单
|
|
|
|
+ foreach (var old in oldStu.students)
|
|
|
|
+ {
|
|
|
|
+ if (old.id == stu.id && old.code == stu.code)
|
|
|
|
+ {
|
|
|
|
+ flag = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (flag == false)
|
|
|
|
+ {
|
|
|
|
+ change.stujoin.Add(stu);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (stuList.tmids.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ if (odlStus.Count > 0 && odlStus[0].tmids.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ StuList oldStu = odlStus[0];
|
|
|
|
+ foreach (var tmdid in stuList.tmids)
|
|
|
|
+ {
|
|
|
|
+ bool flag = false;
|
|
|
|
+ //判断新增名单成员不在已经存在的名单
|
|
|
|
+ foreach (var old in oldStu.tmids)
|
|
|
|
+ {
|
|
|
|
+ if (old == tmdid)
|
|
|
|
+ {
|
|
|
|
+ flag = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (flag == false)
|
|
|
|
+ {
|
|
|
|
+ change.tmdjoin.Add(tmdid);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var messageChange = new ServiceBusMessage(change.ToJsonString());
|
|
|
|
+ messageChange.ApplicationProperties.Add("name", "StuList");
|
|
|
|
+ await _serviceBus.GetServiceBusClient().SendMessageAsync("active-task", messageChange);
|
|
stuList.code = "StuList";
|
|
stuList.code = "StuList";
|
|
stuList = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Teacher").UpsertItemAsync(stuList, new PartitionKey($"StuList"));
|
|
stuList = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Teacher").UpsertItemAsync(stuList, new PartitionKey($"StuList"));
|
|
}
|
|
}
|
|
-
|
|
|
|
return Ok(new { stuList });
|
|
return Ok(new { stuList });
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|