🎨 #3628【企业微信】修复更新用户接口重置用户直属领导字段的问题
This commit is contained in:
@@ -281,7 +281,12 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|||||||
}
|
}
|
||||||
addProperty(o, MAIN_DEPARTMENT, user.getMainDepartment());
|
addProperty(o, MAIN_DEPARTMENT, user.getMainDepartment());
|
||||||
|
|
||||||
addArrayProperty(o, DIRECT_LEADER, user.getDirectLeader());
|
// Special handling for directLeader: include empty arrays to support WeChat Work API reset functionality
|
||||||
|
if (user.getDirectLeader() != null) {
|
||||||
|
JsonArray directLeaderArray = new JsonArray();
|
||||||
|
Arrays.stream(user.getDirectLeader()).forEach(directLeaderArray::add);
|
||||||
|
o.add(DIRECT_LEADER, directLeaderArray);
|
||||||
|
}
|
||||||
|
|
||||||
if (!user.getExtAttrs().isEmpty()) {
|
if (!user.getExtAttrs().isEmpty()) {
|
||||||
JsonArray attrsJsonArray = new JsonArray();
|
JsonArray attrsJsonArray = new JsonArray();
|
||||||
|
|||||||
@@ -180,4 +180,31 @@ public class WxCpUserGsonAdapterTest {
|
|||||||
"{\"type\":2,\"name\":\"测试app\"," +
|
"{\"type\":2,\"name\":\"测试app\"," +
|
||||||
"\"miniprogram\":{\"appid\":\"wx8bd80126147df384\",\"pagepath\":\"/index\",\"title\":\"my miniprogram\"}}]}}");
|
"\"miniprogram\":{\"appid\":\"wx8bd80126147df384\",\"pagepath\":\"/index\",\"title\":\"my miniprogram\"}}]}}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test directLeader empty array serialization.
|
||||||
|
* This test verifies that empty directLeader arrays are included in JSON as "direct_leader":[]
|
||||||
|
* instead of being omitted, which is required for WeChat Work API to reset user direct leaders.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testDirectLeaderEmptyArraySerialization() {
|
||||||
|
WxCpUser user = new WxCpUser();
|
||||||
|
user.setUserId("testuser");
|
||||||
|
user.setName("Test User");
|
||||||
|
|
||||||
|
// Test with empty array - should be serialized as "direct_leader":[]
|
||||||
|
user.setDirectLeader(new String[]{});
|
||||||
|
String json = user.toJson();
|
||||||
|
assertThat(json).contains("\"direct_leader\":[]");
|
||||||
|
|
||||||
|
// Test with null - should not include direct_leader field
|
||||||
|
user.setDirectLeader(null);
|
||||||
|
json = user.toJson();
|
||||||
|
assertThat(json).doesNotContain("direct_leader");
|
||||||
|
|
||||||
|
// Test with non-empty array - should be serialized normally
|
||||||
|
user.setDirectLeader(new String[]{"leader1", "leader2"});
|
||||||
|
json = user.toJson();
|
||||||
|
assertThat(json).contains("\"direct_leader\":[\"leader1\",\"leader2\"]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user