Skip to content

Commit 228c71c

Browse files
authored
🎨 #2452 【企业微信】获取部门列表接口添加返回字段 departmentLeader(部门负责人的UserID)
1 parent ef293d2 commit 228c71c

File tree

3 files changed

+61
-11
lines changed

3 files changed

+61
-11
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpDepart.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package me.chanjar.weixin.cp.bean;
22

3-
import java.io.Serializable;
4-
53
import lombok.Data;
64
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
75

6+
import java.io.Serializable;
7+
88
/**
99
* 企业微信的部门.
1010
*
@@ -17,6 +17,7 @@ public class WxCpDepart implements Serializable {
1717
private Long id;
1818
private String name;
1919
private String enName;
20+
private String[] departmentLeader;
2021
private Long parentId;
2122
private Long order;
2223

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpDepartGsonAdapter.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,12 @@
88
*/
99
package me.chanjar.weixin.cp.util.json;
1010

11-
import java.lang.reflect.Type;
12-
13-
import com.google.gson.JsonDeserializationContext;
14-
import com.google.gson.JsonDeserializer;
15-
import com.google.gson.JsonElement;
16-
import com.google.gson.JsonObject;
17-
import com.google.gson.JsonParseException;
18-
import com.google.gson.JsonSerializationContext;
19-
import com.google.gson.JsonSerializer;
11+
import com.google.gson.*;
2012
import me.chanjar.weixin.common.util.json.GsonHelper;
2113
import me.chanjar.weixin.cp.bean.WxCpDepart;
2214

15+
import java.lang.reflect.Type;
16+
2317
/**
2418
* WxCpDepart的gson适配器.
2519
*
@@ -29,6 +23,7 @@ public class WxCpDepartGsonAdapter implements JsonSerializer<WxCpDepart>, JsonDe
2923
private static final String ID = "id";
3024
private static final String NAME = "name";
3125
private static final String EN_NAME = "name_en";
26+
private static final String DEPARTMENT_LEADER = "department_leader";
3227
private static final String PARENT_ID = "parentid";
3328
private static final String ORDER = "order";
3429

@@ -44,6 +39,13 @@ public JsonElement serialize(WxCpDepart group, Type typeOfSrc, JsonSerialization
4439
if (group.getEnName() != null) {
4540
json.addProperty(EN_NAME, group.getEnName());
4641
}
42+
if (group.getDepartmentLeader() != null) {
43+
JsonArray jsonArray = new JsonArray();
44+
for (String department : group.getDepartmentLeader()) {
45+
jsonArray.add(new JsonPrimitive(department));
46+
}
47+
json.add(DEPARTMENT_LEADER, jsonArray);
48+
}
4749
if (group.getParentId() != null) {
4850
json.addProperty(PARENT_ID, group.getParentId());
4951
}
@@ -67,6 +69,15 @@ public WxCpDepart deserialize(JsonElement json, Type typeOfT, JsonDeserializatio
6769
if (departJson.get(EN_NAME) != null && !departJson.get(EN_NAME).isJsonNull()) {
6870
depart.setEnName(GsonHelper.getAsString(departJson.get(EN_NAME)));
6971
}
72+
if (departJson.getAsJsonArray(DEPARTMENT_LEADER) != null && !departJson.get(DEPARTMENT_LEADER).isJsonNull()) {
73+
JsonArray jsonArray = departJson.getAsJsonArray(DEPARTMENT_LEADER);
74+
String[] departments = new String[jsonArray.size()];
75+
int i = 0;
76+
for (JsonElement jsonElement : jsonArray) {
77+
departments[i++] = jsonElement.getAsString();
78+
}
79+
depart.setDepartmentLeader(departments);
80+
}
7081
if (departJson.get(ORDER) != null && !departJson.get(ORDER).isJsonNull()) {
7182
depart.setOrder(GsonHelper.getAsLong(departJson.get(ORDER)));
7283
}

weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalContactInfoTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,44 @@ public void testFromJson() {
7878
" }\n" +
7979
" ]\n" +
8080
"}";
81+
82+
final String testJson = "{\n" +
83+
" \"errcode\": 0,\n" +
84+
" \"errmsg\": \"ok\",\n" +
85+
" \"department\": [\n" +
86+
" {\n" +
87+
" \"id\": 2,\n" +
88+
" \"name\": \"广州研发中心\",\n" +
89+
" \"name_en\": \"RDGZ\",\n" +
90+
" \"department_leader\":[\"zhangsan\",\"lisi\"],\n" +
91+
" \"parentid\": 1,\n" +
92+
" \"order\": 10\n" +
93+
" },\n" +
94+
" {\n" +
95+
" \"id\": 3,\n" +
96+
" \"name\": \"邮箱产品部\",\n" +
97+
" \"name_en\": \"mail\",\n" +
98+
" \"department_leader\":[\"lisi\",\"wangwu\"],\n" +
99+
" \"parentid\": 2,\n" +
100+
" \"order\": 40\n" +
101+
" }\n" +
102+
" ]\n" +
103+
"}\n";
104+
105+
// 测试序列化
106+
val depart = new WxCpDepart();
107+
depart.setId(8L);
108+
depart.setName("name");
109+
depart.setEnName("enName");
110+
depart.setDepartmentLeader(new String[]{"zhangsan", "lisi"});
111+
depart.setParentId(88L);
112+
depart.setOrder(99L);
113+
114+
String toJson = depart.toJson();
115+
116+
// 测试企业微信字段返回
117+
List<WxCpDepart> department = WxCpGsonBuilder.create().fromJson(GsonParser.parse(two).get("department"), new TypeToken<List<WxCpDepart>>() {
118+
}.getType());
81119

82120
final WxCpExternalContactInfo contactInfo = WxCpExternalContactInfo.fromJson(json);
83121
assertThat(contactInfo).isNotNull();

0 commit comments

Comments
 (0)