Browse Source

update 。

CrazyIter_Bin 2 years ago
parent
commit
ac8a8bfd22
1 changed files with 32 additions and 6 deletions
  1. 32 6
      TEAMModelOS.FunctionV4/HttpTrigger/IESHttpTrigger.cs

+ 32 - 6
TEAMModelOS.FunctionV4/HttpTrigger/IESHttpTrigger.cs

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