企业微信API,获取部门列表。
分析:
-
返回数据结构特点,只会提供直属父部门id,无递归链部门id,故采用递归算法
{ "errcode": 0, "errmsg": "ok", "department": [ { "id": 2, "name": "广州研发中心", "name_en": "RDGZ", "parentid": 1, "order": 10 }, { "id": 3, "name": "邮箱产品部", "name_en": "mail", "parentid": 2, "order": 40 } ] }
-
企业微信部门数据持久化到数据库后,具体遍历递归代码
注意:该方法是一次查询企业下所有的部门信息后,在Java中进行数据处理,非通过部门PID多次查询数据库数据
static List<Department> childDepartment = Lists.newArrayList(); @Override public List<Department> recursiveDepartment(String corpId, Long departmentId) { childDepartment.clear(); DepartmentQuery query = new DepartmentQuery(); query.setCorpId(corpId); query.setDepartmentId(departmentId); query.setDel(Boolean.FALSE); Department department = departmentDao.find(query); if (ObjectUtils.isNotEmpty(department)) { childDepartment.add(department); DepartmentQuery query1 = new DepartmentQuery(); query1.setCorpId(corpId); query1.setDel(Boolean.FALSE); List<Department> departmentList = departmentDao.selectAll(query1); if (ObjectUtils.isNotEmpty(departmentList)) { treeDepartment(departmentList, department.getDepartmentId()); } } return childDepartment; } public List<Department> treeDepartment(List<Department> departmentList, Long parentId) { for (Department department : departmentList) { if (parentId.equals(department.getParentid())) { treeDepartment(departmentList, department.getDepartmentId()); childDepartment.add(department); } } return childDepartment; }