/** 将所有菜单组装成树
	 * @param classDTOList  数据库查询出来的所有菜单
	 *        菜单列表
	 * @return List<ClassDTO>
	 */
	private List<ClassDTO> assembleClassTree(List<ClassDTO> classDTOList) {
		List<ClassDTO> classTreeList = null;
		
		if(CommonUtils.listNotNull(classDTOList)){
			classTreeList = new ArrayList<ClassDTO>();
			
			for(ClassDTO classDTO1 : classDTOList){
				if(classDTO1.isLevel1()){
					this.setChildClass(classDTO1, classDTOList);
					classTreeList.add(classDTO1);
				}
			}
		}
		
		return classTreeList;
	}

	/** 通过递归的方法组装菜单树
	 * @param classDTO
	 * @param classDTOList
	 * @return
	 */
	private void setChildClass(ClassDTO parentClassDTO, List<ClassDTO> classDTOList) {
		List<ClassDTO> childClassList = parentClassDTO.getChildList();
		
		if(childClassList == null) {
			childClassList = new ArrayList<ClassDTO>();
			parentClassDTO.setChildList(childClassList);
		}

		for(ClassDTO childClassDTO : classDTOList ){
			if(parentClassDTO.getIdClass().equals(childClassDTO.getIdParentClass())){
				childClassList.add(childClassDTO);
				this.setChildClass(childClassDTO, classDTOList);
			}
		}
	}




  

  

/** 通过递归的方法取得parentId下的子集合
	 * @param parentId 父级Id
	 * @param allClassTree 菜单树状 集合
	 * @return
	 */
	private List<ClassDTO> getChildClassByParentId(String parentId, List<ClassDTO> allClassTree) {

		for (ClassDTO classDTO : allClassTree) {
			//找到parentId, 则返回此板块下的所有子版块集合
			if (classDTO.getIdClass().equals(parentId)) {
				return classDTO.getChildList();
			}
			//否则, 继续找
			else {
				List<ClassDTO> childList = classDTO.getChildList();
				
				if (CommonUtils.listNotNull(childList)) {
					childList = this.getChildClassByParentId(parentId, childList);

					if (childList != null) {
						return childList;
					}
					else {
						continue;
					}
				}
			}
		}

		return null;
	}

  

/**
	 *  给出一颗树 递归出其下所有叶子节点
	 * @param allTree  给出的树
	 * @param leafClassList   叶子节点
	 * @throws BusinessServiceException
	 */
	private void loopLeafClassListByTree(List<ClassDTO> allTree, List<ClassDTO> leafClassList){
		if(CommonUtils.listNotNull(allTree)){
			for (ClassDTO classDTO : allTree) {
				if (classDTO.isLeafClass()) {
					leafClassList.add(classDTO);
				}
				else {
					List<ClassDTO> childClassList = classDTO.getChildList();
					if (CommonUtils.listNotNull(childClassList)) {
						this.loopLeafClassListByTree(childClassList, leafClassList);
					}
				}
			}
		}
	}