From c80e77c04785f4923723b888febce80088768f3e Mon Sep 17 00:00:00 2001 From: huangxm129 <40385667+huangxm129@users.noreply.github.com> Date: Tue, 17 Nov 2020 09:47:45 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20#1873=20=E3=80=90=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=E7=AC=AC=E4=B8=89=E6=96=B9=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=A2=9E=E5=8A=A0=E7=BD=91=E9=A1=B5=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=99=BB=E9=99=86=E8=8E=B7=E5=8F=96=E8=AE=BF=E9=97=AE=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=BA=AB=E4=BB=BD=E5=92=8C=E8=8E=B7=E5=8F=96=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E7=94=A8=E6=88=B7=E6=95=8F=E6=84=9F=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/cp/bean/WxCpTpUserDetail.java | 58 ++++++++++++++++++ .../weixin/cp/bean/WxCpTpUserInfo.java | 61 +++++++++++++++++++ .../weixin/cp/constant/WxCpApiPathConsts.java | 2 + .../weixin/cp/tp/service/WxCpTpService.java | 25 ++++++-- .../service/impl/BaseWxCpTpServiceImpl.java | 15 +++++ 5 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserDetail.java create mode 100644 weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserInfo.java diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserDetail.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserDetail.java new file mode 100644 index 000000000..440e7b4df --- /dev/null +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserDetail.java @@ -0,0 +1,58 @@ +package me.chanjar.weixin.cp.bean; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; + +/** + * + * @author huangxiaoming + */ +@Data +public class WxCpTpUserDetail extends WxCpBaseResp { + + private static final long serialVersionUID = -5028321625140879571L; + /** + * 用户所属企业的corpid + */ + @SerializedName("corpid") + private String corpId; + + /** + * 成员UserID + */ + @SerializedName("userid") + private String userId; + + /** + * 成员姓名 + */ + @SerializedName("name") + private String name; + + /** + * 性别。0表示未定义,1表示男性,2表示女性 + */ + @SerializedName("gender") + private String gender; + + /** + * 头像url。仅在用户同意snsapi_privateinfo授权时返回 + */ + @SerializedName("avatar") + private String avatar; + + /** + * 员工个人二维码(扫描可添加为外部联系人),仅在用户同意snsapi_privateinfo授权时返回 + */ + @SerializedName("qr_code") + private String qrCode; + + public static WxCpTpUserDetail fromJson(String json) { + return WxCpGsonBuilder.create().fromJson(json, WxCpTpUserDetail.class); + } + + public String toJson() { + return WxCpGsonBuilder.create().toJson(this); + } +} diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserInfo.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserInfo.java new file mode 100644 index 000000000..6739082fa --- /dev/null +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpTpUserInfo.java @@ -0,0 +1,61 @@ +package me.chanjar.weixin.cp.bean; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; + +/** + * @author huangxiaoming + */ +@Data +public class WxCpTpUserInfo extends WxCpBaseResp { + + private static final long serialVersionUID = -5028321625140879571L; + + /** + * 用户所属企业的corpid + */ + @SerializedName("CorpId") + private String corpId; + + /** + * 用户在企业内的UserID,如果该企业与第三方应用有授权关系时,返回明文UserId,否则返回密文UserId + */ + @SerializedName("UserId") + private String userId; + + /** + * 手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响) + */ + @SerializedName("DeviceId") + private String deviceId; + + /** + * 成员票据,最大为512字节。 + * scope为snsapi_userinfo或snsapi_privateinfo,且用户在应用可见范围之内时返回此参数。 + * 后续利用该参数可以获取用户信息或敏感信息,参见:https://work.weixin.qq.com/api/doc/90001/90143/91122 + */ + @SerializedName("user_ticket") + private String userTicket; + + /** + * user_ticket的有效时间(秒),随user_ticket一起返回 + */ + @SerializedName("expires_in") + private String expiresIn; + + /** + * 全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的open_userid是相同的,最多64个字节。仅第三方应用可获取 + */ + @SerializedName("open_userid") + private String openUserId; + + public static WxCpTpUserInfo fromJson(String json) { + return WxCpGsonBuilder.create().fromJson(json, WxCpTpUserInfo.class); + } + + public String toJson() { + return WxCpGsonBuilder.create().toJson(this); + } + +} diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java index 00d88940f..f1e1902e0 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java @@ -142,6 +142,8 @@ public final class WxCpApiPathConsts { public static final String GET_AUTH_INFO = "/cgi-bin/service/get_auth_info"; public static final String GET_AUTH_CORP_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket"; public static final String GET_SUITE_JSAPI_TICKET = "/cgi-bin/ticket/get"; + public static final String GET_USERINFO3RD = "/cgi-bin/service/getuserinfo3rd"; + public static final String GET_USERDETAIL3RD = "/cgi-bin/service/getuserdetail3rd"; } @UtilityClass diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java index 8e8cbd6fa..9bc3684ef 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java @@ -6,10 +6,7 @@ import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; import me.chanjar.weixin.common.util.http.RequestExecutor; import me.chanjar.weixin.common.util.http.RequestHttp; -import me.chanjar.weixin.cp.bean.WxCpMaJsCode2SessionResult; -import me.chanjar.weixin.cp.bean.WxCpTpAuthInfo; -import me.chanjar.weixin.cp.bean.WxCpTpCorp; -import me.chanjar.weixin.cp.bean.WxCpTpPermanentCodeInfo; +import me.chanjar.weixin.cp.bean.*; import me.chanjar.weixin.cp.config.WxCpTpConfigStorage; /** @@ -266,4 +263,24 @@ public interface WxCpTpService { * @return WxSessionManager session manager */ WxSessionManager getSessionManager(); + + /** + *
+ * 获取访问用户身份 + *+ * + * @param code + * @return + */ + WxCpTpUserInfo getUserInfo3rd(String code) throws WxErrorException; + + /** + *
+ * 获取访问用户敏感信息 + *+ * + * @param userTicket + * @return + */ + WxCpTpUserDetail getUserDetail3rd(String userTicket) throws WxErrorException; } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java index 6c2399067..c3bbe95c6 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java @@ -342,4 +342,19 @@ public abstract class BaseWxCpTpServiceImpl