Esempio n. 1
0
        /// <summary>
        /// 获取项目内词组列表
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="projectId">项目ID</param>
        /// <param name="parentId">父ID</param>
        /// <param name="list">关键词数组</param>
        /// <returns>关键词数组</returns>
        private List <GroupTree2Dto> GetKeywordGroup(string userId, string projectId, ObjectId parentId, List <GroupTree2Dto> list)
        {
            //获取第一级词组名
            var builder = Builders <Dnl_KeywordCategory> .Filter;
            var filter  = builder.Eq(x => x.ProjectId, new ObjectId(projectId));//builder.Eq(x => x.UsrId, new ObjectId(userId)) &

            //filter &= builder.Eq(x => x.GroupType, groupType);
            filter &= builder.Eq(x => x.IsDel, false);
            filter &= builder.Eq(x => x.ParentId, parentId);
            var TaskList = MongoDBHelper.Instance.GetDnl_KeywordCategory().Find(filter).Project(x => new GroupTree2Dto
            {
                id     = x._id.ToString(),
                pId    = x.ParentId.ToString(),
                name   = x.Name,
                isNode = false
            }).ToList();

            //若次级词组不存在,返回null,中断递归
            if (TaskList.Count == 0)
            {
                return(null);
            }

            //递归调用GetCategoryTree2(),获取次级词组名和当前组内关键词
            foreach (var treedata in TaskList)
            {
                //GetKeywordGroup(userId, projectId, new ObjectId(treedata.id), list);
                // parent.children.Add(treedata);
                GroupTree2Dto gt = new GroupTree2Dto();
                gt.id   = treedata.id;
                gt.pId  = projectId;
                gt.name = treedata.name;
                list.Add(gt);
            }

            return(list);
        }
Esempio n. 2
0
        public List <GroupTree2Dto> GetAllFenZhu(string userId, string categoryId)
        {
            List <GroupTree2Dto> list = new List <GroupTree2Dto>();

            GroupTree2Dto root = new GroupTree2Dto();
            //获取该项目组名
            var filterCate = Builders <Dnl_ProjectCategory> .Filter.Eq(x => x._id, new ObjectId(categoryId));

            root.name = MongoDBHelper.Instance.GetDnl_ProjectCategory().Find(filterCate).Project(x => x.Name).FirstOrDefault();
            //根目录ID默认为"000000000000000000000000"
            root.id  = "000000000000000000000000";
            root.pId = "0";
            list.Add(root);

            //获取次级项目组名
            var builder = Builders <Dnl_ProjectGroup> .Filter;
            var filter  = builder.Eq(x => x.UsrId, new ObjectId(userId));

            filter &= builder.Eq(x => x.ProjectCategoryId, new ObjectId(categoryId));
            var TaskList = MongoDBHelper.Instance.GetDnl_ProjectGroup().Find(filter).Project(x => new GroupTree2Dto
            {
                id     = x.ProjectId.ToString(),
                pId    = "000000000000000000000000",
                name   = x.Name,
                isNode = true
            }).ToList();

            list.AddRange(TaskList);

            int proNum = list.Count;

            for (int i = 1; i < proNum; i++)
            {
                GetKeywordGroup(userId, list[i].id, new ObjectId("000000000000000000000000"), list);
            }
            return(list);
        }