Skip to content

Commit c2034cb

Browse files
authored
🎨 #1624 企业微信模块更新用户信息相关接口类以适应企业微信私有化版本
1 parent 320f367 commit c2034cb

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

Diff for: weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class WxCpUser implements Serializable {
2626
private Long[] departIds;
2727
private Integer[] orders;
2828
private String position;
29+
private String[] positions;
2930
private String mobile;
3031
private Gender gender;
3132
private String email;

Diff for: weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java

+21
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@ public WxCpUser deserialize(JsonElement json, Type typeOfT, JsonDeserializationC
5454
user.setOrders(orders);
5555
}
5656

57+
if (o.get("positions") != null) {
58+
JsonArray positionJsonArray = o.get("positions").getAsJsonArray();
59+
String[] positions = new String[positionJsonArray.size()];
60+
int i = 0;
61+
for (JsonElement jsonElement : positionJsonArray) {
62+
positions[i++] = jsonElement.getAsString();
63+
}
64+
user.setPositions(positions);
65+
}
66+
5767
user.setUserId(GsonHelper.getString(o, "userid"));
5868
user.setName(GsonHelper.getString(o, "name"));
5969
user.setPosition(GsonHelper.getString(o, "position"));
@@ -198,6 +208,15 @@ public JsonElement serialize(WxCpUser user, Type typeOfSrc, JsonSerializationCon
198208
if (user.getPosition() != null) {
199209
o.addProperty("position", user.getPosition());
200210
}
211+
212+
if (user.getPositions() != null) {
213+
JsonArray jsonArray = new JsonArray();
214+
for (String position : user.getPositions()) {
215+
jsonArray.add(new JsonPrimitive(position));
216+
}
217+
o.add("positions", jsonArray);
218+
}
219+
201220
if (user.getMobile() != null) {
202221
o.addProperty("mobile", user.getMobile());
203222
}
@@ -265,6 +284,8 @@ public JsonElement serialize(WxCpUser user, Type typeOfSrc, JsonSerializationCon
265284
attrsJsonArray.add(attrJson);
266285

267286
if (attr.getType() == null) {
287+
attrJson.addProperty("name", attr.getName());
288+
attrJson.addProperty("value", attr.getTextValue());
268289
continue;
269290
}
270291

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package me.chanjar.weixin.cp.util.json;
2+
3+
import me.chanjar.weixin.cp.bean.WxCpUser;
4+
import org.testng.annotations.Test;
5+
6+
import static org.assertj.core.api.Assertions.assertThat;
7+
8+
/**
9+
* <pre>
10+
* 企业微信(私有化版本getUser兼容测试)
11+
* </pre>
12+
*
13+
* @author 庄壮壮
14+
* @since 2020-06-16 09:36
15+
*/
16+
public class WxCpUserGsonAdapterForPrivatizedVersionTest {
17+
18+
@Test
19+
public void testDeserialize() {
20+
final String userJson = "{\n" +
21+
" \"errcode\": 0,\n" +
22+
" \"errmsg\": \"ok\",\n" +
23+
" \"userid\": \"zhangsan\",\n" +
24+
" \"name\": \"李四\",\n" +
25+
" \"department\": [1, 2],\n" +
26+
" \"order\": [2, 10],\n" +
27+
" \"position\": \"后台工程师1\",\n" +
28+
" \"positions\": [\"后台工程师1\",\"后台工程师2\"],\n" +
29+
" \"mobile\": \"15913215421\",\n" +
30+
" \"hide_mobile\": 0,\n" +
31+
" \"gender\": \"1\",\n" +
32+
" \"email\": \"[email protected]\",\n" +
33+
" \"is_leader_in_dept\": [1, 0],\n" +
34+
" \"avatar\": \"http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0\",\n" +
35+
" \"telephone\": \"020-123456\",\n" +
36+
" \"english_name\": \"jackzhang\",\n" +
37+
" \"extattr\": {\"attrs\":[{\"name\":\"爱好\",\"value\":\"旅游\"},{\"name\":\"卡号\",\"value\":\"1234567234\"}]},\n" +
38+
" \"status\": 1,\n" +
39+
" \"enable\": 0,\n" +
40+
" \"qr_code\": \"https://wwlocal.qq.com/wework_admin/userQRCode?vcode=vc2140a8b3c6207c74&lvc=vcf6f1acfdc4b45088\"\n" +
41+
"}";
42+
43+
final WxCpUser user = WxCpUser.fromJson(userJson);
44+
assertThat(user).isNotNull();
45+
46+
// test order
47+
assertThat(user.getOrders()).isNotEmpty();
48+
assertThat(user.getOrders().length).isEqualTo(2);
49+
assertThat(user.getOrders()[0]).isEqualTo(2);
50+
assertThat(user.getOrders()[1]).isEqualTo(10);
51+
52+
// test english name
53+
assertThat(user.getEnglishName()).isEqualTo("jackzhang");
54+
55+
// test extattrs
56+
assertThat(user.getExtAttrs()).isNotEmpty();
57+
final WxCpUser.Attr extraAttr1 = user.getExtAttrs().get(0);
58+
assertThat(extraAttr1.getName()).isEqualTo("爱好");
59+
assertThat(extraAttr1.getTextValue()).isEqualTo("旅游");
60+
final WxCpUser.Attr extraAttr2 = user.getExtAttrs().get(1);
61+
assertThat(extraAttr2.getName()).isEqualTo("卡号");
62+
assertThat(extraAttr2.getTextValue()).isEqualTo("1234567234");
63+
64+
// test position
65+
assertThat(user.getPosition()).isEqualTo("后台工程师1");
66+
// test positions
67+
assertThat(user.getPositions()).isNotEmpty();
68+
assertThat(user.getPositions().length).isEqualTo(2);
69+
assertThat(user.getPositions()[0]).isEqualTo("后台工程师1");
70+
assertThat(user.getPositions()[1]).isEqualTo("后台工程师2");
71+
}
72+
73+
@Test
74+
public void testSerialize() {
75+
WxCpUser user = new WxCpUser();
76+
user.setOrders(new Integer[]{1, 2});
77+
user.setPositions(new String[]{"后台工程师1", "后台工程师2"});
78+
user.setEnglishName("jackson");
79+
WxCpUser.Attr attr1 = new WxCpUser.Attr();
80+
attr1.setName("爱好").setTextValue("旅游");
81+
WxCpUser.Attr attr2 = new WxCpUser.Attr();
82+
attr2.setName("卡号").setTextValue("1234567234");
83+
84+
user.addExtAttr(attr1);
85+
user.addExtAttr(attr2);
86+
87+
assertThat(user.toJson()).isEqualTo("{\"order\":[1,2],\"positions\":[\"后台工程师1\",\"后台工程师2\"],\"english_name\":\"jackson\",\"extattr\":{\"attrs\":[{\"name\":\"爱好\",\"value\":\"旅游\"},{\"name\":\"卡号\",\"value\":\"1234567234\"}]},\"external_profile\":{}}");
88+
}
89+
}

0 commit comments

Comments
 (0)