Esempio n. 1
0
 /// <summary>
 /// 录入题目时,获取知识点
 /// </summary>
 /// <param name="paging"></param>
 /// <param name="id"></param>
 /// <param name="ids"></param>
 /// <param name="kernelKownledagePointId"></param>
 /// <param name="nameOrkey"></param>
 /// <param name="level"></param>
 /// <returns></returns>
 public IList <Yw_Knowledge> GetKnowledgeForSubject(
     DtoKnowledgeSearch search)
 {
     if (search.Ids != null && search.Ids.Count > 0)
     {
         return(KnowledgeRepository.GetKnowledgeByIds(search));
     }
     else if (search.Keyword.HasValue())
     {
         var knowledgeIds = KnowledgeIndexRepository.GetPagingKnowledgeIndexIds(
             search.Pagination,
             (int)search.Level.Value,
             search.Keyword,
             search.ParentId);
         Dictionary <int, int> orderDic = knowledgeIds.ToOrderDic();
         var knowledgeList = KnowledgeRepository.GetKnowledgeByIds(knowledgeIds);
         knowledgeList = knowledgeList.OrderBy(x => orderDic[x.Ykl_Id]).ToList();
         return(knowledgeList);
     }
     else
     {
         return(KnowledgeRepository.GetPagingKnowledge(
                    search.Pagination,
                    0,
                    (int)search.Level.Value));
     }
 }
Esempio n. 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;
                }
            }
        }
Esempio n. 3
0
        public List <Yw_Knowledge> GetKnowledgeTree(int parentId, int currentId)
        {
            var knowledgeTree = new List <Yw_Knowledge>();

            if (parentId == 0)
            {
                knowledgeTree = KnowledgeRepository.GetKnowledgeTreeByParent(parentId);
                var childNode = KnowledgeRepository.GetKnowledgeTreeByParent(currentId);
                knowledgeTree.AddRange(childNode);
                return(knowledgeTree.Distinct().ToList());
            }
            else
            {
                //向下获取一个子节点
                knowledgeTree = KnowledgeRepository.GetKnowledgeTreeByParent(currentId);

                var ss  = KnowledgeRepository.GetKnowledgeTreeByChild(currentId);
                var ids = ss.Select(s => s.Ykl_Id).ToList();
                knowledgeTree.AddRange(KnowledgeRepository.GetKnowledgeTreeByIds(ids));
                return(knowledgeTree.ToList());
            }
        }
Esempio n. 4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var config = new ServerConfig();

            Configuration.Bind(config);

            var knowledgeContext = new KnowledgeContext(config.MongoDB);
            var repo             = new KnowledgeRepository(knowledgeContext);

            services.AddSingleton <IKnowledgeRepository>(repo);
            services.AddCors(options =>
            {
                options.AddPolicy(MyAllowSpecificOrigins,
                                  builder =>
                {
                    builder.WithOrigins("http://localhost:5000", "https://localhost:5000", "http://localhost:5001", "https://localhost:5001")
                    .AllowAnyHeader()
                    .AllowAnyMethod();
                });
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
            // services.AddControllers();
        }
Esempio n. 5
0
        public List <Yw_Knowledge> GetKnowledgeParentNode(PagingObject paging, int level, string idOrName)
        {
            List <Yw_Knowledge> knowledgeList = new List <Yw_Knowledge>();

            if (!string.IsNullOrEmpty(idOrName))
            {
                if (idOrName.IsNumberic() && idOrName.Length >= 5)
                {
                    knowledgeList = KnowledgeRepository.GetPagingKnowledge(paging, idOrName._ToInt32(), level);
                }
                else
                {
                    var ids = KnowledgeIndexRepository.GetPagingKnowledgeIndexIds(paging, level, idOrName);
                    Dictionary <int, int> orderDic = ids.ToOrderDic();
                    knowledgeList = KnowledgeRepository.GetKnowledgeByIds(ids).ToList();
                    knowledgeList = knowledgeList.OrderBy(x => orderDic[x.Ykl_Id]).ToList();
                }
            }
            else
            {
                knowledgeList = KnowledgeRepository.GetPagingKnowledge(paging, idOrName._ToInt32(), level);
            }
            return(knowledgeList);
        }
Esempio n. 6
0
        public List <Yw_Knowledge> GetPagingKnowledge(PagingObject paging, int id, string nameOrkey, int level)
        {
            List <Yw_Knowledge> knowledgeList = new List <Yw_Knowledge>();

            if (id > 0)
            {
                knowledgeList = KnowledgeRepository.GetPagingKnowledge(paging, id, level);
            }
            else
            {
                if (!string.IsNullOrEmpty(nameOrkey))
                {
                    var knowledgeIds = KnowledgeIndexRepository.GetPagingKnowledgeIndexIds(paging, level, nameOrkey);
                    Dictionary <int, int> orderDic = knowledgeIds.ToOrderDic();
                    knowledgeList = KnowledgeRepository.GetKnowledgeByIds(knowledgeIds);
                    knowledgeList = knowledgeList.OrderBy(x => orderDic[x.Ykl_Id]).ToList();
                }
                else
                {
                    knowledgeList = KnowledgeRepository.GetPagingKnowledge(paging, id, level);
                }
            }
            return(knowledgeList);
        }
Esempio n. 7
0
 public KnowledgeBusiness(IUnitOfWork _unitOfWork)
 {
     unitOfWork = _unitOfWork;
     repository = new KnowledgeRepository(unitOfWork);
 }
Esempio n. 8
0
 public KnowledgeService(CCSSCOREContext context)
 {
     repository     = new KnowledgeRepository(context);
     techRepository = new TechnologyRepository(context);
 }
Esempio n. 9
0
 public DtoKnowledge GetKnowledge(int id)
 {
     return(KnowledgeRepository.GetKnowledge(id));
 }
Esempio n. 10
0
 public List <Yw_Knowledge> GetLazyTree(int parentId)
 {
     return(KnowledgeRepository.GetKnowledgeTreeByParent(parentId));
 }
Esempio n. 11
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;
                }
            }
        }
Esempio n. 12
0
 public Yw_Knowledge Get(int id)
 {
     return(KnowledgeRepository.Get(id));
 }