#246 修复企业号用户信息相关属性,对比实际接口返回内容,移除已失效属性(weixinid、tel),添加缺失的属性(telephone, english_name, hide_mobile)

This commit is contained in:
Binary Wang 2017-06-10 15:50:08 +08:00
parent 228b3791ae
commit 8ed0e786db
23 changed files with 144 additions and 86 deletions

View File

@ -34,6 +34,10 @@
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.testng</groupId>
@ -60,6 +64,11 @@
<artifactId>jetty-servlet</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View File

@ -34,7 +34,7 @@ import java.util.UUID;
public abstract class AbstractWxCpServiceImpl<H, P> implements WxCpService, RequestHttp<H, P> {
protected final Logger log = LoggerFactory.getLogger(AbstractWxCpServiceImpl.class);
protected final Logger log = LoggerFactory.getLogger(this.getClass());
/**
* 全局的是否正在刷新access token的锁
@ -293,8 +293,7 @@ public abstract class AbstractWxCpServiceImpl<H, P> implements WxCpService, Requ
String responseContent = get(url, params);
JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
return WxCpGsonBuilder.INSTANCE.create()
.fromJson(
tmpJsonElement.getAsJsonObject().get("userlist"),
.fromJson( tmpJsonElement.getAsJsonObject().get("userlist"),
new TypeToken<List<WxCpUser>>() {
}.getType()
);

View File

@ -14,19 +14,21 @@ import java.util.List;
public class WxCpUser implements Serializable {
private static final long serialVersionUID = -5696099236344075582L;
private final List<Attr> extAttrs = new ArrayList<>();
private String userId;
private String name;
private Integer[] departIds;
private String position;
private String mobile;
private String gender;
private String tel;
private String email;
private String weiXinId;
private String avatar;
private Integer status;
private Integer enable;
private Integer isLeader;
private final List<Attr> extAttrs = new ArrayList<>();
private Integer hideMobile;
private String englishName;
private String telephone;
public static WxCpUser fromJson(String json) {
return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpUser.class);
@ -80,12 +82,12 @@ public class WxCpUser implements Serializable {
this.mobile = mobile;
}
public String getTel() {
return this.tel;
public String getTelephone() {
return this.telephone;
}
public void setTel(String tel) {
this.tel = tel;
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
@ -96,14 +98,6 @@ public class WxCpUser implements Serializable {
this.email = email;
}
public String getWeiXinId() {
return this.weiXinId;
}
public void setWeiXinId(String weiXinId) {
this.weiXinId = weiXinId;
}
public String getAvatar() {
return this.avatar;
}
@ -136,6 +130,30 @@ public class WxCpUser implements Serializable {
return this.extAttrs;
}
public Integer getIsLeader() {
return isLeader;
}
public void setIsLeader(Integer isLeader) {
this.isLeader = isLeader;
}
public Integer getHideMobile() {
return hideMobile;
}
public void setHideMobile(Integer hideMobile) {
this.hideMobile = hideMobile;
}
public String getEnglishName() {
return englishName;
}
public void setEnglishName(String englishName) {
this.englishName = englishName;
}
public String toJson() {
return WxCpGsonBuilder.INSTANCE.create().toJson(this);
}

View File

@ -24,8 +24,6 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
throws JsonParseException {
JsonObject o = json.getAsJsonObject();
WxCpUser user = new WxCpUser();
user.setUserId(GsonHelper.getString(o, "userid"));
user.setName(GsonHelper.getString(o, "name"));
if (o.get("department") != null) {
JsonArray departJsonArray = o.get("department").getAsJsonArray();
@ -37,14 +35,19 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
user.setDepartIds(departIds);
}
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(GsonHelper.getString(o, "gender"));
user.setTel(GsonHelper.getString(o, "tel"));
user.setEmail(GsonHelper.getString(o, "email"));
user.setWeiXinId(GsonHelper.getString(o, "weixinid"));
user.setAvatar(GsonHelper.getString(o, "avatar"));
user.setStatus(GsonHelper.getInteger(o, "status"));
user.setEnable(GsonHelper.getInteger(o, "enable"));
user.setIsLeader(GsonHelper.getInteger(o, "isleader"));
user.setHideMobile(GsonHelper.getInteger(o, "hide_mobile"));
user.setEnglishName(GsonHelper.getString(o, "english_name"));
user.setTelephone(GsonHelper.getString(o, "telephone"));
if (GsonHelper.isNotNull(o.get("extattr"))) {
JsonArray attrJsonElements = o.get("extattr").getAsJsonObject().get("attrs").getAsJsonArray();
@ -84,15 +87,9 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
if (user.getGender() != null) {
o.addProperty("gender", user.getGender());
}
if (user.getTel() != null) {
o.addProperty("tel", user.getTel());
}
if (user.getEmail() != null) {
o.addProperty("email", user.getEmail());
}
if (user.getWeiXinId() != null) {
o.addProperty("weixinid", user.getWeiXinId());
}
if (user.getAvatar() != null) {
o.addProperty("avatar", user.getAvatar());
}
@ -102,6 +99,18 @@ public class WxCpUserGsonAdapter implements JsonDeserializer<WxCpUser>, JsonSeri
if (user.getEnable() != null) {
o.addProperty("enable", user.getEnable());
}
if (user.getIsLeader() != null) {
o.addProperty("isleader", user.getIsLeader());
}
if (user.getHideMobile() != null) {
o.addProperty("hide_mobile", user.getHideMobile());
}
if (user.getEnglishName() != null) {
o.addProperty("english_name", user.getEnglishName());
}
if (user.getTelephone() != null) {
o.addProperty("telephone", user.getTelephone());
}
if (user.getExtAttrs().size() > 0) {
JsonArray attrsJsonArray = new JsonArray();
for (WxCpUser.Attr attr : user.getExtAttrs()) {

View File

@ -5,7 +5,7 @@ import com.google.inject.Module;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import java.io.IOException;
import java.io.InputStream;

View File

@ -1,12 +1,12 @@
package me.chanjar.weixin.cp.api.impl.apache;
package me.chanjar.weixin.cp.api;
import com.google.inject.Inject;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.cp.api.ApiTestModule;
import me.chanjar.weixin.cp.api.WxCpConfigStorage;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
/**
* 基础API测试

View File

@ -1,10 +1,11 @@
package me.chanjar.weixin.cp.api.impl.apache;
package me.chanjar.weixin.cp.api;
import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.cp.api.WxCpService;
import org.testng.annotations.*;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;

View File

@ -2,19 +2,23 @@ package me.chanjar.weixin.cp.api;
import com.google.inject.Inject;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpDepart;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.util.List;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
/**
* 测试部门接口
*
* @author Daniel Qian
*/
@Test(groups = "departAPI", dependsOnGroups = "baseAPI")
@Test(groups = "departAPI")
@Guice(modules = ApiTestModule.class)
public class WxCpDepartAPITest {
@ -23,6 +27,7 @@ public class WxCpDepartAPITest {
protected WxCpDepart depart;
@Test
public void testDepartCreate() throws WxErrorException {
WxCpDepart cpDepart = new WxCpDepart();
cpDepart.setName("子部门" + System.currentTimeMillis());
@ -32,16 +37,16 @@ public class WxCpDepartAPITest {
System.out.println(departId);
}
@Test(dependsOnMethods = "testDepartCreate")
@Test//(dependsOnMethods = "testDepartCreate")
public void testDepartGet() throws WxErrorException {
System.out.println("=================获取部门");
List<WxCpDepart> departList = this.wxCpService.departGet();
Assert.assertNotNull(departList);
Assert.assertTrue(departList.size() > 0);
assertNotNull(departList);
assertTrue(departList.size() > 0);
for (WxCpDepart g : departList) {
this.depart = g;
System.out.println(this.depart.getId() + ":" + this.depart.getName());
Assert.assertNotNull(g.getName());
assertNotNull(g.getName());
}
}

View File

@ -4,9 +4,11 @@ import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import org.testng.*;
import org.testng.annotations.*;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.io.IOException;
import java.io.InputStream;

View File

@ -1,11 +1,12 @@
package me.chanjar.weixin.cp.api.impl.apache;
package me.chanjar.weixin.cp.api;
import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.cp.api.ApiTestModule;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpMessage;
import org.testng.annotations.*;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
/***
* 测试发送消息

View File

@ -5,8 +5,9 @@ import me.chanjar.weixin.common.session.StandardSessionManager;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.Map;

View File

@ -1,11 +1,12 @@
package me.chanjar.weixin.cp.api;
import com.google.inject.Inject;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpTag;
import me.chanjar.weixin.cp.bean.WxCpUser;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;

View File

@ -2,28 +2,30 @@ package me.chanjar.weixin.cp.api;
import com.google.inject.Inject;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpDepart;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpUser;
import org.testng.*;
import org.testng.annotations.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.util.List;
import static org.testng.Assert.assertNotEquals;
/**
* 测试用户接口
*
* @author Daniel Qian
*/
@Test(groups = "userAPI", dependsOnGroups = "baseAPI")
@Test(groups = "userAPI")
@Guice(modules = ApiTestModule.class)
public class WxCpUserAPITest {
@Inject
protected WxCpServiceImpl wxCpService;
protected WxCpDepart depart;
public void testUserCreate() throws WxErrorException {
WxCpUser user = new WxCpUser();
user.setUserId("some.woman");
@ -33,7 +35,7 @@ public class WxCpUserAPITest {
user.setGender("");
user.setMobile("13560084979");
user.setPosition("woman");
user.setTel("3300393");
user.setTelephone("3300393");
user.addExtAttr("爱好", "table");
this.wxCpService.userCreate(user);
}
@ -56,11 +58,19 @@ public class WxCpUserAPITest {
@Test(dependsOnMethods = "testUserGet")
public void testDepartGetUsers() throws WxErrorException {
List<WxCpUser> users = this.wxCpService.departGetUsers(1, true, 0);
Assert.assertNotEquals(users.size(), 0);
assertNotEquals(users.size(), 0);
}
@Test(dependsOnMethods = "testDepartGetUsers")
public void testUserDelete() throws WxErrorException {
this.wxCpService.userDelete("some.woman");
}
public void testUserList() throws WxErrorException {
List<WxCpUser> users = this.wxCpService.userList(1, true, 0);
assertNotEquals(users.size(), 0);
for (WxCpUser user : users) {
System.out.println(ToStringBuilder.reflectionToString(user, ToStringStyle.MULTI_LINE_STYLE));
}
}
}

View File

@ -5,9 +5,11 @@ import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.menu.WxMenu;
import me.chanjar.weixin.common.bean.menu.WxMenuButton;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import org.testng.*;
import org.testng.annotations.*;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
/**
* 测试菜单

View File

@ -3,9 +3,9 @@ package me.chanjar.weixin.cp.bean;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
import me.chanjar.weixin.cp.bean.article.NewArticle;
import org.testng.annotations.*;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
import static org.testng.Assert.assertEquals;
@Test
public class WxCpMessageTest {

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.cp.bean;
import me.chanjar.weixin.common.api.WxConsts;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Test;
@Test
public class WxCpXmlMessageTest {

View File

@ -1,7 +1,7 @@
package me.chanjar.weixin.cp.bean;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Test;
@Test
public class WxCpXmlOutImageMessageTest {

View File

@ -1,7 +1,7 @@
package me.chanjar.weixin.cp.bean;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Test;
@Test
public class WxCpXmlOutNewsMessageTest {

View File

@ -1,7 +1,7 @@
package me.chanjar.weixin.cp.bean;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Test;
@Test
public class WxCpXmlOutTextMessageTest {

View File

@ -1,7 +1,7 @@
package me.chanjar.weixin.cp.bean;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Test;
@Test
public class WxCpXmlOutVideoMessageTest {

View File

@ -1,7 +1,7 @@
package me.chanjar.weixin.cp.bean;
import org.testng.*;
import org.testng.annotations.*;
import org.testng.Assert;
import org.testng.annotations.Test;
@Test
public class WxCpXmlOutVoiceMessageTest {

View File

@ -5,7 +5,7 @@ import me.chanjar.weixin.cp.api.WxCpConfigStorage;
import me.chanjar.weixin.cp.api.WxCpMessageHandler;
import me.chanjar.weixin.cp.api.WxCpMessageRouter;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.api.impl.apache.WxCpServiceImpl;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
import me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage;

View File

@ -3,9 +3,9 @@
<suite name="Weixin-java-tool-suite" verbose="1">
<test name="API_Test">
<classes>
<class name="me.chanjar.weixin.cp.api.impl.apache.WxCpBusyRetryTest"/>
<class name="me.chanjar.weixin.cp.api.impl.apache.WxCpBaseAPITest"/>
<class name="me.chanjar.weixin.cp.api.impl.apache.WxCpMessageAPITest"/>
<class name="me.chanjar.weixin.cp.api.WxCpBusyRetryTest"/>
<class name="me.chanjar.weixin.cp.api.WxCpBaseAPITest"/>
<class name="me.chanjar.weixin.cp.api.WxCpMessageAPITest"/>
<class name="me.chanjar.weixin.cp.api.WxMenuAPITest"/>
<class name="me.chanjar.weixin.cp.api.WxCpDepartAPITest"/>
<class name="me.chanjar.weixin.cp.api.WxCpMediaAPITest"/>