diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpDepartmentService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpDepartmentService.java index c86816b7f..b8e43cbdc 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpDepartmentService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpDepartmentService.java @@ -28,6 +28,18 @@ public interface WxCpDepartmentService { */ Long create(WxCpDepart depart) throws WxErrorException; + /** + *
+ * 部门管理接口 - 获取单个部门详情. + * 详情请见: https://developer.work.weixin.qq.com/document/path/95351 + *+ * + * @param id 部门id + * @return 部门信息 + * @throws WxErrorException 异常 + */ + WxCpDepart get(Long id) throws WxErrorException; + /** *
* 部门管理接口 - 获取部门列表. @@ -40,6 +52,18 @@ public interface WxCpDepartmentService { */ Listlist(Long id) throws WxErrorException; + /** + * + * 部门管理接口 - 获取子部门ID列表. + * 详情请见: https://developer.work.weixin.qq.com/document/path/95350 + *+ * + * @param id 部门id。获取指定部门及其下的子部门(以及子部门的子部门等等,递归)。 如果不填,默认获取全量组织架构 + * @return 子部门ID列表 + * @throws WxErrorException 异常 + */ + ListsimpleList(Long id) throws WxErrorException; + /** * * 部门管理接口 - 更新部门. diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java index 3a5ef8798..b6d9cf29b 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImpl.java @@ -35,6 +35,18 @@ public class WxCpDepartmentServiceImpl implements WxCpDepartmentService { return GsonHelper.getAsLong(tmpJsonObject.get("id")); } + @Override + public WxCpDepart get(Long id) throws WxErrorException { + String url = String.format(this.mainService.getWxCpConfigStorage().getApiUrl(DEPARTMENT_GET), id); + String responseContent = this.mainService.get(url, null); + JsonObject tmpJsonObject = GsonParser.parse(responseContent); + return WxCpGsonBuilder.create() + .fromJson(tmpJsonObject.get("department"), + new TypeToken() { + }.getType() + ); + } + @Override public void update(WxCpDepart group) throws WxErrorException { String url = this.mainService.getWxCpConfigStorage().getApiUrl(DEPARTMENT_UPDATE); @@ -62,4 +74,20 @@ public class WxCpDepartmentServiceImpl implements WxCpDepartmentService { }.getType() ); } + + @Override + public List simpleList(Long id) throws WxErrorException { + String url = this.mainService.getWxCpConfigStorage().getApiUrl(DEPARTMENT_SIMPLE_LIST); + if (id != null) { + url += "?id=" + id; + } + + String responseContent = this.mainService.get(url, null); + JsonObject tmpJsonObject = GsonParser.parse(responseContent); + return WxCpGsonBuilder.create() + .fromJson(tmpJsonObject.get("department_id"), + new TypeToken >() { + }.getType() + ); + } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java index 1b803cfdd..2155b4c61 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java @@ -71,8 +71,10 @@ public interface WxCpApiPathConsts { interface Department { String DEPARTMENT_CREATE = "/cgi-bin/department/create"; String DEPARTMENT_UPDATE = "/cgi-bin/department/update"; + String DEPARTMENT_GET = "/cgi-bin/department/get?id=%d"; String DEPARTMENT_DELETE = "/cgi-bin/department/delete?id=%d"; String DEPARTMENT_LIST = "/cgi-bin/department/list"; + String DEPARTMENT_SIMPLE_LIST = "/cgi-bin/department/simplelist"; } interface Media { diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java index 57957d3fb..7417f8055 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java @@ -1,13 +1,15 @@ package me.chanjar.weixin.cp.api.impl; -import java.util.List; - -import org.testng.annotations.*; - import com.google.inject.Inject; +import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.ApiTestModule; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.bean.WxCpDepart; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -36,11 +38,11 @@ public class WxCpDepartmentServiceImplTest { } @DataProvider - public Object[][] departIds(){ + public Object[][] departIds() { return new Object[][]{ {null}, - {1}, - {5} + {12L}, + {5L} }; } @@ -70,4 +72,22 @@ public class WxCpDepartmentServiceImplTest { this.wxCpService.getDepartmentService().delete(this.depart.getId()); } + @Test(dataProvider = "departIds") + public void testSimpleList(Long id) throws WxErrorException { + System.out.println("=================获取子部门ID列表"); + List
departList = this.wxCpService.getDepartmentService().simpleList(id); + assertThat(departList).isNotEmpty(); + departList.forEach(System.out::println); + } + + @Test(dataProvider = "departIds") + public void testGet(Long id) throws WxErrorException { + if (id == null) { + return; + } + + WxCpDepart depart = this.wxCpService.getDepartmentService().get(id); + assertThat(depart).isNotNull(); + System.out.println(depart); + } }