/// <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); }
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); }