Przeglądaj źródła

1、修改删除方法 ,删除知识点时会同步删除知识块中引用关系的数组中的知识点id
2、修改新增方法,新增知识点时,在points中带上知识块id可以同步在知识块的points中插入当前新增知识点的id

李思淳 5 lat temu
rodzic
commit
dbe7f5d91e

+ 46 - 17
TEAMModelOS/Controllers/Syllabus/KnowledgeController.cs

@@ -38,7 +38,7 @@ namespace TEAMModelOS.Controllers.Syllabus
         /// <param name="request"></param>
         /// <param name="builder"></param>
         /// <returns></returns>
-        delegate Task DeleteDelegate<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder);
+        delegate Task<List<T>> DeleteDelegate<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder);
 
         /// <summary>
         /// 保存或者更新学校 知识点 或者 知识块 代理
@@ -231,7 +231,7 @@ namespace TEAMModelOS.Controllers.Syllabus
             }
             else
             {
-                builder.Error("'SubjectCode' or 'SchoolCode' is null or empty!", "'SubjectCode' or 'SchoolCode' is null or empty!");
+                builder.Error(false,ResponseCode.PARAMS_ERROR,"参数异常");
             }
             return builder.Data(data.OrderBy(m => m.order)).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
         }
@@ -262,6 +262,18 @@ namespace TEAMModelOS.Controllers.Syllabus
 
                         item.id = ShaHashHelper.GetSHA1(item.id);
                     }
+                    if (item.type == 1 && item.points.Count > 0) {
+                        List<string> vs = item.points;
+                        foreach (string s in vs) {
+                        List<Knowledge> knowledges =  await _cosmos.FindByDict<Knowledge>(new Dictionary<string, object>() { { "id",s} });
+                            foreach (Knowledge knowledge  in knowledges) {
+                                knowledge.points.Remove(item.id);
+                                knowledge.points.Add(item.id);
+                            }
+                            await _cosmos.SaveAll(knowledges);
+                        }
+                        item.points.Clear();
+                    }
                 }
                 List<Knowledge> ts = await _cosmos.SaveAll(schoolBlocks);
                 if (ts.Count > 0) builder.Data(ts).Extend(new Dictionary<string, object> { { "count", ts.Count } });
@@ -280,19 +292,26 @@ namespace TEAMModelOS.Controllers.Syllabus
         {
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
             DeleteDelegate<Knowledge> deleteDelegate1 = Delete<Knowledge>;
-            await deleteDelegate1(request, builder);
+            List<Knowledge> Knowledges = await deleteDelegate1(request, builder);
+            foreach (Knowledge Knowledge in Knowledges) {
+                if (Knowledge.type == 1) {
+                    List<Knowledge> knowledges = await  _cosmos.FindSQL<Knowledge>("SELECT value(c) FROM c join a in c.points where Contains(a, '"+ Knowledge.id + "') = true ",true);
+                    foreach (Knowledge knowledge in knowledges) knowledge.points.Remove(Knowledge.id);
+                    await _cosmos.SaveAll(knowledges);
+                }
+            }
             return builder.build();
         }
 
 
-        private async Task Delete<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder)
+        private async Task<List<T>> Delete<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder)
         {
             List<T> schoolBlocks = await _cosmos.FindByDict<T>(request.@params,true);
             Type t = typeof(T);
+            List<T> list = new List<T>();
             if (schoolBlocks.IsNotEmpty())
             {
-                schoolBlocks.ForEach(x => {
-                    //log4net 日志記錄
+                foreach (T item  in schoolBlocks) {
                     string uuidKey = Guid.NewGuid().ToString();
                     string logkey = "【" + uuidKey + "】";
                     LogHelper.Info(this,
@@ -302,32 +321,42 @@ namespace TEAMModelOS.Controllers.Syllabus
                                    + "【删除表】"
                                    + t.Name
                                    + "【删除内容】"
-                                   + x.ToJson()
+                                   + item.ToJson()
                                    + logkey);
-                    _cosmos.DeleteAsync<T>(x);
-                });
-                builder.Data("删除成功");
+                    list.Add(await _cosmos.DeleteAsync<T>(item));
+
+                }
+                if (list.Count > 0)
+                {
+                    builder.Data("删除成功");
+                }
+                else {
+                    builder.Error(false, ResponseCode.FAILED, "删除失败");
+
+                }
             }
             else
             {
-                builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应知识块");
+                builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应删除数据");
             }
-        }
-
 
+            return list;
+        }
 
+/*
         [HttpPost("Test")]
-        public BaseJosnRPCResponse Test(JosnRPCRequest<Dictionary<string, object>> request)
+        public async Task<BaseJosnRPCResponse> TestAsync(JosnRPCRequest<Dictionary<string, object>> request)
         {
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
             if (request.@params != null)
             {
-                IQueryable<dynamic> data = _cosmos.FindByDict("SchoolBlock", request.@params);
-                return builder.Data(data).build();
+               // IQueryable<dynamic> data = _cosmos.FindByDict("SchoolBlock", request.@params);
+              List<Knowledge> knowledges =await  _cosmos.FindSQL<Knowledge>("SELECT value(c) FROM c join a in c.points where Contains(a, 'bbd677cafb8dd84b22213af7675a4f27dbdd9541') = true ",true);
+                return builder.Data(knowledges).build();
 
             }
             else return builder.Error(false, ResponseCode.PARAMS_ERROR, "参数为空").build();
-        }
+        }*/
 
     }
 }

+ 1 - 1
TEAMModelOS/Controllers/Syllabus/ResourceController.cs

@@ -130,7 +130,7 @@ namespace TEAMModelOS.Controllers.Syllabus
             }
             else
             {
-                builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应知识块");
+                builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应删除数据");
             }
         }