|
|
|
|
@@ -1,12 +1,3 @@
|
|
|
|
|
/*
|
|
|
|
|
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
|
|
|
|
|
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
|
|
|
|
|
* arose from modification of the original source, or other redistribution of this source
|
|
|
|
|
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package me.chanjar.weixin.cp.util.json;
|
|
|
|
|
|
|
|
|
|
import com.google.gson.*;
|
|
|
|
|
@@ -15,6 +6,8 @@ import me.chanjar.weixin.cp.bean.Gender;
|
|
|
|
|
import me.chanjar.weixin.cp.bean.WxCpUser;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Type;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.stream.IntStream;
|
|
|
|
|
|
|
|
|
|
import static me.chanjar.weixin.cp.bean.WxCpUser.*;
|
|
|
|
|
|
|
|
|
|
@@ -31,66 +24,78 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
private static final String DEPARTMENT = "department";
|
|
|
|
|
private static final String EXTERNAL_CORP_NAME = "external_corp_name";
|
|
|
|
|
private static final String WECHAT_CHANNELS = "wechat_channels";
|
|
|
|
|
private static final String ORDER = "order";
|
|
|
|
|
private static final String POSITIONS = "positions";
|
|
|
|
|
private static final String USER_ID = "userid";
|
|
|
|
|
private static final String NEW_USER_ID = "new_userid";
|
|
|
|
|
private static final String NAME = "name";
|
|
|
|
|
private static final String POSITION = "position";
|
|
|
|
|
private static final String MOBILE = "mobile";
|
|
|
|
|
private static final String GENDER = "gender";
|
|
|
|
|
private static final String EMAIL = "email";
|
|
|
|
|
private static final String BIZ_MAIL = "biz_mail";
|
|
|
|
|
private static final String AVATAR = "avatar";
|
|
|
|
|
private static final String THUMB_AVATAR = "thumb_avatar";
|
|
|
|
|
private static final String ADDRESS = "address";
|
|
|
|
|
private static final String AVATAR_MEDIAID = "avatar_mediaid";
|
|
|
|
|
private static final String STATUS = "status";
|
|
|
|
|
private static final String ENABLE = "enable";
|
|
|
|
|
private static final String ALIAS = "alias";
|
|
|
|
|
private static final String IS_LEADER = "isleader";
|
|
|
|
|
private static final String IS_LEADER_IN_DEPT = "is_leader_in_dept";
|
|
|
|
|
private static final String HIDE_MOBILE = "hide_mobile";
|
|
|
|
|
private static final String ENGLISH_NAME = "english_name";
|
|
|
|
|
private static final String TELEPHONE = "telephone";
|
|
|
|
|
private static final String QR_CODE = "qr_code";
|
|
|
|
|
private static final String TO_INVITE = "to_invite";
|
|
|
|
|
private static final String OPEN_USER_ID = "open_userid";
|
|
|
|
|
private static final String MAIN_DEPARTMENT = "main_department";
|
|
|
|
|
private static final String DIRECT_LEADER = "direct_leader";
|
|
|
|
|
private static final String TYPE = "type";
|
|
|
|
|
private static final String VALUE = "value";
|
|
|
|
|
private static final String TEXT = "text";
|
|
|
|
|
private static final String WEB = "web";
|
|
|
|
|
private static final String MINIPROGRAM = "miniprogram";
|
|
|
|
|
private static final String URL = "url";
|
|
|
|
|
private static final String TITLE = "title";
|
|
|
|
|
private static final String APPID = "appid";
|
|
|
|
|
private static final String PAGE_PATH = "pagepath";
|
|
|
|
|
private static final String ATTRS = "attrs";
|
|
|
|
|
private static final String NICKNAME = "nickname";
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public WxCpUser deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
|
|
|
|
JsonObject o = json.getAsJsonObject();
|
|
|
|
|
WxCpUser user = new WxCpUser();
|
|
|
|
|
|
|
|
|
|
if (o.get(DEPARTMENT) != null) {
|
|
|
|
|
JsonArray departJsonArray = o.get(DEPARTMENT).getAsJsonArray();
|
|
|
|
|
Long[] departIds = new Long[departJsonArray.size()];
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (JsonElement jsonElement : departJsonArray) {
|
|
|
|
|
departIds[i++] = jsonElement.getAsLong();
|
|
|
|
|
}
|
|
|
|
|
user.setDepartIds(departIds);
|
|
|
|
|
}
|
|
|
|
|
user.setDepartIds(parseJsonArrayToLongArray(o, DEPARTMENT));
|
|
|
|
|
user.setOrders(parseJsonArrayToIntegerArray(o, ORDER));
|
|
|
|
|
user.setPositions(parseJsonArrayToStringArray(o, POSITIONS));
|
|
|
|
|
|
|
|
|
|
if (o.get("order") != null) {
|
|
|
|
|
JsonArray departJsonArray = o.get("order").getAsJsonArray();
|
|
|
|
|
Integer[] orders = new Integer[departJsonArray.size()];
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (JsonElement jsonElement : departJsonArray) {
|
|
|
|
|
orders[i++] = jsonElement.getAsInt();
|
|
|
|
|
}
|
|
|
|
|
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"));
|
|
|
|
|
user.setMobile(GsonHelper.getString(o, "mobile"));
|
|
|
|
|
user.setGender(Gender.fromCode(GsonHelper.getString(o, "gender")));
|
|
|
|
|
user.setEmail(GsonHelper.getString(o, "email"));
|
|
|
|
|
user.setBizMail(GsonHelper.getString(o, "biz_mail"));
|
|
|
|
|
user.setAvatar(GsonHelper.getString(o, "avatar"));
|
|
|
|
|
user.setThumbAvatar(GsonHelper.getString(o, "thumb_avatar"));
|
|
|
|
|
user.setAddress(GsonHelper.getString(o, "address"));
|
|
|
|
|
user.setAvatarMediaId(GsonHelper.getString(o, "avatar_mediaid"));
|
|
|
|
|
user.setStatus(GsonHelper.getInteger(o, "status"));
|
|
|
|
|
user.setEnable(GsonHelper.getInteger(o, "enable"));
|
|
|
|
|
user.setAlias(GsonHelper.getString(o, "alias"));
|
|
|
|
|
user.setIsLeader(GsonHelper.getInteger(o, "isleader"));
|
|
|
|
|
user.setIsLeaderInDept(GsonHelper.getIntArray(o, "is_leader_in_dept"));
|
|
|
|
|
user.setHideMobile(GsonHelper.getInteger(o, "hide_mobile"));
|
|
|
|
|
user.setEnglishName(GsonHelper.getString(o, "english_name"));
|
|
|
|
|
user.setTelephone(GsonHelper.getString(o, "telephone"));
|
|
|
|
|
user.setQrCode(GsonHelper.getString(o, "qr_code"));
|
|
|
|
|
user.setToInvite(GsonHelper.getBoolean(o, "to_invite"));
|
|
|
|
|
user.setOpenUserId(GsonHelper.getString(o, "open_userid"));
|
|
|
|
|
user.setMainDepartment(GsonHelper.getString(o, "main_department"));
|
|
|
|
|
user.setDirectLeader(GsonHelper.getStringArray(o, "direct_leader"));
|
|
|
|
|
user.setUserId(GsonHelper.getString(o, USER_ID));
|
|
|
|
|
user.setName(GsonHelper.getString(o, NAME));
|
|
|
|
|
user.setPosition(GsonHelper.getString(o, POSITION));
|
|
|
|
|
user.setMobile(GsonHelper.getString(o, MOBILE));
|
|
|
|
|
user.setGender(Gender.fromCode(GsonHelper.getString(o, GENDER)));
|
|
|
|
|
user.setEmail(GsonHelper.getString(o, EMAIL));
|
|
|
|
|
user.setBizMail(GsonHelper.getString(o, BIZ_MAIL));
|
|
|
|
|
user.setAvatar(GsonHelper.getString(o, AVATAR));
|
|
|
|
|
user.setThumbAvatar(GsonHelper.getString(o, THUMB_AVATAR));
|
|
|
|
|
user.setAddress(GsonHelper.getString(o, ADDRESS));
|
|
|
|
|
user.setAvatarMediaId(GsonHelper.getString(o, AVATAR_MEDIAID));
|
|
|
|
|
user.setStatus(GsonHelper.getInteger(o, STATUS));
|
|
|
|
|
user.setEnable(GsonHelper.getInteger(o, ENABLE));
|
|
|
|
|
user.setAlias(GsonHelper.getString(o, ALIAS));
|
|
|
|
|
user.setIsLeader(GsonHelper.getInteger(o, IS_LEADER));
|
|
|
|
|
user.setIsLeaderInDept(GsonHelper.getIntArray(o, IS_LEADER_IN_DEPT));
|
|
|
|
|
user.setHideMobile(GsonHelper.getInteger(o, HIDE_MOBILE));
|
|
|
|
|
user.setEnglishName(GsonHelper.getString(o, ENGLISH_NAME));
|
|
|
|
|
user.setTelephone(GsonHelper.getString(o, TELEPHONE));
|
|
|
|
|
user.setQrCode(GsonHelper.getString(o, QR_CODE));
|
|
|
|
|
user.setToInvite(GsonHelper.getBoolean(o, TO_INVITE));
|
|
|
|
|
user.setOpenUserId(GsonHelper.getString(o, OPEN_USER_ID));
|
|
|
|
|
user.setMainDepartment(GsonHelper.getString(o, MAIN_DEPARTMENT));
|
|
|
|
|
user.setDirectLeader(GsonHelper.getStringArray(o, DIRECT_LEADER));
|
|
|
|
|
|
|
|
|
|
if (GsonHelper.isNotNull(o.get(EXTRA_ATTR))) {
|
|
|
|
|
this.buildExtraAttrs(o, user);
|
|
|
|
|
@@ -102,8 +107,9 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
JsonElement jsonElement = o.get(EXTERNAL_PROFILE).getAsJsonObject().get(WECHAT_CHANNELS);
|
|
|
|
|
if (jsonElement != null) {
|
|
|
|
|
JsonObject asJsonObject = jsonElement.getAsJsonObject();
|
|
|
|
|
user.setWechatChannels(WechatChannels.builder().nickname(GsonHelper.getString(asJsonObject, "nickname")).status(GsonHelper.getInteger(asJsonObject, "status")).build());
|
|
|
|
|
user.setWechatChannels(WechatChannels.builder().nickname(GsonHelper.getString(asJsonObject, NICKNAME)).status(GsonHelper.getInteger(asJsonObject, STATUS)).build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.buildExternalAttrs(o, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -112,33 +118,66 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
return user;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Long[] parseJsonArrayToLongArray(JsonObject o, String key) {
|
|
|
|
|
JsonElement element = o.get(key);
|
|
|
|
|
if (element == null || !element.isJsonArray()) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
JsonArray jsonArray = element.getAsJsonArray();
|
|
|
|
|
return IntStream.range(0, jsonArray.size())
|
|
|
|
|
.mapToObj(i -> jsonArray.get(i).getAsLong())
|
|
|
|
|
.toArray(Long[]::new);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Integer[] parseJsonArrayToIntegerArray(JsonObject o, String key) {
|
|
|
|
|
JsonElement element = o.get(key);
|
|
|
|
|
if (element == null || !element.isJsonArray()) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
JsonArray jsonArray = element.getAsJsonArray();
|
|
|
|
|
return IntStream.range(0, jsonArray.size())
|
|
|
|
|
.mapToObj(i -> jsonArray.get(i).getAsInt())
|
|
|
|
|
.toArray(Integer[]::new);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String[] parseJsonArrayToStringArray(JsonObject o, String key) {
|
|
|
|
|
JsonElement element = o.get(key);
|
|
|
|
|
if (element == null || !element.isJsonArray()) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
JsonArray jsonArray = element.getAsJsonArray();
|
|
|
|
|
return IntStream.range(0, jsonArray.size())
|
|
|
|
|
.mapToObj(i -> jsonArray.get(i).getAsString())
|
|
|
|
|
.toArray(String[]::new);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void buildExtraAttrs(JsonObject o, WxCpUser user) {
|
|
|
|
|
JsonArray attrJsonElements = o.get(EXTRA_ATTR).getAsJsonObject().get("attrs").getAsJsonArray();
|
|
|
|
|
JsonArray attrJsonElements = o.get(EXTRA_ATTR).getAsJsonObject().get(ATTRS).getAsJsonArray();
|
|
|
|
|
for (JsonElement attrJsonElement : attrJsonElements) {
|
|
|
|
|
final Integer type = GsonHelper.getInteger(attrJsonElement.getAsJsonObject(), "type");
|
|
|
|
|
final Integer type = GsonHelper.getInteger(attrJsonElement.getAsJsonObject(), TYPE);
|
|
|
|
|
final Attr attr = new Attr().setType(type)
|
|
|
|
|
.setName(GsonHelper.getString(attrJsonElement.getAsJsonObject(), "name"));
|
|
|
|
|
.setName(GsonHelper.getString(attrJsonElement.getAsJsonObject(), NAME));
|
|
|
|
|
user.getExtAttrs().add(attr);
|
|
|
|
|
|
|
|
|
|
if (type == null) {
|
|
|
|
|
attr.setTextValue(GsonHelper.getString(attrJsonElement.getAsJsonObject(), "value"));
|
|
|
|
|
attr.setTextValue(GsonHelper.getString(attrJsonElement.getAsJsonObject(), VALUE));
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 0: {
|
|
|
|
|
JsonElement textJsonElement = attrJsonElement.getAsJsonObject().get("text");
|
|
|
|
|
JsonElement textJsonElement = attrJsonElement.getAsJsonObject().get(TEXT);
|
|
|
|
|
if (textJsonElement != null && !textJsonElement.isJsonNull() && textJsonElement.isJsonObject()) {
|
|
|
|
|
attr.setTextValue(GsonHelper.getString(textJsonElement.getAsJsonObject(), "value"));
|
|
|
|
|
attr.setTextValue(GsonHelper.getString(textJsonElement.getAsJsonObject(), VALUE));
|
|
|
|
|
} else {
|
|
|
|
|
attr.setTextValue(null); // Clear or set a default value to avoid stale data
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 1: {
|
|
|
|
|
final JsonObject web = attrJsonElement.getAsJsonObject().get("web").getAsJsonObject();
|
|
|
|
|
attr.setWebTitle(GsonHelper.getString(web, "title"))
|
|
|
|
|
.setWebUrl(GsonHelper.getString(web, "url"));
|
|
|
|
|
final JsonObject web = attrJsonElement.getAsJsonObject().get(WEB).getAsJsonObject();
|
|
|
|
|
attr.setWebTitle(GsonHelper.getString(web, TITLE))
|
|
|
|
|
.setWebUrl(GsonHelper.getString(web, URL));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default://ignored
|
|
|
|
|
@@ -154,8 +193,8 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
|
|
|
|
|
JsonArray attrJsonElements = jsonElement.getAsJsonArray();
|
|
|
|
|
for (JsonElement element : attrJsonElements) {
|
|
|
|
|
final Integer type = GsonHelper.getInteger(element.getAsJsonObject(), "type");
|
|
|
|
|
final String name = GsonHelper.getString(element.getAsJsonObject(), "name");
|
|
|
|
|
final Integer type = GsonHelper.getInteger(element.getAsJsonObject(), TYPE);
|
|
|
|
|
final String name = GsonHelper.getString(element.getAsJsonObject(), NAME);
|
|
|
|
|
|
|
|
|
|
if (type == null) {
|
|
|
|
|
continue;
|
|
|
|
|
@@ -167,32 +206,32 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
.add(ExternalAttribute.builder()
|
|
|
|
|
.type(type)
|
|
|
|
|
.name(name)
|
|
|
|
|
.value(GsonHelper.getString(element.getAsJsonObject().get("text").getAsJsonObject(), "value"))
|
|
|
|
|
.value(GsonHelper.getString(element.getAsJsonObject().get(TEXT).getAsJsonObject(), VALUE))
|
|
|
|
|
.build()
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 1: {
|
|
|
|
|
final JsonObject web = element.getAsJsonObject().get("web").getAsJsonObject();
|
|
|
|
|
final JsonObject web = element.getAsJsonObject().get(WEB).getAsJsonObject();
|
|
|
|
|
user.getExternalAttrs()
|
|
|
|
|
.add(ExternalAttribute.builder()
|
|
|
|
|
.type(type)
|
|
|
|
|
.name(name)
|
|
|
|
|
.url(GsonHelper.getString(web, "url"))
|
|
|
|
|
.title(GsonHelper.getString(web, "title"))
|
|
|
|
|
.url(GsonHelper.getString(web, URL))
|
|
|
|
|
.title(GsonHelper.getString(web, TITLE))
|
|
|
|
|
.build()
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 2: {
|
|
|
|
|
final JsonObject miniprogram = element.getAsJsonObject().get("miniprogram").getAsJsonObject();
|
|
|
|
|
final JsonObject miniprogram = element.getAsJsonObject().get(MINIPROGRAM).getAsJsonObject();
|
|
|
|
|
user.getExternalAttrs()
|
|
|
|
|
.add(ExternalAttribute.builder()
|
|
|
|
|
.type(type)
|
|
|
|
|
.name(name)
|
|
|
|
|
.appid(GsonHelper.getString(miniprogram, "appid"))
|
|
|
|
|
.pagePath(GsonHelper.getString(miniprogram, "pagepath"))
|
|
|
|
|
.title(GsonHelper.getString(miniprogram, "title"))
|
|
|
|
|
.appid(GsonHelper.getString(miniprogram, APPID))
|
|
|
|
|
.pagePath(GsonHelper.getString(miniprogram, PAGE_PATH))
|
|
|
|
|
.title(GsonHelper.getString(miniprogram, TITLE))
|
|
|
|
|
.build()
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
@@ -205,97 +244,70 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
@Override
|
|
|
|
|
public JsonElement serialize(WxCpUser user, Type typeOfSrc, JsonSerializationContext context) {
|
|
|
|
|
JsonObject o = new JsonObject();
|
|
|
|
|
this.addProperty(o, "userid", user.getUserId());
|
|
|
|
|
this.addProperty(o, "new_userid", user.getNewUserId());
|
|
|
|
|
this.addProperty(o, "name", user.getName());
|
|
|
|
|
if (user.getDepartIds() != null) {
|
|
|
|
|
JsonArray jsonArray = new JsonArray();
|
|
|
|
|
for (Long departId : user.getDepartIds()) {
|
|
|
|
|
jsonArray.add(new JsonPrimitive(departId));
|
|
|
|
|
}
|
|
|
|
|
o.add("department", jsonArray);
|
|
|
|
|
}
|
|
|
|
|
addProperty(o, USER_ID, user.getUserId());
|
|
|
|
|
addProperty(o, NEW_USER_ID, user.getNewUserId());
|
|
|
|
|
addProperty(o, NAME, user.getName());
|
|
|
|
|
|
|
|
|
|
if (user.getOrders() != null) {
|
|
|
|
|
JsonArray jsonArray = new JsonArray();
|
|
|
|
|
for (Integer order : user.getOrders()) {
|
|
|
|
|
jsonArray.add(new JsonPrimitive(order));
|
|
|
|
|
}
|
|
|
|
|
o.add("order", jsonArray);
|
|
|
|
|
}
|
|
|
|
|
addArrayProperty(o, DEPARTMENT, user.getDepartIds());
|
|
|
|
|
addArrayProperty(o, ORDER, user.getOrders());
|
|
|
|
|
addProperty(o, POSITION, user.getPosition());
|
|
|
|
|
addArrayProperty(o, POSITIONS, user.getPositions());
|
|
|
|
|
|
|
|
|
|
this.addProperty(o, "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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.addProperty(o, "mobile", user.getMobile());
|
|
|
|
|
addProperty(o, MOBILE, user.getMobile());
|
|
|
|
|
if (user.getGender() != null) {
|
|
|
|
|
o.addProperty("gender", user.getGender().getCode());
|
|
|
|
|
o.addProperty(GENDER, user.getGender().getCode());
|
|
|
|
|
}
|
|
|
|
|
this.addProperty(o, "email", user.getEmail());
|
|
|
|
|
this.addProperty(o, "biz_mail", user.getBizMail());
|
|
|
|
|
this.addProperty(o, "avatar", user.getAvatar());
|
|
|
|
|
this.addProperty(o, "thumb_avatar", user.getThumbAvatar());
|
|
|
|
|
this.addProperty(o, "address", user.getAddress());
|
|
|
|
|
this.addProperty(o, "avatar_mediaid", user.getAvatarMediaId());
|
|
|
|
|
this.addProperty(o, "status", user.getStatus());
|
|
|
|
|
this.addProperty(o, "enable", user.getEnable());
|
|
|
|
|
this.addProperty(o, "alias", user.getAlias());
|
|
|
|
|
this.addProperty(o, "isleader", user.getIsLeader());
|
|
|
|
|
addProperty(o, EMAIL, user.getEmail());
|
|
|
|
|
addProperty(o, BIZ_MAIL, user.getBizMail());
|
|
|
|
|
addProperty(o, AVATAR, user.getAvatar());
|
|
|
|
|
addProperty(o, THUMB_AVATAR, user.getThumbAvatar());
|
|
|
|
|
addProperty(o, ADDRESS, user.getAddress());
|
|
|
|
|
addProperty(o, AVATAR_MEDIAID, user.getAvatarMediaId());
|
|
|
|
|
addProperty(o, STATUS, user.getStatus());
|
|
|
|
|
addProperty(o, ENABLE, user.getEnable());
|
|
|
|
|
addProperty(o, ALIAS, user.getAlias());
|
|
|
|
|
addProperty(o, IS_LEADER, user.getIsLeader());
|
|
|
|
|
if (user.getIsLeaderInDept() != null && user.getIsLeaderInDept().length > 0) {
|
|
|
|
|
JsonArray ary = new JsonArray();
|
|
|
|
|
for (int item : user.getIsLeaderInDept()) {
|
|
|
|
|
ary.add(item);
|
|
|
|
|
}
|
|
|
|
|
o.add("is_leader_in_dept", ary);
|
|
|
|
|
Arrays.stream(user.getIsLeaderInDept()).forEach(ary::add);
|
|
|
|
|
o.add(IS_LEADER_IN_DEPT, ary);
|
|
|
|
|
}
|
|
|
|
|
this.addProperty(o, "hide_mobile", user.getHideMobile());
|
|
|
|
|
this.addProperty(o, "english_name", user.getEnglishName());
|
|
|
|
|
this.addProperty(o, "telephone", user.getTelephone());
|
|
|
|
|
this.addProperty(o, "qr_code", user.getQrCode());
|
|
|
|
|
addProperty(o, HIDE_MOBILE, user.getHideMobile());
|
|
|
|
|
addProperty(o, ENGLISH_NAME, user.getEnglishName());
|
|
|
|
|
addProperty(o, TELEPHONE, user.getTelephone());
|
|
|
|
|
addProperty(o, QR_CODE, user.getQrCode());
|
|
|
|
|
if (user.getToInvite() != null) {
|
|
|
|
|
o.addProperty("to_invite", user.getToInvite());
|
|
|
|
|
o.addProperty(TO_INVITE, user.getToInvite());
|
|
|
|
|
}
|
|
|
|
|
this.addProperty(o, "main_department", user.getMainDepartment());
|
|
|
|
|
addProperty(o, MAIN_DEPARTMENT, user.getMainDepartment());
|
|
|
|
|
|
|
|
|
|
addArrayProperty(o, DIRECT_LEADER, user.getDirectLeader());
|
|
|
|
|
|
|
|
|
|
if (user.getDirectLeader() != null && user.getDirectLeader().length > 0) {
|
|
|
|
|
JsonArray ary = new JsonArray();
|
|
|
|
|
for (String item : user.getDirectLeader()) {
|
|
|
|
|
ary.add(item);
|
|
|
|
|
}
|
|
|
|
|
o.add("direct_leader", ary);
|
|
|
|
|
}
|
|
|
|
|
if (!user.getExtAttrs().isEmpty()) {
|
|
|
|
|
JsonArray attrsJsonArray = new JsonArray();
|
|
|
|
|
for (Attr attr : user.getExtAttrs()) {
|
|
|
|
|
JsonObject attrJson = GsonHelper.buildJsonObject("type", attr.getType(),
|
|
|
|
|
"name", attr.getName());
|
|
|
|
|
JsonObject attrJson = GsonHelper.buildJsonObject(TYPE, attr.getType(),
|
|
|
|
|
NAME, attr.getName());
|
|
|
|
|
attrsJsonArray.add(attrJson);
|
|
|
|
|
|
|
|
|
|
if (attr.getType() == null) {
|
|
|
|
|
attrJson.addProperty("name", attr.getName());
|
|
|
|
|
attrJson.addProperty("value", attr.getTextValue());
|
|
|
|
|
attrJson.addProperty(NAME, attr.getName());
|
|
|
|
|
attrJson.addProperty(VALUE, attr.getTextValue());
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (attr.getType()) {
|
|
|
|
|
case 0:
|
|
|
|
|
attrJson.add("text", GsonHelper.buildJsonObject("value", attr.getTextValue()));
|
|
|
|
|
attrJson.add(TEXT, GsonHelper.buildJsonObject(VALUE, attr.getTextValue()));
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
attrJson.add("web", GsonHelper.buildJsonObject("url", attr.getWebUrl(), "title", attr.getWebTitle()));
|
|
|
|
|
attrJson.add(WEB, GsonHelper.buildJsonObject(URL, attr.getWebUrl(), TITLE, attr.getWebTitle()));
|
|
|
|
|
break;
|
|
|
|
|
default: //ignored
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
JsonObject attrsJson = new JsonObject();
|
|
|
|
|
attrsJson.add("attrs", attrsJsonArray);
|
|
|
|
|
attrsJson.add(ATTRS, attrsJsonArray);
|
|
|
|
|
o.add(EXTRA_ATTR, attrsJson);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -307,15 +319,15 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
this.addProperty(attrsJson, EXTERNAL_CORP_NAME, user.getExternalCorpName());
|
|
|
|
|
|
|
|
|
|
if (user.getWechatChannels() != null) {
|
|
|
|
|
attrsJson.add(WECHAT_CHANNELS, GsonHelper.buildJsonObject("nickname", user.getWechatChannels().getNickname(),
|
|
|
|
|
"status", user.getWechatChannels().getStatus()));
|
|
|
|
|
attrsJson.add(WECHAT_CHANNELS, GsonHelper.buildJsonObject(NICKNAME, user.getWechatChannels().getNickname(),
|
|
|
|
|
STATUS, user.getWechatChannels().getStatus()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!user.getExternalAttrs().isEmpty()) {
|
|
|
|
|
JsonArray attrsJsonArray = new JsonArray();
|
|
|
|
|
for (ExternalAttribute attr : user.getExternalAttrs()) {
|
|
|
|
|
JsonObject attrJson = GsonHelper.buildJsonObject("type", attr.getType(),
|
|
|
|
|
"name", attr.getName());
|
|
|
|
|
JsonObject attrJson = GsonHelper.buildJsonObject(TYPE, attr.getType(),
|
|
|
|
|
NAME, attr.getName());
|
|
|
|
|
|
|
|
|
|
attrsJsonArray.add(attrJson);
|
|
|
|
|
|
|
|
|
|
@@ -325,14 +337,14 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
|
|
|
|
|
switch (attr.getType()) {
|
|
|
|
|
case 0:
|
|
|
|
|
attrJson.add("text", GsonHelper.buildJsonObject("value", attr.getValue()));
|
|
|
|
|
attrJson.add(TEXT, GsonHelper.buildJsonObject(VALUE, attr.getValue()));
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
attrJson.add("web", GsonHelper.buildJsonObject("url", attr.getUrl(), "title", attr.getTitle()));
|
|
|
|
|
attrJson.add(WEB, GsonHelper.buildJsonObject(URL, attr.getUrl(), TITLE, attr.getTitle()));
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
attrJson.add("miniprogram", GsonHelper.buildJsonObject("appid", attr.getAppid(),
|
|
|
|
|
"pagepath", attr.getPagePath(), "title", attr.getTitle()));
|
|
|
|
|
attrJson.add(MINIPROGRAM, GsonHelper.buildJsonObject(APPID, attr.getAppid(),
|
|
|
|
|
PAGE_PATH, attr.getPagePath(), TITLE, attr.getTitle()));
|
|
|
|
|
break;
|
|
|
|
|
default://忽略
|
|
|
|
|
}
|
|
|
|
|
@@ -344,15 +356,29 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
|
|
|
|
|
return o;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void addProperty(JsonObject object, String property, Integer value) {
|
|
|
|
|
if (value != null) {
|
|
|
|
|
object.addProperty(property, value);
|
|
|
|
|
private void addArrayProperty(JsonObject o, String key, Object[] array) {
|
|
|
|
|
if (array != null && array.length > 0) {
|
|
|
|
|
JsonArray jsonArray = new JsonArray();
|
|
|
|
|
Arrays.stream(array).forEach(item -> {
|
|
|
|
|
if (item instanceof Number) {
|
|
|
|
|
jsonArray.add((Number) item);
|
|
|
|
|
} else {
|
|
|
|
|
jsonArray.add(item.toString());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
o.add(key, jsonArray);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void addProperty(JsonObject object, String property, String value) {
|
|
|
|
|
private void addProperty(JsonObject object, String property, Object value) {
|
|
|
|
|
if (value != null) {
|
|
|
|
|
object.addProperty(property, value);
|
|
|
|
|
if (value instanceof Number) {
|
|
|
|
|
object.addProperty(property, (Number) value);
|
|
|
|
|
} else if (value instanceof Boolean) {
|
|
|
|
|
object.addProperty(property, (Boolean) value);
|
|
|
|
|
} else {
|
|
|
|
|
object.addProperty(property, value.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|