🎨 #3628【企业微信】修复更新用户接口重置用户直属领导字段的问题
This commit is contained in:
@@ -281,7 +281,12 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
||||
}
|
||||
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()) {
|
||||
JsonArray attrsJsonArray = new JsonArray();
|
||||
|
||||
@@ -180,4 +180,31 @@ public class WxCpUserGsonAdapterTest {
|
||||
"{\"type\":2,\"name\":\"测试app\"," +
|
||||
"\"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