public ActionResult AddKnowledge(DtoKnowledgeRequest inputModel) { try { KnowledgeBll knowledgeBll = new KnowledgeBll(); //var knowledge = inputModel.ConvertTo<Yw_Knowledge>(); if (inputModel.Ykl_Id > 0) { inputModel.Ykl_Editor = CurrentUserID; knowledgeBll.Update(inputModel); } else { inputModel.Ykl_Creator = CurrentUserID; inputModel.Ykl_Editor = CurrentUserID; knowledgeBll.Add(inputModel); } return(Json(new JsonSimpleResponse() { State = true, ErrorMsg = "操作成功" })); } catch (Exception ex) { return(Json(new JsonSimpleResponse() { State = false, ErrorMsg = "请选择父知识点" })); } }
public void Add(DtoKnowledgeRequest request) { using (TransactionScope scope = new TransactionScope()) { try { var entity = request.ConvertTo <Yw_Knowledge>(); entity.Ykl_CreateTime = DateTime.Now; entity.Ykl_UpdateTime = DateTime.Now; if (entity.Ykl_Level == (int)KnowledgeEnum.一级知识点) { int knowledgeId = KnowledgeRepository.Add(entity); var knowledge = KnowledgeRepository.Get(knowledgeId); knowledge.Ykl_Path = "/" + knowledgeId; KnowledgeRepository.Update(knowledge); } else { int knowledgeId = KnowledgeRepository.Add(entity); //获取父级节点 var parent = KnowledgeRepository.Get(entity.Ykl_ParentId); //获取当前节点 var knowledge = KnowledgeRepository.Get(knowledgeId); knowledge.Ykl_Path = parent.Ykl_Path + "/" + knowledgeId; KnowledgeRepository.Update(knowledge); parent.Ykl_IsLeaf = true; KnowledgeRepository.Update(parent); } var words = GetWords(entity.Ykl_Name, entity.Ykl_Keywords); AddKnowledgeIndex(words, entity.Ykl_Id, entity.Ykl_Creator, entity.Ykl_Level); scope.Complete(); } catch (Exception ex) { RollbackTran(); throw ex; } } }
public void Update(DtoKnowledgeRequest entity) { using (TransactionScope scope = new TransactionScope()) { try { //查询当前知识点 var knowledge = KnowledgeRepository.Get(entity.Ykl_Id); //查询新的父知识点 var parent = knowledgeRepository.Get(entity.Ykl_ParentId); //如果知识点等级大于1,则不是顶级节点,修改其子节点的所有path if (knowledge.Ykl_Level != (int)KnowledgeEnum.一级知识点) { var oldPath = knowledge.Ykl_Path; var newPath = parent.Ykl_Path + "/" + entity.Ykl_Id; for (int i = 0; i < 100; i++) { if (oldPath == newPath) { break; } int result = knowledgeRepository.UpdatePath(oldPath, newPath); if (result > 0) { Thread.Sleep(100); continue; } break; } } //旧的父知识点Id var oldParent = knowledgeRepository.Get(knowledge.Ykl_ParentId); knowledge.Ykl_Name = entity.Ykl_Name; knowledge.Ykl_Keywords = entity.Ykl_Keywords; knowledge.Ykl_ParentId = entity.Ykl_ParentId; if (entity.Ykl_ResourceId > 0) { knowledge.Ykl_ResourceId = entity.Ykl_ResourceId; } knowledge.Ykl_UpdateTime = DateTime.Now; knowledge.Ykl_Editor = entity.Ykl_Editor; KnowledgeRepository.Update(knowledge); if (oldParent != null && knowledge.Ykl_Level != (int)KnowledgeEnum.四级知识点) { //判断旧的父节点是否还存在其他子节点,如不存在则修改IsLeaf var oldLeaf = KnowledgeRepository.IsLeaf(oldParent.Ykl_Id); if (!oldLeaf) { oldParent.Ykl_IsLeaf = false; KnowledgeRepository.Update(oldParent); } //判断新的父节点IsLeaf是否为true,不为true修改 if (!parent.Ykl_IsLeaf) { parent.Ykl_IsLeaf = true; KnowledgeRepository.Update(parent); } } var words = GetWords(entity.Ykl_Name, entity.Ykl_Keywords); UpdateKnowledgeIndex(knowledge.Ykl_Id, words, entity.Ykl_Creator); scope.Complete(); } catch (Exception ex) { RollbackTran(); throw ex; } } }