1
0
mirror of synced 2025-11-06 04:20:53 +08:00

🎨 #3628【企业微信】修复更新用户接口重置用户直属领导字段的问题

This commit is contained in:
Copilot
2025-10-04 01:39:35 +08:00
committed by GitHub
parent 9fd12b2a09
commit a6825a62bb
2 changed files with 33 additions and 1 deletions

View File

@@ -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();

View File

@@ -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\"]");
}
}