From c5c86286688a1173e772d533b74b71965fd462d1 Mon Sep 17 00:00:00 2001 From: BinaryWang Date: Tue, 20 Sep 2016 21:03:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E4=B8=8B=E7=B2=89=E4=B8=9D=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 --- .../weixin/mp/api/WxMpUserTagService.java | 15 ++- .../mp/api/impl/WxMpUserTagServiceImpl.java | 26 ++++-- .../weixin/mp/bean/tag/WxTagListUser.java | 92 +++++++++++++++++++ .../api/impl/WxMpUserTagServiceImplTest.java | 21 +++-- 4 files changed, 138 insertions(+), 16 deletions(-) create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java index bcf657fa..128f2cb7 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpUserTagService.java @@ -1,10 +1,11 @@ package me.chanjar.weixin.mp.api; -import java.util.List; - import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.mp.bean.tag.WxTagListUser; import me.chanjar.weixin.mp.bean.tag.WxUserTag; +import java.util.List; + /** * 用户标签管理相关接口 * Created by Binary Wang on 2016/9/2. @@ -55,4 +56,14 @@ public interface WxMpUserTagService { */ Boolean tagDelete(Integer id) throws WxErrorException; + /** + *
+   * 获取标签下粉丝列表
+   * 详情请见:用户标签管理
+   * 接口url格式: https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=ACCESS_TOKEN
+   * 
+ * + */ + WxTagListUser tagListUser(Integer tagId, String nextOpenid) throws WxErrorException; + } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java index c2167556..bb6daf63 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImpl.java @@ -1,17 +1,17 @@ package me.chanjar.weixin.mp.api.impl; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.gson.JsonObject; - import me.chanjar.weixin.common.bean.result.WxError; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpUserTagService; +import me.chanjar.weixin.mp.bean.tag.WxTagListUser; import me.chanjar.weixin.mp.bean.tag.WxUserTag; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; /** * @@ -92,4 +92,18 @@ public class WxMpUserTagServiceImpl implements WxMpUserTagService { throw new WxErrorException(wxError); } + + @Override + public WxTagListUser tagListUser(Integer tagId, String nextOpenid) throws WxErrorException { + String url = "https://api.weixin.qq.com/cgi-bin/user/tag/get"; + + JsonObject json = new JsonObject(); + json.addProperty("tagid", tagId); + json.addProperty("next_openid", StringUtils.trimToEmpty(nextOpenid)); + + String responseContent = this.wxMpService.post(url, json.toString()); + this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, json.toString(), + responseContent); + return WxTagListUser.fromJson(responseContent); + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java new file mode 100644 index 00000000..0ba48edc --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/tag/WxTagListUser.java @@ -0,0 +1,92 @@ +package me.chanjar.weixin.mp.bean.tag; + +import com.google.gson.annotations.SerializedName; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.List; + +/** + * 获取标签下粉丝列表的结果对象 + * @author binarywang(https://github.com/binarywang) + * Created by Binary Wang on 2016-09-19. + */ +public class WxTagListUser { + + public static WxTagListUser fromJson(String json) { + return WxMpGsonBuilder.create().fromJson(json,WxTagListUser.class); + } + + public String toJson() { + return WxMpGsonBuilder.create().toJson(this); + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + } + + /** + *"count":2,这次获取的粉丝数量 + */ + @SerializedName("count") + private Integer count; + + /** + *"data" 粉丝列表 + */ + @SerializedName("data") + private WxTagListUserData data; + + /** + *"next_openid" 拉取列表最后一个用户的openid + */ + @SerializedName("next_openid") + private String nextOpenid; + + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } + + public WxTagListUserData getData() { + return data; + } + + public void setData(WxTagListUserData data) { + this.data = data; + } + + public String getNextOpenid() { + return nextOpenid; + } + + public void setNextOpenid(String nextOpenid) { + this.nextOpenid = nextOpenid; + } + + public static class WxTagListUserData { + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); + } + + /** + * openid 列表 + */ + @SerializedName("openid") + private List openidList; + + public List getOpenidList() { + return openidList; + } + + public void setOpenidList(List openidList) { + this.openidList = openidList; + } + } +} diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java index 6471b88c..60ab3780 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpUserTagServiceImplTest.java @@ -1,15 +1,14 @@ package me.chanjar.weixin.mp.api.impl; -import java.util.List; - +import com.google.inject.Inject; +import me.chanjar.weixin.mp.api.ApiTestModule; +import me.chanjar.weixin.mp.bean.tag.WxTagListUser; +import me.chanjar.weixin.mp.bean.tag.WxUserTag; import org.testng.Assert; import org.testng.annotations.Guice; import org.testng.annotations.Test; -import com.google.inject.Inject; - -import me.chanjar.weixin.mp.api.ApiTestModule; -import me.chanjar.weixin.mp.bean.tag.WxUserTag; +import java.util.List; /** * @@ -22,7 +21,7 @@ public class WxMpUserTagServiceImplTest { @Inject protected WxMpServiceImpl wxService; - private Integer tagId; + private Integer tagId = 2; @Test public void testTagCreate() throws Exception { @@ -55,4 +54,10 @@ public class WxMpUserTagServiceImplTest { Assert.assertTrue(res); } -} \ No newline at end of file + @Test + public void testTagListUser() throws Exception { + WxTagListUser res = this.wxService.getUserTagService().tagListUser(this.tagId, null); + System.out.println(res); + Assert.assertNotNull(res); + } +}