diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOAuth2Service.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOAuth2Service.java index 331248953..3f22da958 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOAuth2Service.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOAuth2Service.java @@ -1,6 +1,7 @@ package me.chanjar.weixin.cp.api; import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.cp.bean.WxCpUserDetail; /** *
@@ -64,4 +65,19 @@ public interface WxCpOAuth2Service {
*/
String[] getUserInfo(Integer agentId, String code) throws WxErrorException;
+ /**
+ *
+ * 使用user_ticket获取成员详情.
+ *
+ * 文档地址:https://work.weixin.qq.com/api/doc#10028/%E4%BD%BF%E7%94%A8user_ticket%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E8%AF%A6%E6%83%85
+ * 请求方式:POST(HTTPS)
+ * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token=ACCESS_TOKEN
+ *
+ * 权限说明:
+ * 需要有对应应用的使用权限,且成员必须在授权应用的可见范围内。
+ *
+ *
+ * @param userTicket 成员票据
+ */
+ WxCpUserDetail getUserDetail(String userTicket) throws WxErrorException;
}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java
index 123d75072..7638fcaa7 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java
@@ -1,5 +1,6 @@
package me.chanjar.weixin.cp.api.impl;
+import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@@ -8,6 +9,7 @@ import me.chanjar.weixin.common.util.http.URIUtil;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.cp.api.WxCpOAuth2Service;
import me.chanjar.weixin.cp.api.WxCpService;
+import me.chanjar.weixin.cp.bean.WxCpUserDetail;
/**
*
@@ -52,9 +54,8 @@ public class WxCpOAuth2ServiceImpl implements WxCpOAuth2Service {
@Override
public String[] getUserInfo(Integer agentId, String code) throws WxErrorException {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?"
- + "code=" + code
- + "&agentid=" + agentId;
+ String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?code=%s&agentid=%d",
+ code, agentId);
String responseText = this.mainService.get(url, null);
JsonElement je = new JsonParser().parse(responseText);
JsonObject jo = je.getAsJsonObject();
@@ -63,4 +64,12 @@ public class WxCpOAuth2ServiceImpl implements WxCpOAuth2Service {
GsonHelper.getString(jo, "OpenId")};
}
+ @Override
+ public WxCpUserDetail getUserDetail(String userTicket) throws WxErrorException {
+ String url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail";
+ JsonObject param = new JsonObject();
+ param.addProperty("user_ticket", userTicket);
+ String responseText = this.mainService.post(url, param.toString());
+ return new GsonBuilder().create().fromJson(responseText, WxCpUserDetail.class);
+ }
}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/Gender.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/Gender.java
new file mode 100644
index 000000000..2b6e26efd
--- /dev/null
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/Gender.java
@@ -0,0 +1,47 @@
+package me.chanjar.weixin.cp.bean;
+
+/**
+ *
+ * 性别枚举
+ * Created by BinaryWang on 2018/4/22.
+ *
+ *
+ * @author Binary Wang
+ */
+public enum Gender {
+ /**
+ * 男
+ */
+ MALE("男", "1"),
+ /**
+ * 女
+ */
+ FEMALE("女", "2");
+
+ private String genderName;
+ private String code;
+
+ Gender(String genderName, String code) {
+ this.genderName = genderName;
+ this.code = code;
+ }
+
+ public String getGenderName() {
+ return this.genderName;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public static Gender fromCode(String code) {
+ if ("1".equals(code)) {
+ return Gender.MALE;
+ }
+ if ("2".equals(code)) {
+ return Gender.FEMALE;
+ }
+
+ return null;
+ }
+}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
index 0acbb49b5..90ec64800 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
@@ -15,44 +15,6 @@ import java.util.List;
*/
@Data
public class WxCpUser implements Serializable {
- public enum Gender {
- /**
- * 男
- */
- MALE("男", "1"),
- /**
- * 女
- */
- FEMALE("女", "2");
-
- private String genderName;
- private String code;
-
- Gender(String genderName, String code) {
- this.genderName = genderName;
- this.code = code;
- }
-
- public String getGenderName() {
- return this.genderName;
- }
-
- public String getCode() {
- return this.code;
- }
-
- public static Gender fromCode(String code) {
- if ("1".equals(code)) {
- return Gender.MALE;
- }
- if ("2".equals(code)) {
- return Gender.FEMALE;
- }
-
- return null;
- }
- }
-
private static final long serialVersionUID = -5696099236344075582L;
private String userId;
private String name;
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserDetail.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserDetail.java
new file mode 100644
index 000000000..d86722a07
--- /dev/null
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserDetail.java
@@ -0,0 +1,24 @@
+package me.chanjar.weixin.cp.bean;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+
+/**
+ *
+ * 使用user_ticket获取成员详情接口返回类.
+ * Created by BinaryWang on 2018/4/22.
+ *
+ *
+ * @author Binary Wang
+ */
+@Data
+public class WxCpUserDetail {
+ @SerializedName("userid")
+ private String userId;
+ private String name;
+ private String mobile;
+ private String gender;
+ private String email;
+ @SerializedName("qr_code")
+ private String qrCode;
+}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java
index 6531d07ba..65769d619 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java
@@ -10,6 +10,7 @@ package me.chanjar.weixin.cp.util.json;
import com.google.gson.*;
import me.chanjar.weixin.common.util.json.GsonHelper;
+import me.chanjar.weixin.cp.bean.Gender;
import me.chanjar.weixin.cp.bean.WxCpUser;
import java.lang.reflect.Type;
@@ -39,7 +40,7 @@ public class WxCpUserGsonAdapter implements JsonDeserializer, JsonSeri
user.setName(GsonHelper.getString(o, "name"));
user.setPosition(GsonHelper.getString(o, "position"));
user.setMobile(GsonHelper.getString(o, "mobile"));
- user.setGender(WxCpUser.Gender.fromCode(GsonHelper.getString(o, "gender")));
+ user.setGender(Gender.fromCode(GsonHelper.getString(o, "gender")));
user.setEmail(GsonHelper.getString(o, "email"));
user.setAvatar(GsonHelper.getString(o, "avatar"));
user.setStatus(GsonHelper.getInteger(o, "status"));
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java
index 522d169cf..9a19564cd 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpDepartmentServiceImplTest.java
@@ -56,7 +56,7 @@ public class WxCpDepartmentServiceImplTest {
}
}
- @Test(dependsOnMethods = {"testListAll", "testCreate"})
+ @Test(dependsOnMethods = {"testList", "testCreate"})
public void testUpdate() throws Exception {
System.out.println("=================更新部门");
this.depart.setName("子部门改名" + System.currentTimeMillis());
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImplTest.java
new file mode 100644
index 000000000..b5dad4711
--- /dev/null
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImplTest.java
@@ -0,0 +1,33 @@
+package me.chanjar.weixin.cp.api.impl;
+
+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.WxCpService;
+import me.chanjar.weixin.cp.bean.WxCpUserDetail;
+import org.testng.annotations.Guice;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * Created by BinaryWang on 2018/4/22.
+ *
+ *
+ * @author Binary Wang
+ */
+@Guice(modules = ApiTestModule.class)
+public class WxCpOAuth2ServiceImplTest {
+ @Inject
+ private WxCpService wxService;
+
+ @Test
+ public void testGetUserDetail() throws WxErrorException {
+ WxCpUserDetail userDetail = this.wxService.getOauth2Service().getUserDetail("b");
+ System.out.println(userDetail);
+ }
+
+ @Test
+ public void testGetUserInfo() throws WxErrorException {
+ this.wxService.getOauth2Service().getUserInfo("abc");
+ }
+}
diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java
index bbb5dcab2..306fd829a 100644
--- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java
+++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java
@@ -3,6 +3,7 @@ package me.chanjar.weixin.cp.api.impl;
import com.google.inject.Inject;
import me.chanjar.weixin.cp.api.ApiTestModule;
import me.chanjar.weixin.cp.api.WxCpService;
+import me.chanjar.weixin.cp.bean.Gender;
import me.chanjar.weixin.cp.bean.WxCpUser;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -40,7 +41,7 @@ public class WxCpUserServiceImplTest {
user.setName("Some Woman");
user.setDepartIds(new Integer[]{2});
user.setEmail("none@none.com");
- user.setGender(WxCpUser.Gender.FEMALE);
+ user.setGender(Gender.FEMALE);
user.setMobile("13560084979");
user.setPosition("woman");
user.setTelephone("3300393");