From 18e3f7502831208ece1e79d0ddeeaea6f2b79e1e Mon Sep 17 00:00:00 2001 From: RobinGao <315789501@qq.com> Date: Fri, 21 Jun 2019 13:57:13 +0800 Subject: [PATCH] =?UTF-8?q?#1081=20=E5=BC=80=E6=94=BE=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=8E=88=E6=9D=83=E6=96=B9=E5=88=97=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../open/api/WxOpenComponentService.java | 11 +++-- .../api/impl/WxOpenComponentServiceImpl.java | 20 +++++++-- .../result/WxOpenAuthorizerListResult.java | 15 +++++++ ...WxOpenAuthorizerListResultGsonAdapter.java | 41 +++++++++++++++++++ .../open/util/json/WxOpenGsonBuilder.java | 7 +--- 5 files changed, 81 insertions(+), 13 deletions(-) create mode 100644 weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerListResult.java create mode 100644 weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerListResultGsonAdapter.java diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java index 4b2ddbc4..2beec638 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java @@ -7,10 +7,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import me.chanjar.weixin.open.bean.WxOpenCreateResult; import me.chanjar.weixin.open.bean.WxOpenMaCodeTemplate; import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; -import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; -import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerOptionResult; -import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; -import me.chanjar.weixin.open.bean.result.WxOpenResult; +import me.chanjar.weixin.open.bean.result.*; import java.util.List; @@ -25,6 +22,7 @@ public interface WxOpenComponentService { String API_GET_AUTHORIZER_INFO_URL = "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info"; String API_GET_AUTHORIZER_OPTION_URL = "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_option"; String API_SET_AUTHORIZER_OPTION_URL = "https://api.weixin.qq.com/cgi-bin/component/api_set_authorizer_option"; + String API_GET_AUTHORIZER_LIST = "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_list?component_access_token=%s"; String COMPONENT_LOGIN_PAGE_URL = "https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=%s&pre_auth_code=%s&redirect_uri=%s&auth_type=xxx&biz_appid=xxx"; @@ -126,6 +124,11 @@ public interface WxOpenComponentService { */ WxOpenAuthorizerOptionResult getAuthorizerOption(String authorizerAppid, String optionName) throws WxErrorException; + /** + * 获取所有授权方列表 + */ + WxOpenAuthorizerListResult getAuthorizerList(int begin, int len) throws WxErrorException; + /** * 设置授权方的选项信息 */ diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java index 319e12ff..5b71c783 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java @@ -18,10 +18,7 @@ import me.chanjar.weixin.open.bean.WxOpenCreateResult; import me.chanjar.weixin.open.bean.WxOpenMaCodeTemplate; import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizationInfo; import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; -import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; -import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerOptionResult; -import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; -import me.chanjar.weixin.open.bean.result.WxOpenResult; +import me.chanjar.weixin.open.bean.result.*; import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -304,6 +301,21 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenAuthorizerInfoResult.class); } + @Override + public WxOpenAuthorizerListResult getAuthorizerList(int begin, int len) throws WxErrorException { + + String url = String.format(API_GET_AUTHORIZER_LIST, getComponentAccessToken(false)); + begin = begin < 0 ? 0 : begin; + len = len == 0 ? 10 : len; + + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("component_appid", getWxOpenConfigStorage().getComponentAppId()); + jsonObject.addProperty("offset", begin); + jsonObject.addProperty("count", len); + String responseContent = post(url, jsonObject.toString()); + return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenAuthorizerListResult.class); + } + @Override public WxOpenAuthorizerOptionResult getAuthorizerOption(String authorizerAppid, String optionName) throws WxErrorException { JsonObject jsonObject = new JsonObject(); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerListResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerListResult.java new file mode 100644 index 00000000..afe9ea94 --- /dev/null +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerListResult.java @@ -0,0 +1,15 @@ +package me.chanjar.weixin.open.bean.result; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author robgao + */ +@Data +public class WxOpenAuthorizerListResult { + private int totalCount; + private List> list; +} diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerListResultGsonAdapter.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerListResultGsonAdapter.java new file mode 100644 index 00000000..38faf2ff --- /dev/null +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerListResultGsonAdapter.java @@ -0,0 +1,41 @@ +package me.chanjar.weixin.open.util.json; + +import com.google.gson.*; +import me.chanjar.weixin.common.util.json.GsonHelper; +import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerListResult; + +import java.lang.reflect.Type; +import java.util.*; + +/** + * @author robgao + * @Email 315789501@qq.com + */ +public class WxOpenAuthorizerListResultGsonAdapter implements JsonDeserializer { + + private static final String AUTHORIZER_APPID="authorizer_appid"; + private static final String REFRESH_TOKEN="refresh_token"; + private static final String AUTH_TIME="auth_time"; + @Override + public WxOpenAuthorizerListResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + JsonObject jsonObject = jsonElement.getAsJsonObject(); + + WxOpenAuthorizerListResult wxOpenAuthorizerListResult= new WxOpenAuthorizerListResult(); + wxOpenAuthorizerListResult.setTotalCount(GsonHelper.getInteger(jsonObject, "total_count").intValue()); + + List> list = new ArrayList<>(); + Iterator jsonElementIterator = jsonObject.getAsJsonArray("list").iterator(); + + while(jsonElementIterator.hasNext()){ + JsonObject authorizer = jsonElementIterator.next().getAsJsonObject(); + Map authorizerMap = new HashMap<>(10); + + authorizerMap.put(AUTHORIZER_APPID, GsonHelper.getString(authorizer,AUTHORIZER_APPID)); + authorizerMap.put(REFRESH_TOKEN, GsonHelper.getString(authorizer,REFRESH_TOKEN)); + authorizerMap.put(AUTH_TIME, GsonHelper.getString(authorizer,AUTH_TIME)); + list.add(authorizerMap); + } + wxOpenAuthorizerListResult.setList(list); + return wxOpenAuthorizerListResult; + } +} diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java index 10c2911d..f28178f6 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenGsonBuilder.java @@ -6,10 +6,7 @@ import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken; import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken; import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizationInfo; import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizerInfo; -import me.chanjar.weixin.open.bean.result.WxFastMaAccountBasicInfoResult; -import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; -import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerOptionResult; -import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; +import me.chanjar.weixin.open.bean.result.*; /** * @author 007 @@ -27,8 +24,8 @@ public class WxOpenGsonBuilder { INSTANCE.registerTypeAdapter(WxOpenQueryAuthResult.class, new WxOpenQueryAuthResultGsonAdapter()); INSTANCE.registerTypeAdapter(WxOpenAuthorizerInfoResult.class, new WxOpenAuthorizerInfoResultGsonAdapter()); INSTANCE.registerTypeAdapter(WxOpenAuthorizerOptionResult.class, new WxOpenAuthorizerOptionResultGsonAdapter()); - INSTANCE.registerTypeAdapter(WxFastMaAccountBasicInfoResult.class, new WxFastMaAccountBasicInfoGsonAdapter ()); + INSTANCE.registerTypeAdapter(WxOpenAuthorizerListResult.class, new WxOpenAuthorizerListResultGsonAdapter ()); }