Skip to content

Commit

Permalink
🎨 #1624 企业微信模块更新用户信息相关接口类以适应企业微信私有化版本
Browse files Browse the repository at this point in the history
  • Loading branch information
sdlszjb authored Jun 17, 2020
1 parent 320f367 commit c2034cb
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class WxCpUser implements Serializable {
private Long[] departIds;
private Integer[] orders;
private String position;
private String[] positions;
private String mobile;
private Gender gender;
private String email;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,16 @@ public WxCpUser deserialize(JsonElement json, Type typeOfT, JsonDeserializationC
user.setOrders(orders);
}

if (o.get("positions") != null) {
JsonArray positionJsonArray = o.get("positions").getAsJsonArray();
String[] positions = new String[positionJsonArray.size()];
int i = 0;
for (JsonElement jsonElement : positionJsonArray) {
positions[i++] = jsonElement.getAsString();
}
user.setPositions(positions);
}

user.setUserId(GsonHelper.getString(o, "userid"));
user.setName(GsonHelper.getString(o, "name"));
user.setPosition(GsonHelper.getString(o, "position"));
Expand Down Expand Up @@ -198,6 +208,15 @@ public JsonElement serialize(WxCpUser user, Type typeOfSrc, JsonSerializationCon
if (user.getPosition() != null) {
o.addProperty("position", user.getPosition());
}

if (user.getPositions() != null) {
JsonArray jsonArray = new JsonArray();
for (String position : user.getPositions()) {
jsonArray.add(new JsonPrimitive(position));
}
o.add("positions", jsonArray);
}

if (user.getMobile() != null) {
o.addProperty("mobile", user.getMobile());
}
Expand Down Expand Up @@ -265,6 +284,8 @@ public JsonElement serialize(WxCpUser user, Type typeOfSrc, JsonSerializationCon
attrsJsonArray.add(attrJson);

if (attr.getType() == null) {
attrJson.addProperty("name", attr.getName());
attrJson.addProperty("value", attr.getTextValue());
continue;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package me.chanjar.weixin.cp.util.json;

import me.chanjar.weixin.cp.bean.WxCpUser;
import org.testng.annotations.Test;

import static org.assertj.core.api.Assertions.assertThat;

/**
* <pre>
* 企业微信(私有化版本getUser兼容测试)
* </pre>
*
* @author 庄壮壮
* @since 2020-06-16 09:36
*/
public class WxCpUserGsonAdapterForPrivatizedVersionTest {

@Test
public void testDeserialize() {
final String userJson = "{\n" +
" \"errcode\": 0,\n" +
" \"errmsg\": \"ok\",\n" +
" \"userid\": \"zhangsan\",\n" +
" \"name\": \"李四\",\n" +
" \"department\": [1, 2],\n" +
" \"order\": [2, 10],\n" +
" \"position\": \"后台工程师1\",\n" +
" \"positions\": [\"后台工程师1\",\"后台工程师2\"],\n" +
" \"mobile\": \"15913215421\",\n" +
" \"hide_mobile\": 0,\n" +
" \"gender\": \"1\",\n" +
" \"email\": \"[email protected]\",\n" +
" \"is_leader_in_dept\": [1, 0],\n" +
" \"avatar\": \"http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0\",\n" +
" \"telephone\": \"020-123456\",\n" +
" \"english_name\": \"jackzhang\",\n" +
" \"extattr\": {\"attrs\":[{\"name\":\"爱好\",\"value\":\"旅游\"},{\"name\":\"卡号\",\"value\":\"1234567234\"}]},\n" +
" \"status\": 1,\n" +
" \"enable\": 0,\n" +
" \"qr_code\": \"https://wwlocal.qq.com/wework_admin/userQRCode?vcode=vc2140a8b3c6207c74&lvc=vcf6f1acfdc4b45088\"\n" +
"}";

final WxCpUser user = WxCpUser.fromJson(userJson);
assertThat(user).isNotNull();

// test order
assertThat(user.getOrders()).isNotEmpty();
assertThat(user.getOrders().length).isEqualTo(2);
assertThat(user.getOrders()[0]).isEqualTo(2);
assertThat(user.getOrders()[1]).isEqualTo(10);

// test english name
assertThat(user.getEnglishName()).isEqualTo("jackzhang");

// test extattrs
assertThat(user.getExtAttrs()).isNotEmpty();
final WxCpUser.Attr extraAttr1 = user.getExtAttrs().get(0);
assertThat(extraAttr1.getName()).isEqualTo("爱好");
assertThat(extraAttr1.getTextValue()).isEqualTo("旅游");
final WxCpUser.Attr extraAttr2 = user.getExtAttrs().get(1);
assertThat(extraAttr2.getName()).isEqualTo("卡号");
assertThat(extraAttr2.getTextValue()).isEqualTo("1234567234");

// test position
assertThat(user.getPosition()).isEqualTo("后台工程师1");
// test positions
assertThat(user.getPositions()).isNotEmpty();
assertThat(user.getPositions().length).isEqualTo(2);
assertThat(user.getPositions()[0]).isEqualTo("后台工程师1");
assertThat(user.getPositions()[1]).isEqualTo("后台工程师2");
}

@Test
public void testSerialize() {
WxCpUser user = new WxCpUser();
user.setOrders(new Integer[]{1, 2});
user.setPositions(new String[]{"后台工程师1", "后台工程师2"});
user.setEnglishName("jackson");
WxCpUser.Attr attr1 = new WxCpUser.Attr();
attr1.setName("爱好").setTextValue("旅游");
WxCpUser.Attr attr2 = new WxCpUser.Attr();
attr2.setName("卡号").setTextValue("1234567234");

user.addExtAttr(attr1);
user.addExtAttr(attr2);

assertThat(user.toJson()).isEqualTo("{\"order\":[1,2],\"positions\":[\"后台工程师1\",\"后台工程师2\"],\"english_name\":\"jackson\",\"extattr\":{\"attrs\":[{\"name\":\"爱好\",\"value\":\"旅游\"},{\"name\":\"卡号\",\"value\":\"1234567234\"}]},\"external_profile\":{}}");
}
}

0 comments on commit c2034cb

Please sign in to comment.