コード例 #1
0
 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 = "请选择父知识点"
         }));
     }
 }
コード例 #2
0
        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;
                }
            }
        }
コード例 #3
0
        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;
                }
            }
        }