|
@@ -142,10 +142,12 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
|
|
|
old = item;
|
|
|
break;
|
|
|
}
|
|
|
- var blocks = dim.SelectMany(x => x.blocks);
|
|
|
+
|
|
|
//同步知识块。
|
|
|
+
|
|
|
if (old != null)
|
|
|
{
|
|
|
+ bool change = false;
|
|
|
//如果之前的是1 来源于区级,后面因区级删除,应该还原为0。
|
|
|
var oldBlocks = old.blocks.Select(x => x.name).ToHashSet() ;
|
|
|
var dimBlocks = dim.SelectMany(d => d.blocks);
|
|
@@ -155,14 +157,38 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
|
|
|
var cutBlocks = oldBlocks.Except(dimBlocks);
|
|
|
foreach (var add in addBlocks) {
|
|
|
old.blocks.Add(new Block { name = add,source = 1 });
|
|
|
+ change = true;
|
|
|
}
|
|
|
//减少的还原为0
|
|
|
- old.blocks.ForEach(ob => {
|
|
|
-
|
|
|
- });
|
|
|
+ if (cutBlocks.Any()) {
|
|
|
+ old.blocks.ForEach(ob => {
|
|
|
+ if (cutBlocks.Contains(ob.name))
|
|
|
+ {
|
|
|
+ ob.source = 0;
|
|
|
+ change=true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (change) {
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(old, old.id, new PartitionKey(old.code));
|
|
|
+ }
|
|
|
}
|
|
|
- else {
|
|
|
-
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var blocks = dim.SelectMany(x => x.blocks).Select(bs=> new Block { name=bs,source=-1 });
|
|
|
+ if (blocks.Any()) {
|
|
|
+ var _new = new Knowledge
|
|
|
+ {
|
|
|
+ id = Guid.NewGuid().ToString(),
|
|
|
+ pk = "Knowledge",
|
|
|
+ code = pk,
|
|
|
+ owner = school.id,
|
|
|
+ periodId = period.id,
|
|
|
+ subjectId = subject.id,
|
|
|
+ blocks = blocks.ToList()
|
|
|
+ };
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).CreateItemAsync(_new, new PartitionKey(_new.code));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|